Financial Services Industry Signals

Companies offering banking, asset management, lending, investment, and other financial products and services to individuals and institutions.

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

Across 127 companies in Financial Services we detected 2870 areas, 468 services, 290 tools, and 265 standards — producing an aggregate signal score of 37578.

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

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

Financial Services Industry Technology Investment Report

Prepared by Naftiko May 2026

Executive Summary

The Financial Services industry is the largest and most analytically rich sector in the Naftiko dataset, encompassing 31 companies across banking, asset management, insurance, investment banking, wealth management, consumer lending, and brokerage. Across all 11 scoring layers, the sector reveals a bifurcated maturity profile: a cluster of global leaders — Scotiabank, Citi, Morgan Stanley, Allianz, and HSBC — who score consistently high across infrastructure, governance, and AI readiness dimensions, and a broader mid-tier cohort whose scores taper significantly, indicating that technology investment advantages in financial services are highly concentrated rather than broadly distributed. The most dominant scoring areas across the sector are Services (Scotiabank: 323), Data (Citi: 166), Cloud (Scotiabank: 155), Security (Scotiabank: 98), Operations (Scotiabank: 88), and Automation (Scotiabank: 86), painting a picture of an industry that has invested heavily in operational infrastructure, data management, and security while still developing the AI-specific governance and specialization capabilities that will define the next generation of competitive differentiation.

The sector’s most significant gaps cluster in the areas requiring deliberate organizational investment: Domain Specialization reaches just 2 at the industry leader (Allianz), Privacy & Data Rights maxes out at 6 (HSBC), Regulatory Posture tops at 14 (HSBC), AI FinOps reaches only 11 (Allianz), and Testing & Quality tops at 30 (Scotiabank) — a score that sounds reasonable until measured against the regulatory and fiduciary accountability standards that financial services AI deployments must meet. The industry faces a distinctive challenge: it operates under the world’s most demanding regulatory oversight, making governance, compliance, and explainability not optional investments but existential requirements, yet the governance-specific scoring areas remain underdeveloped relative to the infrastructure investment the sector has made. The organizations that close the gap between their infrastructure maturity and their governance sophistication will establish the AI leadership positions that define financial services competition through the decade.


Layer 1: Foundational Layer

The Foundational Layer evaluates how Financial Services organizations invest in core AI and cloud capabilities, with the sector scoring highest in Cloud.

Artificial Intelligence — Top Company: Citi (87), Morgan Stanley (82)

Citi leads the sector in Artificial Intelligence with a score of 87, followed closely by Morgan Stanley at 82 — the narrowest gap between the top two companies in any scoring area, signaling that AI investment at the frontier of financial services is a genuinely competitive race rather than a single dominant player. Allianz rounds out the top three at 80, reflecting the insurance giant’s systematic approach to AI-driven underwriting and claims automation. The scores in the 50–87 range across the top 20 companies indicate widespread AI adoption across the sector, though the tail falls off significantly: companies ranking 15th and below score below 40, confirming that AI investment is not evenly distributed. The toolchain evidence points to broad engagement with both cloud AI services and on-premises ML infrastructure across the leading companies.

Cloud — Top Company: Scotiabank (155), Citi (149)

Scotiabank leads the Financial Services sector in Cloud with a score of 155, followed by Citi at 149 — scores that are among the highest in the Naftiko dataset across all industries and reflect the depth of cloud-native transformation at both institutions. Allianz (147) and Morgan Stanley (144) complete a dense top tier. The concentration of cloud investment at a Canadian bank is notable: Scotiabank’s aggressive cloud adoption reflects a strategic decision to use cloud infrastructure as the competitive foundation for digital banking transformation, outpacing several larger peers in cloud maturity. The scores in the 63–155 range across the top 20 companies indicate broadly elevated cloud investment across the sector, with the lowest performers in the cohort still maintaining meaningful cloud infrastructure.

Open-Source — Top Company: Citi (51), Allianz (50)

Citi and Allianz are nearly tied at the top of Open-Source adoption with scores of 51 and 50, followed by Scotiabank at 50 — a three-way near-tie that signals convergence on open-source tooling across the sector’s leading firms. Open-source adoption in financial services spans infrastructure (Kubernetes, Terraform, Linux), data engineering (Apache Kafka, Apache Spark), ML frameworks (PyTorch, TensorFlow), and increasingly, open-source AI models that provide cost-effective alternatives to commercial model APIs. The sector’s open-source scores in the 25–51 range indicate healthy but not leading-edge adoption compared to technology-sector peers, with room to expand particularly in open-source AI model evaluation and deployment tooling.

Languages — Top Company: Citi (53), Morgan Stanley (53)

Citi and Morgan Stanley share the top Languages score at 53, with Allianz close behind at 51. Financial services firms historically maintained deep Java and C++ codebases for trading systems and transaction processing, while modern digital banking transformation has introduced Python, Go, and TypeScript across the stack. The sector’s language scores in the 29–53 range reflect this polyglot reality: organizations managing both legacy transaction infrastructure and modern AI-driven applications require a broad and continuously evolving language portfolio.

Code — Top Company: Scotiabank (52), Citi (49)

Scotiabank leads Code at 52 with Citi at 49, followed by Morgan Stanley at 49 — scores that reflect strong developer tooling investment at the sector’s most advanced technology organizations. The Code dimension captures the depth of investment in version control, CI/CD, code quality, and developer productivity tooling, and Scotiabank’s leadership in this area is consistent with its broader technology maturity profile. The sector’s scores in the 22–52 range show meaningful dispersion, with mid-tier institutions maintaining functional but not advanced developer tooling practices.


Layer 2: Retrieval & Grounding

The Retrieval & Grounding layer captures how Financial Services organizations build the data infrastructure required to ground AI outputs in accurate, retrievable context, with the sector scoring highest in Data.

Data — Top Company: Citi (166), Scotiabank (154)

Citi’s Data score of 166 is one of the highest single-dimension scores in the Naftiko dataset across all industries and reflects the extraordinary depth of data infrastructure investment at one of the world’s largest universal banks. Scotiabank follows at 154, with Morgan Stanley at 151 — scores that collectively signal that the top tier of financial services has made data management a core strategic capability rather than a supporting function. The sector’s data infrastructure spans streaming ingestion (Apache Kafka), large-scale processing (Apache Spark), relational and in-memory storage (PostgreSQL, Redis), and analytical frameworks (Pandas, PyTorch), with the leading firms managing data flows across trading, retail banking, risk management, regulatory reporting, and customer analytics simultaneously. The concentration of elite data scores at the top of the distribution — with the 20th-ranked company scoring 65, less than 40% of the leader’s score — confirms that data infrastructure investment creates durable competitive advantages that are difficult to close.

Databases — Top Company: Allianz (45), Citi (45)

Allianz and Citi share the top Databases score at 45, followed by Scotiabank at 43. Insurance companies like Allianz require exceptionally deep database investment to manage actuarial tables, policy data, claims histories, and risk models across global operations — which explains Allianz’s co-leadership in this dimension alongside Citi. The sector’s database scores in the 18–45 range reflect meaningful dispersion, with the most advanced firms maintaining diverse database portfolios that include relational, time-series, graph, and increasingly vector databases for AI semantic search applications.

Virtualization — Top Company: Morgan Stanley (28), Allianz (27)

Morgan Stanley leads Virtualization with a score of 28, followed by Allianz at 27 and Scotiabank at 27. The sector’s virtualization scores in the 12–28 range reflect a sector that has largely completed the migration from hardware-centric to virtualized infrastructure, with containerization now displacing traditional VMs for the majority of new workloads. Morgan Stanley’s leadership in this dimension is consistent with its technology-forward investment banking culture and the demands of high-frequency trading infrastructure that requires precise workload isolation and resource management.

Specifications — Top Company: Morgan Stanley (17), Barclays (17)

Morgan Stanley and Barclays share the top Specifications score at 17, the only Barclays category leadership in the dataset. For investment banks whose competitive advantage depends on reliable API connectivity with market data providers, trading platforms, and institutional clients, formal API specification practices — OpenAPI, AsyncAPI, FIX protocol documentation — are a business necessity. The sector’s scores in the 5–17 range indicate that specification maturity varies significantly across financial services sub-sectors, with investment banking leading and retail banking trailing in API governance discipline.


Layer 3: Customization & Adaptation

The Customization & Adaptation layer measures how organizations are tailoring AI models and data pipelines to their specific operational context, with the sector scoring highest in Model Registry & Versioning.

Data Pipelines — Top Company: Citi (18), Blackrock (17)

Citi leads Data Pipelines with a score of 18, followed by Blackrock at 17 and Scotiabank at 17. Citi’s leadership in data pipeline investment reflects the bank’s need to orchestrate complex data flows across trading desks, retail branches, risk systems, and regulatory reporting simultaneously. Blackrock’s strong showing in this dimension is consistent with the asset manager’s systematic, technology-driven investment approach: Aladdin, Blackrock’s risk management platform, requires the most sophisticated data pipeline infrastructure of any asset management system in the industry. The sector’s scores in the 7–18 range indicate that pipeline automation is broadly adopted at the top tier but remains underdeveloped at the mid-tier, creating operational fragility in AI workflows at many institutions.

Model Registry & Versioning — Top Company: Allianz (22), Scotiabank (22)

Allianz and Scotiabank tie at the top of Model Registry & Versioning with scores of 22, with multiple companies clustered in the 15–22 range. This relatively high and compressed score distribution suggests that model governance has become table stakes across the financial services sector’s leading firms — driven by regulatory requirements that demand auditability of AI decisions in credit underwriting, fraud detection, and trading algorithms. The investment in model registry and versioning infrastructure enables the reproducibility, rollback capability, and audit trail documentation required by financial regulators globally.

Multimodal Infrastructure — Top Company: Citi (21), Morgan Stanley (21)

Citi and Morgan Stanley tie at 21 in Multimodal Infrastructure, reflecting the investment banking sector’s appetite for AI systems that can process multiple data modalities simultaneously — earnings call transcripts (text), satellite imagery of retail parking lots (image), market data streams (structured time-series), and analyst voice recordings (audio). The sector’s multimodal scores in the 7–21 range confirm that multimodal AI infrastructure investment is concentrated at the largest global institutions with the research budgets and data assets to justify the investment.

Domain Specialization — Top Company: Allianz (2), Charles Schwab (2)

The Domain Specialization scores across the Financial Services sector are uniformly low, with Allianz and Charles Schwab leading at just 2. This near-universal absence of domain specialization investment is one of the most surprising findings in the analysis: financial services is perhaps the richest domain for purpose-built AI models — fraud detection, credit scoring, trading signal generation, regulatory document analysis, claims processing — yet no company in the 31-firm cohort has invested materially in fine-tuning, domain-adapted models, or domain-specific model architectures. The most likely explanation is that financial institutions are currently consuming general-purpose AI model APIs rather than building or fine-tuning proprietary models, a posture that offers speed to market but sacrifices the competitive differentiation that domain-specialized models would provide.


Layer 4: Efficiency & Specialization

The Efficiency & Specialization layer examines how organizations deploy automation, containerization, and platform engineering to operate efficiently at scale, with the sector scoring highest in Operations.

Automation — Top Company: Scotiabank (86), Citi (83)

Scotiabank leads Automation with a score of 86, followed by Citi at 83 — scores that reflect the depth of automation investment at the sector’s most digitally advanced institutions. Financial services automation spans a vast range of use cases: infrastructure provisioning, regulatory report generation, transaction monitoring, customer onboarding, trade settlement, and increasingly, AI workflow automation that chains multiple AI model calls into complex processing pipelines. The sector’s scores in the 34–86 range show pronounced stratification, with the top tier’s automation investment roughly double that of the median institution.

Containers — Top Company: Citi (39), Scotiabank (38)

Citi and Scotiabank lead in Containers with scores of 39 and 38, followed by Morgan Stanley and Allianz in the 35–37 range. The sector’s containerization scores are relatively uniform across the top tier, reflecting an industry that has broadly adopted Kubernetes-based container orchestration as the deployment standard for new applications. Container adoption in financial services has been driven partly by the need for consistent deployment across on-premises, private cloud, and public cloud environments — a common architectural requirement in an industry navigating strict data residency and regulatory constraints.

Platform — Top Company: Citi (44), Allianz (43)

Citi leads Platform with a score of 44, followed closely by Allianz at 43. Platform engineering investment in financial services encompasses internal developer platforms, API management gateways, data platform services, and shared ML infrastructure that allows business units to self-serve AI capabilities without requiring infrastructure expertise. Citi’s and Allianz’s leadership in this dimension reflects their scale: with thousands of engineers and hundreds of business units, platform engineering is the only viable approach to delivering AI capabilities at enterprise speed.

Operations — Top Company: Scotiabank (88), Morgan Stanley (85)

Scotiabank leads Operations with the second-highest single-dimension score in the Financial Services dataset at 88, followed by Morgan Stanley at 85. Operational excellence in financial services — the ability to maintain system availability, manage incident response, and monitor system health across 24/7 trading and banking operations — is a regulatory requirement as much as a competitive objective. The sector’s Operations scores in the 34–88 range reflect the variation in operational maturity between globally systemically important financial institutions with dedicated site reliability engineering organizations and smaller regional institutions with more limited operational infrastructure.


Layer 5: Productivity

The Productivity layer assesses how organizations leverage software tools and services to accelerate developer output and business outcomes, with the sector scoring highest in Services.

Software As A Service (SaaS) — Top Company: Allianz (3), Capital One (2)

SaaS investment across Financial Services is notably nascent, with Allianz leading at just 3 and Capital One at 2. The extremely low SaaS scores across a 31-company cohort reflect financial services’ historical preference for on-premises or private-cloud deployments over SaaS solutions, driven by data sovereignty requirements, regulatory constraints, and the control demands of systemically important institutions. The low SaaS investment scores also reflect a sector that tends to build internal platforms rather than adopting commercial SaaS productivity tools, a posture that preserves control but often sacrifices the velocity and AI-native capabilities that modern SaaS products provide.

Code — Top Company: Scotiabank (52), Citi (49)

Scotiabank and Citi maintain their Code leadership at the Productivity layer, consistent with the Foundational Layer scores. Developer productivity in financial services is a significant operational challenge: large financial institutions manage millions of lines of code across legacy COBOL systems, modern microservices, real-time trading infrastructure, and AI model serving platforms. The organizations with the highest Code productivity scores have invested in the developer tooling and engineering culture required to modernize this complex codebase while continuing to deliver new AI-enabled product features at competitive speed.

Services — Top Company: Scotiabank (323), Allianz (303)

Scotiabank’s Services score of 323 is the highest single-dimension score in the Financial Services dataset and reflects the extraordinary breadth of the bank’s enterprise technology footprint — spanning cloud providers, AI service vendors, security platforms, operational monitoring tools, collaboration systems, and regulatory technology services. Allianz follows at 303, consistent with its large, globally distributed insurance and asset management operations. These scores reflect institutions that have made comprehensive technology ecosystem investments across their entire enterprise, integrating dozens of specialized service providers into a coherent operational platform.


Layer 6: Integration & Interoperability

The Integration & Interoperability layer evaluates the depth and maturity of an organization’s approach to connecting systems, with the sector scoring highest in Integrations.

API — Top Company: Citi (32), Morgan Stanley (32)

Citi and Morgan Stanley tie at the top of API investment with scores of 32, reflecting the investment banks’ dependency on robust, formally managed API connectivity with market data providers, trading venues, custodian banks, and institutional clients. API governance in investment banking is not merely a technology discipline but a revenue-generating capability: firms that offer well-designed, reliable APIs for trade execution, market data access, and post-trade processing attract technology-sophisticated clients who prefer API-first engagement. The sector’s scores in the 8–32 range reflect the gap between investment banks and retail banks in API investment maturity.

Integrations — Top Company: Scotiabank (48), Citi (47)

Scotiabank leads Integrations with a score of 48, followed by Citi at 47, with both scores reflecting the depth of enterprise system integration required at global universal banks operating across retail, commercial, investment banking, and wealth management business lines. Integration complexity in financial services is magnified by legacy system heterogeneity, cross-border data flows, and real-time requirements: a single customer transaction may traverse core banking, fraud detection, regulatory reporting, customer data platforms, and marketing systems, requiring reliable, low-latency integration at every step.

Event-Driven — Top Company: Citi (33), Scotiabank (32)

Citi leads Event-Driven architecture with a score of 33, followed by Scotiabank at 32. Event-driven architecture is particularly well-suited to financial services use cases — trade execution events, payment processing events, fraud alerts, and risk threshold breaches all require immediate, automated responses that event-driven patterns enable more reliably than synchronous request-response integration. The sector’s scores in the 7–33 range suggest that event-driven adoption is advanced at the leading institutions but has not yet become the dominant architectural pattern across the sector.

Patterns — Top Company: Citi (25), Morgan Stanley (23)

Citi leads Patterns with a score of 25, followed by Morgan Stanley at 23. Architectural pattern investment enables the reuse of proven designs for common financial services integration challenges — event sourcing for trade audit trails, CQRS for trading system read/write separation, circuit breakers for third-party service resilience — and the leading firms’ investment in shared architectural patterns is a force multiplier for development velocity.

Specifications — Top Company: Morgan Stanley (17), Barclays (17)

Morgan Stanley and Barclays maintain their Specifications co-leadership at the Integration layer, consistent with the Retrieval & Grounding assessment. Formal API and data specifications in financial services have direct regulatory implications: SWIFT messaging standards, FIX protocol specifications, and increasingly OpenAPI-based regulatory API requirements create a compliance dimension to API specification investment that raises its strategic importance above pure engineering considerations.

Apache — Top Company: Scotiabank (21), Morgan Stanley (18)

Scotiabank leads Apache ecosystem adoption with a score of 21, followed by Morgan Stanley at 18. Apache Kafka and Apache Spark dominate the financial services open-source data infrastructure landscape, with Airflow for pipeline orchestration increasingly present at the sector’s most data-sophisticated institutions. The sector’s Apache scores in the 4–21 range reflect meaningful variation in data infrastructure sophistication across institutions of different sizes and technology maturity levels.

CNCF — Top Company: Allianz (35), HSBC (33)

Allianz leads CNCF adoption with a score of 35, followed by HSBC at 33. CNCF project adoption — spanning Kubernetes, Prometheus, Grafana, Envoy, Consul, Jaeger, and OpenTelemetry — is the most comprehensive indicator of cloud-native infrastructure maturity, and Allianz’s CNCF leadership reflects the insurance giant’s systematic cloud-native transformation strategy. HSBC’s strong CNCF score reflects the bank’s investment in distributed, cloud-native infrastructure to support its global operations across multiple regulatory jurisdictions.


Layer 7: Statefulness

The Statefulness layer evaluates how organizations manage the persistent state and observability of their AI and data systems, with the sector scoring highest in Data.

Observability — Top Company: Citi (59), Scotiabank (51)

Citi leads Observability with a score of 59, followed by Scotiabank at 51. For systemically important financial institutions operating 24/7 trading and banking systems, observability is not merely a DevOps best practice but a regulatory requirement: regulators expect banks to maintain real-time visibility into system health, capacity, and incident status. Citi’s and Scotiabank’s leading observability scores reflect investments in distributed tracing, metrics collection, log aggregation, and alerting infrastructure that provide comprehensive visibility across complex, distributed financial services architectures.

Governance — Top Company: Scotiabank (63), Morgan Stanley (54)

Scotiabank leads Governance with a score of 63, the highest governance score in the Financial Services dataset, followed by Morgan Stanley at 54. Infrastructure-level governance — secrets management, configuration governance, network policy enforcement — is mature at both institutions, but the Governance scores in this layer also capture data governance practices, model governance processes, and access control frameworks that are essential for responsible AI deployment in regulated financial services. Scotiabank’s governance leadership is a material competitive advantage as financial regulators increasingly require demonstrable AI governance for model approval processes.

Security — Top Company: Scotiabank (98), Morgan Stanley (85)

Scotiabank leads Security with a score of 98 — the highest security score in the entire Naftiko dataset across all industries — reflecting the extreme security demands placed on a global banking institution managing billions in daily transactions and operating critical financial infrastructure. Morgan Stanley follows at 85, with the top tier of financial services security scores (69–98) reflecting institutions that have made security a foundational organizational priority. The concentration of security investment at the top of the distribution is partly regulatory: systemically important financial institutions face mandatory cybersecurity investment requirements from central banks and financial regulators globally. The mid-tier financial services institutions scoring in the 36–46 range face a meaningful security capability gap relative to the sector leaders.

Data — Top Company: Citi (166), Scotiabank (154)

Data infrastructure remains the dominant strength of the Financial Services sector at the Statefulness layer, consistent with its leading scores across other layers. The persistent investment in data management reflects financial services’ recognition that proprietary data — transaction histories, behavioral signals, risk indicators, market intelligence — is the fundamental source of competitive advantage in an industry where regulatory constraints limit differentiation through product design alone.


Layer 8: Measurement & Accountability

The Measurement & Accountability layer assesses how organizations measure the performance and business impact of their technology investments, with the sector scoring highest in ROI & Business Metrics.

Testing & Quality — Top Company: Scotiabank (30), Citi (30)

Scotiabank and Citi tie at the top of Testing & Quality with scores of 30, and both scores warrant careful interpretation. While 30 is among the higher testing scores in the Naftiko dataset, it remains modest relative to the regulatory accountability demands of financial services AI deployments. Financial services organizations are required by regulators to validate AI models before deployment, conduct ongoing model performance monitoring, and demonstrate that AI-driven credit, fraud, and trading decisions meet defined quality thresholds. Investment in automated model testing, adversarial robustness evaluation, statistical performance validation, and regression testing frameworks should be a sector-wide priority given the regulatory and reputational consequences of AI model failures.

Observability — Top Company: Citi (59), Scotiabank (51)

Consistent with the Statefulness layer assessment, Citi and Scotiabank maintain their observability leadership in the Measurement & Accountability context. The accountability dimension of observability — maintaining audit trails of AI model decisions, tracking model performance over time, and alerting on model drift — is the capability that connects operational monitoring investment to regulatory compliance and governance outcomes.

Developer Experience — Top Company: Scotiabank (29), Allianz (27)

Scotiabank leads Developer Experience with a score of 29, followed by Allianz at 27. Developer experience investment in financial services reflects the competitive pressure for engineering talent in a sector that increasingly competes with technology companies for skilled software engineers and ML practitioners. Organizations with superior developer experience — self-service infrastructure, rapid onboarding, modern tooling, clear architectural guidance — attract and retain the talent required to accelerate AI development at scale.

ROI & Business Metrics — Top Company: Citi (67), Morgan Stanley (63)

Citi leads ROI & Business Metrics with the highest score in the Measurement & Accountability layer at 67, followed by Morgan Stanley at 63. Financial services’ investment in ROI and business metrics measurement reflects the sector’s data-driven culture and the commercial pressure to demonstrate quantifiable returns on technology investment. For AI specifically, the ability to attribute revenue impact, cost reduction, and risk mitigation outcomes to specific AI models and features is both a governance requirement and a budget justification mechanism. Citi’s and Morgan Stanley’s leading scores in this area suggest that both institutions have built the measurement infrastructure required to manage their AI investment portfolios with financial discipline.


Layer 9: Governance & Risk

The Governance & Risk layer measures how organizations manage the regulatory, ethical, and security risks associated with technology and AI deployment, with the sector scoring highest in Security.

Regulatory Posture — Top Company: HSBC (14), Scotiabank (13)

HSBC leads Regulatory Posture with a score of 14, followed by Scotiabank at 13 — and both scores are notable for their modesty given the regulatory intensity of the financial services industry. HSBC’s regulatory posture leadership is consistent with its status as a globally systemically important bank operating across more regulatory jurisdictions than virtually any other institution on earth, creating strong organizational incentives for regulatory technology investment. The sector’s Regulatory Posture scores in the 7–14 range represent the most significant capability gap relative to industry regulatory demands: financial institutions must comply with Basel III/IV capital requirements, DORA in Europe, SR 11-7 model risk management guidance in the US, GDPR, and a rapidly expanding set of AI-specific regulatory frameworks. The low absolute scores suggest that regulatory compliance management remains highly manual and process-heavy across even the most advanced financial institutions.

AI Review & Approval — Top Company: Allianz (20), Scotiabank (18)

Allianz leads AI Review & Approval with a score of 20, followed by Scotiabank at 18. The distribution of AI Review & Approval scores in the 8–20 range indicates that the sector’s leading firms have invested in formal AI governance processes — model risk committees, algorithmic impact assessments, and deployment approval workflows — but that these practices are not yet uniformly adopted across the industry. As financial regulators increasingly require pre-deployment AI model reviews for credit scoring, fraud detection, and trading algorithms, investment in AI review and approval infrastructure will transition from competitive advantage to regulatory baseline.

Security — Top Company: Scotiabank (98), Morgan Stanley (85)

Scotiabank and Morgan Stanley maintain their Security leadership in the Governance & Risk context, with the sector’s top-tier security scores reflecting institutions whose security investment has been shaped by decades of adversarial pressure from sophisticated financial cybercriminals, nation-state threat actors, and increasingly, AI-enabled attack vectors. The gap between the sector leaders (69–98) and the mid-tier (36–46) represents a meaningful systemic risk concentration in the financial ecosystem: institutions with lower security investment create potential contagion vectors for institutions with which they have counterparty relationships.

Governance — Top Company: Scotiabank (63), Morgan Stanley (54)

Scotiabank’s Governance leadership of 63 versus Morgan Stanley’s 54 is one of the most strategically significant findings in the Financial Services analysis. Governance in this dimension encompasses data governance, model governance, access control, policy enforcement, and audit trail management — the full set of capabilities required for a financial institution to demonstrate to regulators that its AI systems are operating within approved parameters. Scotiabank’s comprehensive governance investment, combined with its leadership in Security, Automation, and Operations, makes it the strongest overall AI governance posture in the Financial Services cohort.

Privacy & Data Rights — Top Company: HSBC (6), Scotiabank (5)

HSBC leads Privacy & Data Rights with a score of 6, and even for the sector leader, this score represents a significant gap relative to the privacy obligations that financial institutions bear. GDPR fines for financial institutions have run into the hundreds of millions of euros; CCPA and emerging US state privacy laws create additional compliance burdens; and AI-specific privacy requirements — including data minimization for AI training, purpose limitation for AI inference, and automated decision-making rights under GDPR Article 22 — are creating a new layer of privacy compliance obligations that financial institutions are not currently equipped to manage at scale. Investment in consent management infrastructure, data rights request automation, privacy-enhancing technologies, and AI-specific privacy impact assessment frameworks is an urgent priority across the sector.


Layer 10: Economics & Sustainability

The Economics & Sustainability layer evaluates how organizations manage the financial, ecosystem, and organizational economics of their technology investments, with the sector scoring highest in Partnerships & Ecosystem.

AI FinOps — Top Company: Allianz (11), Scotiabank (9)

Allianz leads AI FinOps with a score of 11, followed by Scotiabank and AXA at 9. The relatively low AI FinOps scores across a sector with massive technology budgets indicate that financial institutions have not yet established the specific financial management practices required to optimize AI compute spending, track AI-specific cost allocations, and build AI cost transparency into business unit P&L structures. As AI workloads scale from pilot to production at major financial institutions, AI FinOps will become a material cost management discipline — particularly for institutions running large-scale trading AI systems where model inference costs can be significant.

Provider Strategy — Top Company: Allianz (24), Scotiabank (17)

Allianz leads Provider Strategy with a score of 24, followed by Scotiabank at 17. The gap between Allianz and the rest of the cohort in Provider Strategy reflects the insurance giant’s systematic approach to vendor relationship management — maintaining diversified provider portfolios, conducting regular vendor risk assessments, and negotiating enterprise agreements that optimize both cost and capability access. For financial institutions navigating complex AI provider landscapes spanning hyperscalers, specialized AI model providers, and domain-specific fintech AI vendors, formal provider strategy management is a risk management as well as a cost optimization discipline.

Partnerships & Ecosystem — Top Company: Allianz (26), Citi (24)

Allianz leads Partnerships & Ecosystem with a score of 26, followed by Citi at 24, making this layer’s leader consistent with the Economics & Sustainability theme of Allianz dominance. Financial services ecosystem partnerships span a diverse range — fintech integration partners, academic research collaborations, regulatory technology vendors, and AI platform providers — and the leading institutions’ ecosystem investment reflects strategic relationship management that provides early access to emerging capabilities, talent pipelines, and regulatory intelligence. The sector’s scores in the 12–26 range indicate that partnership management maturity varies significantly across the cohort.

Talent & Organizational Design — Top Company: Citi (18), Morgan Stanley (17)

Citi leads Talent & Organizational Design with a score of 18, followed by Morgan Stanley at 17. The investment banking culture at Citi and Morgan Stanley drives above-average talent investment — both companies compete aggressively for quantitative talent, data scientists, and AI researchers. The sector’s Talent & Organizational Design scores in the 8–18 range reflect the broader financial services talent challenge: the industry competes with technology companies for AI talent while maintaining compensation structures and regulatory constraints that reduce attractiveness relative to technology sector employers. Organizational design investment — building AI center of excellence models, embedding AI teams in business units, and establishing AI governance committee structures — is as important as talent acquisition in determining how effectively financial institutions operationalize their AI capabilities.


Layer 11: Storytelling & Entertainment & Theater

The Storytelling & Entertainment & Theater layer captures how organizations communicate their technology vision, build internal alignment, and drive cultural adoption of new capabilities, with the sector scoring highest in Alignment.

Alignment — Top Company: Scotiabank (31), AXA (29)

Scotiabank leads Alignment with a score of 31, followed by AXA at 29 — with a remarkably compressed top tier (20+ for 20 companies) that indicates broad-based investment in organizational alignment tools and communication practices. Financial services organizations have a particular alignment challenge: translating complex technology and AI strategy into narratives comprehensible to business leadership, regulators, and board members who may lack technical backgrounds but must authorize significant AI investments. The sector’s relatively high and uniform Alignment scores suggest that financial institutions have developed effective internal communication practices for technology strategy, likely driven by years of regulatory expectation that boards demonstrate technology literacy.

Standardization — Top Company: Scotiabank (18), Citi (17)

Scotiabank leads Standardization at 18, followed by Citi at 17 and Allianz at 15. Technology standardization is particularly important in financial services, where heterogeneous legacy infrastructure, multiple regulatory jurisdictions, and complex organizational structures create constant centrifugal pressure toward bespoke, non-standard solutions. The sector’s scores in the 8–18 range reflect meaningful but not exhaustive standardization investment, with the most mature institutions maintaining approved technology stacks, architectural review processes, and technology governance bodies that enforce standards while allowing justified exceptions.

Mergers & Acquisitions — Top Company: Allianz (23), AXA (23)

Allianz and AXA tie at the top of Mergers & Acquisitions with scores of 23, followed closely by multiple institutions at 19–22. Insurance companies’ M&A leadership in this dimension reflects the sector’s active consolidation dynamics and the technology integration challenges inherent in merging insurance books of business, claims management systems, and actuarial platforms. The broadly elevated M&A scores across the financial services cohort reflect an industry that has internalized the technology integration challenges of financial M&A and invested in the platforms, frameworks, and processes required to accelerate post-merger integration.


Industry Strategic Assessment

The Financial Services industry occupies a unique position in the Naftiko AI readiness landscape: it is simultaneously one of the most infrastructure-mature sectors in the dataset and one of the most governance-constrained. The sector’s top performers — Scotiabank, Citi, Morgan Stanley, Allianz, and HSBC — have built AI-ready infrastructure at a level that rivals or exceeds technology sector benchmarks in most foundational dimensions. Scotiabank’s breadth of leadership (Cloud: 155, Services: 323, Automation: 86, Operations: 88, Security: 98, Governance: 63) is the most comprehensive single-institution technology posture in the dataset and reflects a decade of deliberate digital transformation investment. Citi’s dominance in data-intensive dimensions (AI: 87, Data: 166, ROI & Business Metrics: 67) reflects the bank’s recognition that data management is the fundamental competitive moat in financial services. Allianz’s leadership in governance, ecosystem, and economics dimensions (Model Registry: 22, CNCF: 35, AI Review: 20, Provider Strategy: 24, Partnerships: 26) reflects the insurance sector’s need to manage long-term AI model performance across decades-long actuarial horizons.

The sector’s most consequential strategic gaps are concentrated at the intersection of regulatory accountability and AI operationalization. Domain Specialization scores of 2 across a 31-company cohort — despite the financial sector’s unmatched proprietary data assets — represent the industry’s most surprising missed opportunity. Regulatory Posture scores in the 7–14 range are inadequate for institutions facing mandatory model risk management reviews, EU AI Act compliance, and increasingly prescriptive regulatory expectations for AI governance. Privacy & Data Rights scores in the 1–6 range expose institutions to material regulatory risk as GDPR enforcement and AI-specific privacy regulations intensify. The gap between the sector’s infrastructure excellence and its governance sophistication is not a technology problem but an organizational priority problem: financial institutions have demonstrated the ability to execute large-scale technology investments when regulatory or competitive pressure requires it. The AI governance investment imperative is now fully visible; what remains is the organizational will to act with the same urgency applied to post-2008 regulatory infrastructure compliance.

For technology vendors, AI platform providers, and regulatory technology companies seeking to understand where financial services investment will flow over the next 18–36 months, the Naftiko analysis is unambiguous: governance, regulatory posture, privacy, domain specialization, and AI FinOps represent the highest-value investment opportunities in a sector that has already built the infrastructure foundation required to deploy AI at scale. The institutions that close the gap between their infrastructure maturity and their governance sophistication will define the competitive landscape of AI-enabled financial services. Naftiko’s Signals product continuously tracks these investments across the 31-company Financial Services cohort, providing the real-time intelligence required to benchmark your institution’s AI readiness against sector leaders and identify the specific capability investments most likely to drive competitive advantage.

Companies — Total:127

  • A-Mark Precious Metals
    A-Mark Precious Metals is a full-service precious metals trading company that wholesales gold, silver, platinum,...
  • ABN AMRO
    A Dutch banking and financial services group serving retail, private, and corporate clients across Europe....
  • AGNC Investment
    Profile for AGNC Investment in the API Evangelist network. Fortune F1000 (rank 798).
  • AIG
    A global insurance organization providing property casualty insurance, life insurance, and retirement solutions. One of...
  • Air Lease
    Profile for Air Lease in the API Evangelist network. Fortune F1000 (rank 992).
  • Allianz
    A German multinational financial services company and one of the world's largest insurance and asset...
  • ALLY Financial
    Fortune 1000 company ALLY Financial. Public API documentation has not yet been catalogued in the...
  • American Express
    A global financial services company best known for its charge and credit card products. Also...
  • Ameriprise Financial
    Get financial planning advice and retirement investment advice from Ameriprise financial advisors at ameriprise.com. Ameriprise...
  • Apollo Global Management
    Apollo Global Management is a global alternative investment manager providing private equity, credit, and real...
  • Ares Management
    Ares Management is a major US corporation and Fortune 1000 company. The Ares Management API...
  • Arthur J. Gallagher
    Arthur J. Gallagher & Co. is a global insurance brokerage, risk management, and consulting firm...
  • AXA
    A French multinational insurance firm and one of the world's largest providers of life, health,...
  • Bank of America
    One of the largest financial institutions in the United States offering banking, investing, and wealth...
  • BNY Mellon
    BNY Mellon is a global investments company providing asset servicing, asset management, wealth management, treasury...
  • Barclays
    A British multinational bank offering consumer banking, corporate banking, and investment banking services. One of...
  • Berkshire Hathaway
    A multinational conglomerate holding company led by Warren Buffett, owning subsidiaries across insurance, energy, manufacturing,...
  • Blackrock
    The world's largest asset management firm overseeing trillions of dollars in investments. Known for its...
  • Blackstone
    Blackstone is the world's largest alternative asset manager with over $1 trillion in assets under...
  • BNP Paribas
    A leading European banking group and one of the largest financial institutions in the world....
  • BOK Financial
    Profile for BOK Financial in the API Evangelist network. Fortune F1000 (rank 936).
  • Bread Financial
    Bread Financial is a technology-driven financial services company offering white-label buy now pay later (BNPL),...
  • Brinks
    Brink's is a global leader in secure cash management, armored transport, ATM services, and financial...
  • Broadridge
    Best-in-class API components meet expert support to create the ideal wealth management operations environment. Optimize...
  • Capital One
    A diversified financial services company and one of the largest credit card issuers in the...
  • The Carlyle Group
    The Carlyle Group (NASDAQ: CG) is a global investment firm that deploys private capital across...
  • CarMax
    CarMax (NYSE: KMX) is the largest retailer of used cars in the United States, operating...
  • CBRE
    CBRE Group, Inc. (NYSE: CBRE) is the world's largest commercial real estate services and investment...
  • Charles Schwab
    A leading brokerage and wealth management firm offering investing, trading, and financial advisory services. Serves...
  • Citi
    A global banking and financial services corporation providing consumer banking, credit, and wealth management. Operates...
  • Citigroup
    A leading global financial services holding company providing consumers, corporations, governments, and institutions with a...
  • Citizens Financial Group
    Citizens Financial Group is one of the oldest and largest financial institutions in the United...
  • Comerica
    Comerica Incorporated is a Texas-headquartered financial services holding company providing retail, commercial, and wealth-management banking...
  • Commonwealth Bank
    Australia's largest bank by market capitalization providing retail, business, and institutional banking services. Serves millions...
  • Cullen/Frost Bankers
    Cullen/Frost Bankers is a major US corporation and Fortune 1000 company. The Cullen/Frost Bankers API...
  • CUNA Mutual Group (TruStage)
    CUNA Mutual Group, now operating as TruStage, is an insurance and financial services company that...
  • Deutsche Bank
    A German multinational investment bank and financial services company headquartered in Frankfurt. Provides corporate banking,...
  • Diebold Nixdorf
    Diebold Nixdorf is a global leader in driving connected commerce for the financial and retail...
  • Discover
    Discover is a financial services company that offers a range of products and services to...
  • East West Bancorp
    East West Bancorp is a major US corporation and Fortune 1000 company. The East West...
  • Edward Jones
    Edward Jones is a financial services firm dedicated to serving the needs of individual investors...
  • Equitable Holdings
    Fortune 1000 company Equitable Holdings. Public API documentation has not yet been catalogued in the...
  • Fannie Mae
    Fannie Mae, officially known as the Federal National Mortgage Association, is a government-sponsored enterprise that...
  • Fidelity Investments
    One of the largest financial services companies in the world providing investment management, retirement planning,...
  • Fidelity National Financial
    Fidelity National Financial (FNF) is a leading provider of title insurance, escrow, and other title-related...
  • Fidelity National Information Services (FIS)
    Fidelity National Information Services (FIS) is a global provider of financial services technology offering solutions...
  • Fifth Third Bancorp
    Fifth Third Bancorp is a diversified financial services company providing commercial banking, branch banking, consumer...
  • First Citizens BancShares
    First Citizens BancShares is a financial holding company that provides general banking, trust, investment, insurance,...
  • First Horizon
    First Horizon Corporation is a Fortune 500 financial services holding company headquartered in Memphis, Tennessee....
  • First National of Nebraska
    First National of Nebraska, Inc. is a privately held bank holding company headquartered in Omaha,...
  • FirstCash Holdings
    FirstCash Holdings is a leading international operator of pawn stores and a major provider of...
  • Fiserv
    Fiserv is a global provider of financial services technology solutions, offering a wide range of...
  • FM (FM Global)
    FM (formerly FM Global) is a mutual insurance company specializing in commercial and industrial property...
  • Franklin Resources
    Franklin Resources, doing business as Franklin Templeton, is a global investment management organization offering investment...
  • Freddie Mac
    Freddie Mac (Federal Home Loan Mortgage Corporation) provides liquidity, stability, and affordability to the U.S....
  • Goldman Sachs
    A leading global investment banking, securities, and investment management firm. Provides a wide range of...
  • Goldman Sachs Group
    Fortune 1000 company Goldman Sachs Group. Public API documentation has not yet been catalogued in...
  • Hartford Financial Services Group
    The Hartford Financial Services Group is a leading provider of property and casualty insurance, group...
  • HSBC
    One of the world's largest banking and financial services organizations headquartered in London. Serves over...
  • Huntington Bancshares
    Huntington Bancshares is a regional bank holding company that provides full-service consumer and business banking,...
  • Icahn Enterprises
    Icahn Enterprises L.P. is a diversified holding company engaged in the investment, energy, automotive, food...
  • ING
    A Dutch multinational banking and financial services corporation headquartered in Amsterdam. Provides retail banking, direct...
  • Interactive Brokers
    Interactive Brokers is an online brokerage firm providing trading access to stocks, options, futures, currencies,...
  • Jackson Financial
    Profile for Jackson Financial in the API Evangelist network. Fortune F500 (rank 282).
  • Jefferies Financial Group
    Jefferies Financial Group Inc. is a diversified financial services company engaged in investment banking and...
  • Jones Lang LaSalle
    Jones Lang LaSalle Incorporated (JLL) is a global commercial real estate services company offering investment...
  • JP Morgan Chase
    The largest bank in the United States and a global leader in investment banking, financial...
  • KeyCorp
    KeyCorp is one of the nation's largest bank-based financial services companies, providing deposit, lending, cash...
  • KKR
    KKR & Co. Inc. is a leading global investment firm offering solutions in alternative assets...
  • Lincoln National
    Lincoln National Corporation, operating as Lincoln Financial Group, is a diversified financial services company offering...
  • LPL Financial Holdings
    LPL Financial Holdings Inc. (NASDAQ: LPLA) is the parent company of LPL Financial LLC, one...
  • M&T Bank
    M&T Bank is a regional bank holding company that provides commercial and retail banking services...
  • Manulife
    A Canadian multinational insurance and financial services company providing life insurance, wealth management, and asset...
  • Marsh & McLennan
    Marsh & McLennan Companies is a global professional services firm offering clients advice and solutions...
  • Massachusetts Mutual Life Insurance
    Massachusetts Mutual Life Insurance Company (MassMutual) is a leading mutual life insurance company providing life...
  • Morgan Stanley
    A leading global financial services firm providing investment banking, securities, wealth management, and investment management....
  • Mutual of Omaha
    Mutual of Omaha is a Fortune 500 mutual insurance and financial services company headquartered in...
  • Nationwide
    One of the largest insurance and financial services companies in the United States, offering auto,...
  • Navient
    Navient Corporation is a U.S. corporation based in Wilmington, Delaware, whose operations include servicing and...
  • New York Community Bancorp
    New York Community Bancorp, Inc. (now operating as Flagstar Financial) is a Fortune 500 bank...
  • New York Life
    The largest mutual life insurance company in the United States providing life insurance, retirement, and...
  • New York Life Insurance
    New York Life Insurance Company is the largest mutual life insurance company in the United...
  • Northern Trust
    Northern Trust is a Fortune 500 financial services company providing wealth management, asset servicing, asset...
  • Northwestern Mutual
    One of the largest life insurance companies in the United States providing life insurance, disability...
  • NVR
    NVR Inc. operates in two business segments: homebuilding and mortgage banking, constructing and selling single-family...
  • Old National Bancorp
    Old National Bancorp is a regional bank holding company headquartered in Indiana and a Fortune...
  • OneMain Holdings
    OneMain Holdings is a leading provider of personal installment loans to nonprime consumers in the...
  • Pacific Life
    Pacific Life is a U.S.-based insurance company providing life insurance, annuities, mutual funds, and investment...
  • PennyMac Financial Services
    PennyMac Financial Services, Inc. is a specialty financial services firm focused on the production and...
  • PNC Financial Services Group
    PNC Financial Services Group is one of the largest diversified financial services institutions in the...
  • Popular
    Popular Inc. is a financial holding company offering retail, mortgage, and commercial banking services through...
  • Principal Financial
    Principal Financial Group is a global investment management leader and the leading provider of retirement...
  • Prudential Financial
    A global financial services company providing insurance, retirement, and investment management products. Serves individual and...
  • Rabobank
    A Dutch multinational banking and financial services company with a strong focus on the food...
  • Raymond James Financial
    Raymond James Financial is a diversified financial services holding company headquartered in St. Petersburg, Florida,...
  • Regions Financial
    Regions Financial Corporation is a member of the S&P 500 Index and one of the...
  • Rithm Capital
    Rithm Capital is a global asset manager focused on real estate, credit, and financial services....
  • Rocket Companies
    Rocket Companies is a Detroit-based financial services firm that provides digital solutions for homeownership and...
  • Scotiabank
    A leading Canadian multinational bank and one of the largest financial institutions in North America....
  • Securian Financial Group
    Securian Financial Group is a financial services holding company that provides life insurance, retirement solutions,...
  • SEI Investments
    An Oaks, PA-based global provider of investment processing, investment management, and investment operations platforms serving...
  • SLM
    Profile for SLM in the API Evangelist network. Fortune F1000 (rank 898).
  • Standard Chartered
    A British multinational banking and financial services company headquartered in London with a strong focus...
  • State Street
    State Street Corporation is one of the world's largest financial services companies, headquartered in Boston,...
  • Stifel Financial
    Stifel Financial is a financial services holding company whose subsidiaries provide securities brokerage, investment banking,...
  • Stonex Group
    Fortune 1000 company Stonex Group. Public API documentation has not yet been catalogued in the...
  • Synchrony Financial
    Synchrony Financial is one of the nation's premier consumer financial services companies, providing a range...
  • Synovus Financial
    Synovus Financial is a major US corporation and Fortune 1000 company. The Synovus Financial API...
  • T. Rowe Price
    T. Rowe Price is a global asset management firm (NYSE: TROW) offering a broad range...
  • TD Bank Group
    One of North America's largest financial institutions, providing a full range of financial products and...
  • Thrivent Financial
    Thrivent Financial is a not-for-profit, membership-owned Fortune 500 financial services organization headquartered in Minneapolis, Minnesota,...
  • TIAA
    TIAA (Teachers Insurance and Annuity Association of America) is a leading provider of financial services...
  • Truist Financial
    Truist Financial Corporation is a purpose-driven financial services company headquartered in Charlotte, North Carolina, formed...
  • Trumark Financial
    A Philadelphia-area credit union providing a full range of personal and business banking products and...
  • UBS
    A Swiss multinational investment bank and financial services company and the world's largest wealth manager....
  • US Bancorp
    U.S. Bancorp is the parent company of U.S. Bank National Association, one of the largest...
  • USAA
    USAA (United Services Automobile Association) is a financial services group offering banking, investing, and insurance...
  • Valley National Bancorp
    Valley National Bancorp is a regional bank holding company with its principal subsidiary, Valley National...
  • Vanguard
    One of the world's largest investment management companies known for pioneering low-cost index funds. Manages...
  • Verisk
    Verisk (formerly ISO) is a leading data analytics and technology company serving the insurance, energy,...
  • Voya Financial
    Voya Financial (NYSE: VOYA) is a leading health, wealth, and investment company serving approximately 14.7...
  • Webster Financial
    Webster Financial Corporation (NYSE:WBS) is a regional financial services company that delivers banking and financial...
  • Wells Fargo
    One of the largest banks in the United States providing banking, investment, mortgage, and consumer...
  • Western Alliance Bancorp.
    Western Alliance Bancorporation is a bank holding company headquartered in Phoenix, Arizona, that provides commercial...
  • Western & Southern Financial Group
    Western & Southern Financial Group is a Fortune 500 diversified family of financial services companies...
  • Wintrust Financial
    Wintrust Financial is a major US corporation and Fortune 1000 company. The Wintrust Financial API...
  • Zions Bancorporation
    Zions Bancorporation is one of the nation's premier financial services companies, operating under local management...

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

Sort
Expand
2421 capabilities

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
Open in Framework → View in Fleet → payment-transaction-status-with-sla-check.yml

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
Open in Framework → View in Fleet → aml-alert-investigation-pipeline.yml

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
Open in Framework → View in Fleet → bloomberg-market-data-lookup-with-risk-check.yml

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

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
Open in Framework → View in Fleet → fx-hedging-position-monitor.yml

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

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
Open in Framework → View in Fleet → pagerduty-on-call-schedule.yml

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
Open in Framework → View in Fleet → employee-role-transfer-orchestrator.yml

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
Open in Framework → View in Fleet → liquidity-stress-test-orchestrator.yml

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
Open in Framework → View in Fleet → stress-testing-scenario-runner.yml

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
Open in Framework → View in Fleet → bloomberg-aim-portfolio-valuation.yml

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

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
Open in Framework → View in Fleet → keycloak-suspicious-session-audit.yml

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
Open in Framework → View in Fleet → client-onboarding-kyc-pipeline.yml

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

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
Open in Framework → View in Fleet → helm-chart-deployment-to-aks.yml

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
Open in Framework → View in Fleet → digital-channel-incident-response.yml

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
Open in Framework → View in Fleet → gdpr-data-subject-access-request-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → sailpoint-access-review-orchestrator.yml

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

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
Open in Framework → View in Fleet → cloud-security-posture-assessment.yml

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

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
Open in Framework → View in Fleet → sap-expense-report-processing.yml

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

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
Open in Framework → View in Fleet → digital-banking-user-journey-analyzer.yml

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
Open in Framework → View in Fleet → apache-kafka-topic-lookup.yml

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

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
Open in Framework → View in Fleet → swift-payment-initiation-and-tracking.yml

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
Open in Framework → View in Fleet → operational-risk-event-pipeline.yml

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

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
Open in Framework → View in Fleet → fx-spot-trade-execution.yml

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
Open in Framework → View in Fleet → incident-war-room-orchestrator.yml

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

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

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

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

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
Open in Framework → View in Fleet → datadog-service-map-lookup.yml

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
Open in Framework → View in Fleet → postman-api-regression-suite-with-reporting.yml

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
Open in Framework → View in Fleet → data-lineage-impact-analyzer.yml

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
Open in Framework → View in Fleet → tradeweb-bond-execution-with-compliance-check.yml

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

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
Open in Framework → View in Fleet → sanctions-list-update-and-screening-refresh.yml

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
Open in Framework → View in Fleet → datadog-alert-to-jira-incident.yml

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

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
Open in Framework → View in Fleet → client-relationship-360-view.yml

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

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
Open in Framework → View in Fleet → azure-sql-query-runner.yml

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
Open in Framework → View in Fleet → derivatives-risk-calculation-pipeline.yml

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
Open in Framework → View in Fleet → aml-transaction-monitoring-alert-triage.yml

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
Open in Framework → View in Fleet → informatica-data-quality-pipeline-with-reporting.yml

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
Open in Framework → View in Fleet → azure-key-vault-secret-retrieval.yml

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
Open in Framework → View in Fleet → credit-risk-exposure-report.yml

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
Open in Framework → View in Fleet → github-pull-request-status.yml

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

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

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
Open in Framework → View in Fleet → microsoft-defender-threat-alert-triage.yml

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
Open in Framework → View in Fleet → employee-trading-compliance-monitor.yml

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

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

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
Open in Framework → View in Fleet → corporate-lending-covenant-monitoring.yml

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

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
Open in Framework → View in Fleet → client-portfolio-rebalancing-pipeline.yml

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

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
Open in Framework → View in Fleet → investment-compliance-pre-trade-check.yml

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
Open in Framework → View in Fleet → interest-rate-risk-calculator.yml

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
Open in Framework → View in Fleet → microsoft-entra-conditional-access-policy-check.yml

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
Open in Framework → View in Fleet → treasury-cash-position-aggregator.yml

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

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

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
Open in Framework → View in Fleet → servicenow-change-request-lookup.yml

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
Open in Framework → View in Fleet → api-deprecation-notification-pipeline.yml

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
Open in Framework → View in Fleet → market-data-quality-monitor.yml

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
Open in Framework → View in Fleet → microsoft-purview-data-classification-scan.yml

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

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

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

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
Open in Framework → View in Fleet → okta-application-assignment-check.yml

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

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

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

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
Open in Framework → View in Fleet → trade-execution-quality-analyzer.yml

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
Open in Framework → View in Fleet → dynatrace-performance-baseline-comparison.yml

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

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

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

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
Open in Framework → View in Fleet → everbridge-mass-notification-for-it-incidents.yml

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

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
Open in Framework → View in Fleet → mortgage-application-processor.yml

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

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

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
Open in Framework → View in Fleet → github-pr-review-status.yml

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
Open in Framework → View in Fleet → mulesoft-api-health-check-with-incident-creation.yml

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
Open in Framework → View in Fleet → prometheus-alert-triage-and-escalation.yml

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
Open in Framework → View in Fleet → wire-transfer-compliance-pipeline.yml

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
Open in Framework → View in Fleet → annual-review-document-generator.yml

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
Open in Framework → View in Fleet → bloomberg-terminal-data-fetch.yml

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

Triggers a reserve calculation by pulling loss triangles from Snowflake, posting to SAP GL, and notifying the chief actuary via Teams.

naftiko: '0.5'
info:
  label: Actuarial Reserve Calculation Workflow
  description: Triggers a reserve calculation by pulling loss triangles from Snowflake, posting to SAP GL, and notifying the chief actuary via Teams.
  tags:
  - insurance
  - actuarial
  - finance
  - snowflake
  - sap
capability:
  exposes:
  - type: mcp
    namespace: reserve-ops
    port: 8080
    tools:
    - name: trigger-reserve-calc
      description: Given a valuation date and LOB, extract loss data from Snowflake, post the reserve entry to SAP, and notify the actuary.
      inputParameters:
      - name: valuation_date
        in: body
        type: string
        description: Valuation date.
      - name: line_of_business
        in: body
        type: string
        description: LOB.
      - name: actuary_upn
        in: body
        type: string
        description: Chief actuary UPN.
      steps:
      - name: get-data
        type: call
        call: snowflake.run-query
        with:
          query: SELECT * FROM reserve_triangles WHERE lob='{{line_of_business}}'
      - name: post-gl
        type: call
        call: sap-fi.post-journal
        with:
          PostingDate: '{{valuation_date}}'
          Description: 'Reserve: {{line_of_business}}'
      - name: notify-actuary
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{actuary_upn}}'
          text: 'Reserve calc: {{line_of_business}} as of {{valuation_date}}. GL: {{post-gl.document_number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: journal-entries
      path: /A_JournalEntry
      operations:
      - name: post-journal
        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
Open in Framework → View in Fleet → actuarial-reserve-calculation-workflow.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → jira-issue-detail-lookup.yml

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:
  - insurance
  - 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://aig.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://aig.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
Open in Framework → View in Fleet → okta-mfa-enrollment-compliance-audit.yml

Triggers SAP S/4HANA period close for the fiscal month, validates journal postings, and notifies the finance team in Teams.

naftiko: '0.5'
info:
  label: Monthly Financial Period Close
  description: Triggers SAP S/4HANA period close for the fiscal month, validates journal postings, and notifies the finance team in Teams.
  tags:
  - finance
  - erp
  - period-close
  - sap
  - accounting
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: trigger-period-close
      description: Given a fiscal period and company code, initiate the SAP period close sequence, validate journal completeness, and post completion status to the finance Teams channel. Use at month end to automate AIG's financial close workflow.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period in YYYYPP format, e.g. '202603'.
      - name: company_code
        in: body
        type: string
        description: SAP company code, e.g. 'AIGI'.
      - name: finance_channel_id
        in: body
        type: string
        description: Finance Teams channel ID.
      steps:
      - name: close-period
        type: call
        call: sap-fi.close-period
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: validate-journals
        type: call
        call: sap-journals.check-completeness
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: notify-finance
        type: call
        call: msteams-finance.post-channel-message
        with:
          channel_id: '{{finance_channel_id}}'
          text: 'Period {{fiscal_period}} closed for {{company_code}}. Journal status: {{validate-journals.status}} | Open items: {{validate-journals.open_count}}'
  consumes:
  - type: http
    namespace: sap-fi
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/FAR_PERIOD_CLOSE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: period-close
      path: /PeriodClose
      operations:
      - name: close-period
        method: POST
  - type: http
    namespace: sap-journals
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/FAR_JOURNAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: journal-validation
      path: /JournalEntryCompleteness
      inputParameters:
      - name: fiscal_period
        in: query
      - name: company_code
        in: query
      operations:
      - name: check-completeness
        method: GET
  - type: http
    namespace: msteams-finance
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → monthly-financial-period-close.yml

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:
  - insurance
  - 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/aig/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://aig.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
Open in Framework → View in Fleet → business-continuity-drill-coordinator.yml

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:
  - insurance
  - 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://aig-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://aig.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
Open in Framework → View in Fleet → sap-period-end-journal-entry-validation.yml

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:
  - insurance
  - 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://aig.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: apm-ops
      path: /{{id}}
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → dynatrace-application-metrics-lookup.yml

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

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:
  - insurance
  - 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/aig/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://aig.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
Open in Framework → View in Fleet → compliance-training-completion-tracker.yml

Retrieves a policyholder record from Salesforce by policy number, returning contact details, coverage tier, and account status.

naftiko: '0.5'
info:
  label: Salesforce Policy Holder Lookup
  description: Retrieves a policyholder record from Salesforce by policy number, returning contact details, coverage tier, and account status.
  tags:
  - insurance
  - insurance
  - salesforce
  - customer-service
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: policy-ops
    port: 8080
    tools:
    - name: get-policyholder
      description: Given a policy number, return the policyholder contact name, email, phone, coverage tier, and account status from Salesforce.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      call: sf.get-account
      with:
        PolicyNumber__c: '{{policy_number}}'
      outputParameters:
      - name: contact_name
        type: string
        mapping: $.Name
      - name: email
        type: string
        mapping: $.PersonEmail
      - name: status
        type: string
        mapping: $.Status__c
  consumes:
  - namespace: sf
    type: http
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policy-ops
      path: /{{id}}
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-policy-holder-lookup.yml

Triggers a Terraform Cloud workspace run to provision new insurance platform infrastructure and notifies the DevOps team in Teams.

naftiko: '0.5'
info:
  label: Terraform Cloud Insurance Platform Provisioning
  description: Triggers a Terraform Cloud workspace run to provision new insurance platform infrastructure and notifies the DevOps team in Teams.
  tags:
  - devops
  - terraform
  - cloud
  - infrastructure
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: provision-platform-environment
      description: Given a Terraform Cloud workspace ID and environment label, trigger a plan-and-apply run to provision insurance platform infrastructure. Notify the DevOps Teams channel with run status. Use when standing up new environments for insurance system development or testing.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Terraform Cloud workspace ID.
      - name: environment_label
        in: body
        type: string
        description: Human-readable label, e.g. 'claims-api-staging'.
      - name: devops_channel_id
        in: body
        type: string
        description: DevOps Teams channel ID.
      steps:
      - name: trigger-run
        type: call
        call: terraform.create-run
        with:
          workspace_id: '{{workspace_id}}'
          message: Provisioning {{environment_label}}
          auto_apply: 'true'
      - name: notify-devops
        type: call
        call: msteams-devops.post-channel-message
        with:
          channel_id: '{{devops_channel_id}}'
          text: 'Terraform run triggered for {{environment_label}} (workspace {{workspace_id}}). Run ID: {{trigger-run.data.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-devops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → terraform-cloud-insurance-platform-provisioning.yml

Queries Datadog for the current health status of a specified service, returning uptime percentage and error rate.

naftiko: '0.5'
info:
  label: Datadog Service Health Check
  description: Queries Datadog for the current health status of a specified service, returning uptime percentage and error rate.
  tags:
  - insurance
  - it-operations
  - datadog
  - monitoring
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-service-health
      description: Given a Datadog service name, return the current uptime percentage, error rate, and active monitor count.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Datadog service name.
      call: datadog.get-slo
      with:
        service: '{{service_name}}'
      outputParameters:
      - name: uptime_pct
        type: number
        mapping: $.data[0].overall.sli_value
      - name: error_rate
        type: number
        mapping: $.data[0].overall.error_budget_remaining
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: observability
      path: /{{id}}
      operations:
      - name: get-slo
        method: GET
Open in Framework → View in Fleet → datadog-service-health-check.yml

When a regulatory breach or compliance incident is identified, creates a ServiceNow compliance incident, opens a Jira investigation task, and notifies the Chief Compliance Officer in Teams.

naftiko: '0.5'
info:
  label: Regulatory Compliance Incident Reporting
  description: When a regulatory breach or compliance incident is identified, creates a ServiceNow compliance incident, opens a Jira investigation task, and notifies the Chief Compliance Officer in Teams.
  tags:
  - compliance
  - regulatory
  - servicenow
  - jira
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: report-compliance-incident
      description: Given a compliance incident type, jurisdiction, and description, create a ServiceNow compliance record, open a Jira investigation task, and alert the compliance officer in Teams. Use when a regulatory breach or potential violation is identified.
      inputParameters:
      - name: incident_type
        in: body
        type: string
        description: Type of compliance incident, e.g. 'data-breach', 'regulatory-violation', 'sanctions-breach'.
      - name: jurisdiction
        in: body
        type: string
        description: Regulatory jurisdiction, e.g. 'US-NY', 'EU-GDPR', 'UK-FCA'.
      - name: description
        in: body
        type: string
        description: Full description of the compliance incident.
      - name: cco_upn
        in: body
        type: string
        description: Chief Compliance Officer Teams UPN.
      steps:
      - name: create-compliance-record
        type: call
        call: servicenow-compliance.create-incident
        with:
          short_description: 'Compliance incident: {{incident_type}} — {{jurisdiction}}'
          description: '{{description}}'
          category: compliance_breach
          priority: '1'
      - name: open-investigation
        type: call
        call: jira-compliance.create-issue
        with:
          project_key: COMP
          issuetype: Task
          summary: 'Compliance investigation: {{incident_type}} — {{jurisdiction}}'
          description: '{{description}} | ServiceNow: {{create-compliance-record.number}}'
          priority: Highest
      - name: alert-cco
        type: call
        call: msteams-compliance.send-message
        with:
          recipient_upn: '{{cco_upn}}'
          text: 'COMPLIANCE ALERT: {{incident_type}} in {{jurisdiction}} | INC: {{create-compliance-record.number}} | Jira: {{open-investigation.key}} | {{description}}'
  consumes:
  - type: http
    namespace: servicenow-compliance
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: 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-compliance
    baseUri: https://aig.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-compliance
    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
Open in Framework → View in Fleet → regulatory-compliance-incident-reporting.yml

Tracks subrogation recovery by pulling data from Salesforce, updating SAP subledger, and notifying the recovery lead via Teams.

naftiko: '0.5'
info:
  label: Subrogation Recovery Tracking Workflow
  description: Tracks subrogation recovery by pulling data from Salesforce, updating SAP subledger, and notifying the recovery lead via Teams.
  tags:
  - insurance
  - subrogation
  - finance
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: subrogation-ops
    port: 8080
    tools:
    - name: track-subrogation
      description: Given a claim number, pull recovery status from Salesforce, update SAP, and notify the lead.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Claim number.
      - name: recovery_lead_upn
        in: body
        type: string
        description: Recovery lead UPN.
      steps:
      - name: get-recovery
        type: call
        call: sf.get-subrogation
        with:
          claim_number: '{{claim_number}}'
      - name: update-ledger
        type: call
        call: sap-fi.post-recovery
        with:
          claim_number: '{{claim_number}}'
          amount: '{{get-recovery.recovered_amount}}'
      - name: notify-lead
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{recovery_lead_upn}}'
          text: 'Subrogation: {{claim_number}} — Recovered: ${{get-recovery.recovered_amount}}. SAP: {{update-ledger.document_number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: subrogation
      path: /sobjects/Subrogation__c/ClaimNumber__c/{{claim_number}}
      operations:
      - name: get-subrogation
        method: GET
  - type: http
    namespace: sap-fi
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: recoveries
      path: /A_JournalEntry
      operations:
      - name: post-recovery
        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
Open in Framework → View in Fleet → subrogation-recovery-tracking-workflow.yml

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:
  - insurance
  - 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://aig.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://aig-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://aig.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
Open in Framework → View in Fleet → salesforce-account-health-enrichment.yml

When AWS Cost Anomaly Detection raises an alert, creates a Datadog event, opens a Jira FinOps ticket, and posts to the cloud-finops Teams channel.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Response
  description: When AWS Cost Anomaly Detection raises an alert, creates a Datadog event, opens a Jira FinOps ticket, and posts to the cloud-finops Teams channel.
  tags:
  - finops
  - cloud
  - aws
  - datadog
  - jira
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given an AWS cost anomaly ID, service name, and estimated overage, create a Datadog warning event, open a Jira cloud FinOps task, and post to the finops Teams channel. Use when AWS Cost Anomaly Detection triggers above threshold.
      inputParameters:
      - name: anomaly_id
        in: body
        type: string
        description: AWS Cost Anomaly Detection anomaly ID.
      - name: service_name
        in: body
        type: string
        description: AWS service generating the anomaly.
      - name: estimated_overage_usd
        in: body
        type: number
        description: Estimated cost overage in USD.
      - name: finops_channel_id
        in: body
        type: string
        description: FinOps Teams channel ID.
      steps:
      - name: create-dd-event
        type: call
        call: datadog.create-event
        with:
          title: 'AWS Cost Anomaly: {{service_name}}'
          text: Anomaly {{anomaly_id}} — overage ${{estimated_overage_usd}}
          alert_type: warning
      - name: open-jira
        type: call
        call: jira-finops.create-issue
        with:
          project_key: FINOPS
          issuetype: Task
          summary: 'Cost anomaly: {{service_name}} +${{estimated_overage_usd}}'
          description: 'Anomaly {{anomaly_id}}. Datadog: {{create-dd-event.id}}'
      - name: alert-finops
        type: call
        call: msteams-finops.post-channel-message
        with:
          channel_id: '{{finops_channel_id}}'
          text: 'AWS Cost Anomaly on {{service_name}}: +${{estimated_overage_usd}} | Jira: {{open-jira.key}} | 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-finops
    baseUri: https://aig.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-finops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → cloud-cost-anomaly-response.yml

Processes a new business submission by creating a Salesforce opportunity, generating an underwriting task in ServiceNow, and notifying the underwriter via Teams.

naftiko: '0.5'
info:
  label: New Business Submission Processing
  description: Processes a new business submission by creating a Salesforce opportunity, generating an underwriting task in ServiceNow, and notifying the underwriter via Teams.
  tags:
  - insurance
  - underwriting
  - salesforce
  - servicenow
  - new-business
capability:
  exposes:
  - type: mcp
    namespace: submission-ops
    port: 8080
    tools:
    - name: process-submission
      description: Given submission details, create a Salesforce opportunity, open an underwriting task in ServiceNow, and notify the underwriter.
      inputParameters:
      - name: broker_name
        in: body
        type: string
        description: Broker name.
      - name: coverage_type
        in: body
        type: string
        description: Coverage type.
      - name: estimated_premium
        in: body
        type: number
        description: Estimated premium.
      - name: underwriter_upn
        in: body
        type: string
        description: UPN of underwriter.
      steps:
      - name: create-opp
        type: call
        call: sf.create-opportunity
        with:
          Name: New — {{broker_name}} — {{coverage_type}}
          Amount: '{{estimated_premium}}'
      - name: create-task
        type: call
        call: snow.create-task
        with:
          short_description: 'UW Review: {{broker_name}} — {{coverage_type}}'
          description: 'Premium: {{estimated_premium}} | SF: {{create-opp.id}}'
      - name: notify-uw
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{underwriter_upn}}'
          text: 'New submission: {{broker_name}} — {{coverage_type}}. SF: {{create-opp.id}} | SNOW: {{create-task.number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.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: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/u_underwriting_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
Open in Framework → View in Fleet → new-business-submission-processing.yml

Collects premium audit data by pulling policy details from Salesforce, payroll data from Workday, and creating an audit task in ServiceNow.

naftiko: '0.5'
info:
  label: Premium Audit Data Collection Workflow
  description: Collects premium audit data by pulling policy details from Salesforce, payroll data from Workday, and creating an audit task in ServiceNow.
  tags:
  - insurance
  - audit
  - salesforce
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: audit-ops
    port: 8080
    tools:
    - name: collect-audit-data
      description: Given a policy number and audit period, retrieve details from Salesforce, pull payroll from Workday, and create an audit task.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: audit_period
        in: body
        type: string
        description: Audit period.
      steps:
      - name: get-policy
        type: call
        call: sf.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: get-payroll
        type: call
        call: workday.get-payroll
        with:
          company: '{{get-policy.CompanyName}}'
          period: '{{audit_period}}'
      - name: create-task
        type: call
        call: snow.create-task
        with:
          short_description: 'Audit: {{policy_number}} — {{audit_period}}'
          description: 'Company: {{get-policy.CompanyName}} | Payroll: {{get-payroll.total}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/InsurancePolicy__c/PolicyNumber__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/aig/Payroll/v40.1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: payroll
      path: /payroll-summaries
      operations:
      - name: get-payroll
        method: POST
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/u_premium_audit
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → premium-audit-data-collection-workflow.yml

Queries Snowflake account query history for a specified warehouse, returning recent query count and average execution time.

naftiko: '0.5'
info:
  label: Snowflake Query History Check
  description: Queries Snowflake account query history for a specified warehouse, returning recent query count and average execution time.
  tags:
  - data-engineering
  - snowflake
  - performance
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: data-perf
    port: 8080
    tools:
    - name: get-query-history
      description: Given a Snowflake warehouse name, return the recent query count and average execution time in seconds.
      inputParameters:
      - name: warehouse_name
        in: body
        type: string
        description: Snowflake warehouse name.
      call: snowflake.query-history
      with:
        warehouse: '{{warehouse_name}}'
      outputParameters:
      - name: query_count
        type: integer
        mapping: $.data[0].QUERY_COUNT
      - name: avg_exec_time
        type: number
        mapping: $.data[0].AVG_EXEC_TIME
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-history
        method: POST
Open in Framework → View in Fleet → snowflake-query-history-check.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → snowflake-data-pipeline-failure-response.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → snowflake-table-row-count-check.yml

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:
  - insurance
  - 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/aig/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://aig.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
Open in Framework → View in Fleet → workday-performance-calibration-report.yml

Processes bordereaux by loading data into Snowflake, reconciling against Salesforce, and sending variance reports.

naftiko: '0.5'
info:
  label: Insurance Bordereaux Processing Workflow
  description: Processes bordereaux by loading data into Snowflake, reconciling against Salesforce, and sending variance reports.
  tags:
  - insurance
  - delegated-authority
  - snowflake
  - salesforce
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: da-ops
    port: 8080
    tools:
    - name: process-bordereaux
      description: Given a bordereaux file reference and period, load into Snowflake, reconcile with Salesforce, and send a report.
      inputParameters:
      - name: file_reference
        in: body
        type: string
        description: File reference ID.
      - name: period
        in: body
        type: string
        description: Reporting period.
      - name: da_manager_email
        in: body
        type: string
        description: DA manager email.
      steps:
      - name: load-data
        type: call
        call: snowflake.load-bordereaux
        with:
          file_ref: '{{file_reference}}'
          period: '{{period}}'
      - name: reconcile
        type: call
        call: sf.query-policies
        with:
          period: '{{period}}'
      - name: send-report
        type: call
        call: msgraph.send-mail
        with:
          to: '{{da_manager_email}}'
          subject: 'Bordereaux: {{period}} — {{file_reference}}'
          body: 'Loaded: {{load-data.row_count}} | Matches: {{reconcile.match_count}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: load-bordereaux
        method: POST
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /query/?q=SELECT+Id+FROM+InsurancePolicy__c+WHERE+Period__c='{{period}}'
      operations:
      - name: query-policies
        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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → insurance-bordereaux-processing-workflow.yml

When a CAT event is declared, queries Salesforce for impacted policies, provisions ServiceNow claim queues, and notifies the CAT response team via Teams.

naftiko: '0.5'
info:
  label: Catastrophe Event Claims Surge Coordinator
  description: When a CAT event is declared, queries Salesforce for impacted policies, provisions ServiceNow claim queues, and notifies the CAT response team via Teams.
  tags:
  - insurance
  - catastrophe
  - claims
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: cat-ops
    port: 8080
    tools:
    - name: handle-cat-event
      description: Given a CAT event code and affected ZIP codes, query Salesforce for impacted policies, create a surge queue in ServiceNow, and broadcast to the CAT team.
      inputParameters:
      - name: cat_event_code
        in: body
        type: string
        description: CAT event code.
      - name: affected_zips
        in: body
        type: string
        description: Affected ZIP codes.
      - name: cat_channel_id
        in: body
        type: string
        description: Teams channel ID.
      steps:
      - name: query-policies
        type: call
        call: sf.query-by-geo
        with:
          zip_codes: '{{affected_zips}}'
      - name: create-queue
        type: call
        call: snow.create-queue
        with:
          short_description: 'CAT surge: {{cat_event_code}}'
          description: 'Policies: {{query-policies.totalSize}} | ZIPs: {{affected_zips}}'
      - name: notify-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: '{{cat_channel_id}}'
          text: 'CAT {{cat_event_code}}: {{query-policies.totalSize}} policies. Queue: {{create-queue.number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /query/?q=SELECT+Id+FROM+InsurancePolicy__c+WHERE+Zip__c+IN+({{zip_codes}})
      inputParameters:
      - name: zip_codes
        in: query
      operations:
      - name: query-by-geo
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: queues
      path: /table/u_claims_queue
      operations:
      - name: create-queue
        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
Open in Framework → View in Fleet → catastrophe-event-claims-surge-coordinator.yml

Pulls the insurance sales pipeline from Salesforce, refreshes the Power BI executive pipeline dashboard, and emails a weekly summary to sales leadership.

naftiko: '0.5'
info:
  label: Sales Pipeline Executive Digest
  description: Pulls the insurance sales pipeline from Salesforce, refreshes the Power BI executive pipeline dashboard, and emails a weekly summary to sales leadership.
  tags:
  - sales
  - crm
  - salesforce
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: sales-exec-reporting
    port: 8080
    tools:
    - name: publish-pipeline-digest
      description: Given a Salesforce opportunity filter and Power BI dataset ID, query open insurance opportunities, trigger a Power BI refresh, and email the pipeline digest to sales leadership. Use weekly for sales forecast reviews.
      inputParameters:
      - name: product_line
        in: body
        type: string
        description: Insurance product line filter, e.g. 'Property Casualty' or 'Life'.
      - name: pbi_dataset_id
        in: body
        type: string
        description: Power BI dataset ID for the pipeline dashboard.
      - name: leadership_email
        in: body
        type: string
        description: Sales leadership email distribution list.
      steps:
      - name: get-pipeline
        type: call
        call: salesforce-pipeline.query-opportunities
        with:
          product_line: '{{product_line}}'
      - name: refresh-pbi
        type: call
        call: powerbi-pipeline.trigger-refresh
        with:
          dataset_id: '{{pbi_dataset_id}}'
      - name: send-digest
        type: call
        call: msgraph-sales.send-email
        with:
          to: '{{leadership_email}}'
          subject: '{{product_line}} Pipeline Digest — {{get-pipeline.record_count}} opportunities | ${{get-pipeline.total_premium}}'
          body: 'Open pipeline for {{product_line}}: {{get-pipeline.record_count}} opportunities totaling ${{get-pipeline.total_premium}} gross written premium. Power BI refreshed.'
  consumes:
  - type: http
    namespace: salesforce-pipeline
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query
      inputParameters:
      - name: product_line
        in: query
      operations:
      - name: query-opportunities
        method: GET
  - type: http
    namespace: powerbi-pipeline
    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
  - type: http
    namespace: msgraph-sales
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /users/{{sender}}/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → sales-pipeline-executive-digest.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → azure-resource-group-cost-check.yml

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:
  - insurance
  - 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/aig/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
Open in Framework → View in Fleet → linkedin-talent-brand-performance-report.yml

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:
  - insurance
  - 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://aig.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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → executive-kpi-dashboard-digest.yml

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:
  - insurance
  - 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://aig.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://aig.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
Open in Framework → View in Fleet → regulatory-filing-deadline-monitor.yml

Checks Microsoft 365 license utilization for the organization, returning assigned and consumed license counts.

naftiko: '0.5'
info:
  label: Microsoft 365 License Utilization Check
  description: Checks Microsoft 365 license utilization for the organization, returning assigned and consumed license counts.
  tags:
  - it-operations
  - microsoft-365
  - license-management
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: license-ops
    port: 8080
    tools:
    - name: get-license-usage
      description: Return the total assigned and consumed Microsoft 365 license counts for the organization.
      inputParameters:
      - name: sku_part_number
        in: body
        type: string
        description: Microsoft 365 SKU part number.
      call: msgraph.get-subscribed-skus
      with:
        sku: '{{sku_part_number}}'
      outputParameters:
      - name: assigned
        type: integer
        mapping: $.consumedUnits
      - name: total
        type: integer
        mapping: $.prepaidUnits.enabled
  consumes:
  - namespace: msgraph
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: subscribed-skus
      path: /subscribedSkus
      operations:
      - name: get-subscribed-skus
        method: GET
Open in Framework → View in Fleet → microsoft-365-license-utilization-check.yml

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:
  - insurance
  - 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://aig.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://aig.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
Open in Framework → View in Fleet → it-security-vulnerability-remediation-workflow.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → terraform-workspace-state-check.yml

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:
  - insurance
  - 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/aig
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: cicd-ops
      path: /{{id}}
      operations:
      - name: get-run
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status-lookup.yml

Retrieves the current status of an SAP Ariba sourcing event, returning phase, participant count, and close date.

naftiko: '0.5'
info:
  label: SAP Ariba Sourcing Event Status
  description: Retrieves the current status of an SAP Ariba sourcing event, returning phase, participant count, and close date.
  tags:
  - procurement
  - sap-ariba
  - sourcing
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: sourcing-ops
    port: 8080
    tools:
    - name: get-sourcing-status
      description: Given an Ariba sourcing event ID, return the event phase, participant count, and scheduled close date.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: SAP Ariba sourcing event ID.
      call: ariba.get-event
      with:
        eventId: '{{event_id}}'
      outputParameters:
      - name: phase
        type: string
        mapping: $.Phase
      - name: participants
        type: integer
        mapping: $.ParticipantCount
      - name: close_date
        type: string
        mapping: $.CloseDate
  consumes:
  - namespace: ariba
    type: http
    baseUri: https://openapi.ariba.com/api/sourcing/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: events
      path: /events/{{eventId}}
      operations:
      - name: get-event
        method: GET
Open in Framework → View in Fleet → sap-ariba-sourcing-event-status.yml

When a new employee is created in Workday, opens a ServiceNow onboarding ticket, provisions their Okta account, and sends a Microsoft Teams welcome message.

naftiko: '0.5'
info:
  label: New Hire Onboarding Orchestration
  description: When a new employee is created in Workday, opens a ServiceNow onboarding ticket, provisions their Okta account, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - okta
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-employee-onboarding
      description: Given a Workday employee ID and start date, create a ServiceNow onboarding task, provision Okta access, and send a Teams welcome message. Use when HR confirms a new hire in Workday.
      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 YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: create-onboarding-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Onboarding: {{get-employee.first_name}} {{get-employee.last_name}}'
          category: hr_onboarding
          assigned_group: IT_Onboarding
      - name: provision-okta
        type: call
        call: okta.create-user
        with:
          firstName: '{{get-employee.first_name}}'
          lastName: '{{get-employee.last_name}}'
          email: '{{get-employee.work_email}}'
          login: '{{get-employee.work_email}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: 'Welcome to AIG, {{get-employee.first_name}}! Your onboarding ticket is {{create-onboarding-ticket.number}}. Start date: {{start_date}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: okta
    baseUri: https://aig.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-hire-onboarding-orchestration.yml

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

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:
  - insurance
  - 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/aig/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
Open in Framework → View in Fleet → workday-employee-profile-lookup.yml

Converts a Salesforce lead to a quote by enriching the lead, creating a quote request in ServiceNow, and notifying the producer via Teams.

naftiko: '0.5'
info:
  label: Salesforce Lead-to-Quote Conversion
  description: Converts a Salesforce lead to a quote by enriching the lead, creating a quote request in ServiceNow, and notifying the producer via Teams.
  tags:
  - insurance
  - sales
  - salesforce
  - servicenow
  - crm
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: convert-lead-to-quote
      description: Given a Salesforce lead ID, enrich the lead, create a ServiceNow quote request, and notify the producer.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: Salesforce lead ID.
      - name: producer_upn
        in: body
        type: string
        description: Producer UPN.
      steps:
      - name: get-lead
        type: call
        call: sf.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: create-quote
        type: call
        call: snow.create-quote
        with:
          short_description: 'Quote: {{get-lead.Company}}'
          description: 'Industry: {{get-lead.Industry}} | Revenue: {{get-lead.AnnualRevenue}}'
      - name: notify-producer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{producer_upn}}'
          text: 'Lead converted: {{get-lead.Company}}. Quote: {{create-quote.number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      operations:
      - name: get-lead
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: quotes
      path: /table/u_quote_request
      operations:
      - name: create-quote
        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
Open in Framework → View in Fleet → salesforce-lead-to-quote-conversion.yml

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:
  - insurance
  - 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://aig-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
Open in Framework → View in Fleet → sap-general-ledger-balance-check.yml

Generates a quarterly loss ratio report by querying Snowflake, refreshing Power BI, and distributing via Teams.

naftiko: '0.5'
info:
  label: Quarterly Loss Ratio Report Workflow
  description: Generates a quarterly loss ratio report by querying Snowflake, refreshing Power BI, and distributing via Teams.
  tags:
  - insurance
  - actuarial
  - analytics
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: actuarial-ops
    port: 8080
    tools:
    - name: generate-loss-ratio
      description: Given a quarter and LOB, query Snowflake, trigger Power BI refresh, and send to actuarial channel.
      inputParameters:
      - name: quarter
        in: body
        type: string
        description: Quarter.
      - name: lob
        in: body
        type: string
        description: Line of business.
      - name: channel_id
        in: body
        type: string
        description: Teams channel.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          query: SELECT SUM(claim_amount) as losses FROM claims_fact WHERE quarter='{{quarter}}' AND lob='{{lob}}'
      - name: refresh-pbi
        type: call
        call: powerbi.trigger-refresh
        with:
          datasetId: loss-ratio-{{lob}}
      - name: notify-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: '{{channel_id}}'
          text: '{{quarter}} Loss Ratio for {{lob}} ready. Losses: {{query-data.losses}}. Dashboard refreshed.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.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
      operations:
      - name: trigger-refresh
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channels
      path: /teams/channels/{{channel_id}}/messages
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → quarterly-loss-ratio-report-workflow.yml

Reconciles broker commissions by pulling payment data from SAP, comparing against Salesforce policy data, and emailing discrepancy reports.

naftiko: '0.5'
info:
  label: Broker Commission Reconciliation Workflow
  description: Reconciles broker commissions by pulling payment data from SAP, comparing against Salesforce policy data, and emailing discrepancy reports.
  tags:
  - insurance
  - finance
  - commissions
  - sap
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: commission-ops
    port: 8080
    tools:
    - name: reconcile-commissions
      description: Given a broker ID and period, pull SAP commission payments, compare with Salesforce, and send a reconciliation report.
      inputParameters:
      - name: broker_id
        in: body
        type: string
        description: Broker ID.
      - name: period
        in: body
        type: string
        description: Commission period.
      - name: finance_email
        in: body
        type: string
        description: Finance contact email.
      steps:
      - name: get-payments
        type: call
        call: sap-fi.get-commissions
        with:
          broker_id: '{{broker_id}}'
          period: '{{period}}'
      - name: get-earned
        type: call
        call: sf.get-earned
        with:
          broker_id: '{{broker_id}}'
          period: '{{period}}'
      - name: send-report
        type: call
        call: msgraph.send-mail
        with:
          to: '{{finance_email}}'
          subject: 'Commission Reconciliation: {{broker_id}} — {{period}}'
          body: 'Paid: {{get-payments.total}} | Earned: {{get-earned.total}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: commissions
      path: /A_JournalEntry?$filter=BrokerID eq '{{broker_id}}'
      inputParameters:
      - name: broker_id
        in: query
      operations:
      - name: get-commissions
        method: GET
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /query/?q=SELECT+SUM(Commission__c)+FROM+Policy__c+WHERE+Broker_ID__c='{{broker_id}}'
      inputParameters:
      - name: broker_id
        in: query
      operations:
      - name: get-earned
        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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → broker-commission-reconciliation-workflow.yml

When a GitHub Actions workflow fails on a protected branch, creates a Jira bug, logs a Datadog deployment marker, and alerts the engineering Teams channel.

naftiko: '0.5'
info:
  label: GitHub CI/CD Pipeline Failure Handler
  description: When a GitHub Actions workflow fails on a protected branch, creates a Jira bug, logs a Datadog deployment marker, and alerts the engineering Teams channel.
  tags:
  - devops
  - cicd
  - github
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: devops-ci
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions failure event with repo, branch, commit, and workflow details, open a Jira bug, create a Datadog error event, and alert the engineering Teams channel. Use when a protected-branch CI pipeline fails on an AIG platform repo.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository full name.
      - name: branch
        in: body
        type: string
        description: Branch where the failure occurred.
      - name: commit_sha
        in: body
        type: string
        description: Failing commit SHA.
      - name: workflow_name
        in: body
        type: string
        description: Name of the failed workflow.
      - name: run_url
        in: body
        type: string
        description: URL to the failed run.
      - name: eng_channel_id
        in: body
        type: string
        description: Engineering Teams channel ID.
      steps:
      - name: create-bug
        type: call
        call: jira-eng.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}'
          description: 'Commit: {{commit_sha}}

            Run: {{run_url}}'
      - name: log-dd-event
        type: call
        call: datadog-ci.create-event
        with:
          title: 'CI Failure: {{repo}} — {{branch}}'
          text: Commit {{commit_sha}} | Workflow {{workflow_name}}
          alert_type: error
      - name: alert-eng
        type: call
        call: msteams-eng.post-channel-message
        with:
          channel_id: '{{eng_channel_id}}'
          text: 'CI Failure: {{repo}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{run_url}}'
  consumes:
  - type: http
    namespace: jira-eng
    baseUri: https://aig.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-ci
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams-eng
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-handler.yml

When a policy payment is overdue, retrieves policyholder details from Salesforce, sends a retention email, and logs the outreach in ServiceNow.

naftiko: '0.5'
info:
  label: Policy Lapse Prevention Outreach Workflow
  description: When a policy payment is overdue, retrieves policyholder details from Salesforce, sends a retention email, and logs the outreach in ServiceNow.
  tags:
  - insurance
  - retention
  - salesforce
  - servicenow
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: retention-ops
    port: 8080
    tools:
    - name: prevent-policy-lapse
      description: Given a policy number and days overdue, look up the policyholder, send a retention email, and log the outreach.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: days_overdue
        in: body
        type: integer
        description: Days overdue.
      steps:
      - name: get-policyholder
        type: call
        call: sf.get-account
        with:
          policy_number: '{{policy_number}}'
      - name: send-email
        type: call
        call: msgraph.send-mail
        with:
          to: '{{get-policyholder.PersonEmail}}'
          subject: Your policy {{policy_number}} — Action Needed
          body: Payment is {{days_overdue}} days overdue.
      - name: log-outreach
        type: call
        call: snow.create-activity
        with:
          short_description: 'Lapse prevention: {{policy_number}}'
          description: 'Days overdue: {{days_overdue}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/PolicyNumber__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-account
        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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: activities
      path: /table/u_retention_activity
      operations:
      - name: create-activity
        method: POST
Open in Framework → View in Fleet → policy-lapse-prevention-outreach-workflow.yml

Validates that a large claim falls within reinsurance treaty limits by checking Snowflake for terms, SAP for exposure, and logging in ServiceNow.

naftiko: '0.5'
info:
  label: Reinsurance Treaty Compliance Validator
  description: Validates that a large claim falls within reinsurance treaty limits by checking Snowflake for terms, SAP for exposure, and logging in ServiceNow.
  tags:
  - insurance
  - reinsurance
  - compliance
  - snowflake
  - sap
capability:
  exposes:
  - type: mcp
    namespace: reinsurance-ops
    port: 8080
    tools:
    - name: check-treaty-compliance
      description: Given a claim number and amount, look up treaty terms in Snowflake, validate exposure in SAP, and log the compliance check.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Claim number.
      - name: claim_amount
        in: body
        type: number
        description: Claim amount.
      - name: treaty_id
        in: body
        type: string
        description: Treaty ID.
      steps:
      - name: get-treaty
        type: call
        call: snowflake.query-treaty
        with:
          treaty_id: '{{treaty_id}}'
      - name: check-exposure
        type: call
        call: sap-fi.get-exposure
        with:
          treaty_id: '{{treaty_id}}'
      - name: log-check
        type: call
        call: snow.create-record
        with:
          short_description: 'Treaty compliance: {{claim_number}}'
          description: 'Amount: {{claim_amount}} | Treaty: {{treaty_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-treaty
        method: POST
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: exposure
      path: /A_JournalEntry?$filter=TreatyID eq '{{treaty_id}}'
      inputParameters:
      - name: treaty_id
        in: query
      operations:
      - name: get-exposure
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: compliance
      path: /table/u_reinsurance_compliance
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → reinsurance-treaty-compliance-validator.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → conference-room-booking-notification.yml

Retrieves compensation band details from Workday for a specified job profile, returning min, mid, and max salary.

naftiko: '0.5'
info:
  label: Workday Compensation Band Lookup
  description: Retrieves compensation band details from Workday for a specified job profile, returning min, mid, and max salary.
  tags:
  - hr
  - workday
  - compensation
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: comp-ops
    port: 8080
    tools:
    - name: get-comp-band
      description: Given a job profile ID, return the salary band minimum, midpoint, and maximum.
      inputParameters:
      - name: job_profile_id
        in: body
        type: string
        description: Workday job profile ID.
      call: workday.get-comp-band
      with:
        profile: '{{job_profile_id}}'
      outputParameters:
      - name: min_salary
        type: number
        mapping: $.Compensation_Band.Min
      - name: mid_salary
        type: number
        mapping: $.Compensation_Band.Mid
      - name: max_salary
        type: number
        mapping: $.Compensation_Band.Max
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/aig/Compensation/v40.1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: comp-bands
      path: /compensation-bands/{{profile}}
      operations:
      - name: get-comp-band
        method: GET
Open in Framework → View in Fleet → workday-compensation-band-lookup.yml

Creates a ServiceNow change request for planned maintenance on insurance platform systems and notifies the CAB Teams channel for approval.

naftiko: '0.5'
info:
  label: IT Change Management Request
  description: Creates a ServiceNow change request for planned maintenance on insurance platform systems and notifies the CAB Teams channel for approval.
  tags:
  - itsm
  - change-management
  - servicenow
  - approval
capability:
  exposes:
  - type: mcp
    namespace: change-mgmt
    port: 8080
    tools:
    - name: submit-change-request
      description: Given maintenance details and a planned window, create a ServiceNow change request and notify the CAB Teams channel. Use when scheduling planned maintenance that affects AIG insurance or corporate systems.
      inputParameters:
      - name: short_description
        in: body
        type: string
        description: Brief description of the planned change.
      - name: description
        in: body
        type: string
        description: Full change details including systems affected and rollback plan.
      - name: planned_start
        in: body
        type: string
        description: Planned start time in ISO 8601 format.
      - name: planned_end
        in: body
        type: string
        description: Planned end time in ISO 8601 format.
      - name: cab_channel_id
        in: body
        type: string
        description: CAB Teams channel ID.
      steps:
      - name: create-change
        type: call
        call: servicenow-change.create-change-request
        with:
          short_description: '{{short_description}}'
          description: '{{description}}'
          start_date: '{{planned_start}}'
          end_date: '{{planned_end}}'
      - name: notify-cab
        type: call
        call: msteams-cab.post-channel-message
        with:
          channel_id: '{{cab_channel_id}}'
          text: 'Change Request {{create-change.number}}: {{short_description}} | Window: {{planned_start}} to {{planned_end}} | Awaiting CAB approval'
  consumes:
  - type: http
    namespace: servicenow-change
    baseUri: https://aig.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-cab
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → it-change-management-request.yml

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:
  - insurance
  - 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://aig.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: identity-ops
      path: /{{id}}
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → okta-user-account-status-lookup.yml

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:
  - insurance
  - 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://aig.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://aig.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
Open in Framework → View in Fleet → customer-complaint-escalation-handler.yml

Routes underwriting referrals by checking authority limits in Snowflake, creating a referral task in ServiceNow, and notifying the authorized underwriter via Teams.

naftiko: '0.5'
info:
  label: Underwriting Referral Routing Workflow
  description: Routes underwriting referrals by checking authority limits in Snowflake, creating a referral task in ServiceNow, and notifying the authorized underwriter via Teams.
  tags:
  - insurance
  - underwriting
  - snowflake
  - servicenow
  - workflow
capability:
  exposes:
  - type: mcp
    namespace: uw-ops
    port: 8080
    tools:
    - name: route-uw-referral
      description: Given a submission ID and coverage amount, check authority limits in Snowflake, create a ServiceNow referral, and notify the underwriter in Teams.
      inputParameters:
      - name: submission_id
        in: body
        type: string
        description: Submission ID.
      - name: coverage_amount
        in: body
        type: number
        description: Coverage amount.
      - name: line_of_business
        in: body
        type: string
        description: LOB.
      steps:
      - name: check-authority
        type: call
        call: snowflake.query-authority
        with:
          lob: '{{line_of_business}}'
          amount: '{{coverage_amount}}'
      - name: create-referral
        type: call
        call: snow.create-referral
        with:
          short_description: 'UW Referral: {{submission_id}} — ${{coverage_amount}}'
          description: 'LOB: {{line_of_business}}'
      - name: notify-uw
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{check-authority.authorized_upn}}'
          text: 'UW Referral: {{submission_id}} — ${{coverage_amount}} ({{line_of_business}}). SNOW: {{create-referral.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-authority
        method: POST
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: referrals
      path: /table/u_uw_referral
      operations:
      - name: create-referral
        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
Open in Framework → View in Fleet → underwriting-referral-routing-workflow.yml

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:
  - insurance
  - 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/aig/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://aig.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
Open in Framework → View in Fleet → employee-termination-access-revocation.yml

Enriches an underwriting prospect account in Salesforce with ZoomInfo firmographic and risk-signal data before the underwriting team conducts a policy review.

naftiko: '0.5'
info:
  label: Underwriting Risk Data Enrichment
  description: Enriches an underwriting prospect account in Salesforce with ZoomInfo firmographic and risk-signal data before the underwriting team conducts a policy review.
  tags:
  - underwriting
  - crm
  - salesforce
  - data-enrichment
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: underwriting-ops
    port: 8080
    tools:
    - name: enrich-underwriting-prospect
      description: Given a Salesforce account ID and ZoomInfo company ID, fetch current firmographic data including employee count, revenue, and industry, then update the Salesforce account record. Use before underwriting team conducts policy risk review.
      inputParameters:
      - name: salesforce_account_id
        in: body
        type: string
        description: Salesforce account ID for the underwriting prospect.
      - name: zoominfo_company_id
        in: body
        type: string
        description: ZoomInfo company ID for firmographic lookup.
      - name: underwriter_upn
        in: body
        type: string
        description: Underwriter Teams UPN for enrichment notification.
      steps:
      - name: get-firmographics
        type: call
        call: zoominfo-uw.get-company
        with:
          company_id: '{{zoominfo_company_id}}'
      - name: update-sf-account
        type: call
        call: salesforce-uw.update-account
        with:
          account_id: '{{salesforce_account_id}}'
          employees: '{{get-firmographics.employee_count}}'
          annual_revenue: '{{get-firmographics.revenue}}'
          industry: '{{get-firmographics.industry}}'
          sic_code: '{{get-firmographics.sic_code}}'
      - name: notify-underwriter
        type: call
        call: msteams-uw.send-message
        with:
          recipient_upn: '{{underwriter_upn}}'
          text: 'Account enriched: {{get-firmographics.company_name}} | Employees: {{get-firmographics.employee_count}} | Revenue: ${{get-firmographics.revenue}} | Industry: {{get-firmographics.industry}}'
  consumes:
  - type: http
    namespace: zoominfo-uw
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /company/{{company_id}}
      inputParameters:
      - name: company_id
        in: path
      operations:
      - name: get-company
        method: GET
  - type: http
    namespace: salesforce-uw
    baseUri: https://aig.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-uw
    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
Open in Framework → View in Fleet → underwriting-risk-data-enrichment.yml

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:
  - insurance
  - 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://aig.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: iam-ops
      path: /{{id}}
      operations:
      - name: get-identity
        method: GET
Open in Framework → View in Fleet → sailpoint-identity-governance-lookup.yml

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:
  - insurance
  - 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://aig-splunk.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: security-ops
      path: /{{id}}
      operations:
      - name: run-search
        method: GET
Open in Framework → View in Fleet → splunk-security-event-query.yml

Balances adjuster workloads by querying Salesforce for open claims, checking capacity in Snowflake, and notifying the claims manager in Teams.

naftiko: '0.5'
info:
  label: Claims Adjuster Workload Balancing
  description: Balances adjuster workloads by querying Salesforce for open claims, checking capacity in Snowflake, and notifying the claims manager in Teams.
  tags:
  - insurance
  - claims
  - workforce-management
  - salesforce
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: workload-ops
    port: 8080
    tools:
    - name: balance-workload
      description: Given a claims region, query Salesforce for open claims per adjuster, check capacity thresholds in Snowflake, and notify the manager.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Claims region.
      - name: manager_upn
        in: body
        type: string
        description: Claims manager UPN.
      steps:
      - name: get-workload
        type: call
        call: sf.query-workload
        with:
          region: '{{region}}'
      - name: check-capacity
        type: call
        call: snowflake.check-thresholds
        with:
          region: '{{region}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{manager_upn}}'
          text: 'Workload: {{region}} — {{get-workload.total_open}} open claims, {{get-workload.adjuster_count}} adjusters. Status: {{check-capacity.status}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: workload
      path: /query/?q=SELECT+COUNT(Id),OwnerId+FROM+Case+WHERE+Region__c='{{region}}'
      operations:
      - name: query-workload
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: check-thresholds
        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
Open in Framework → View in Fleet → claims-adjuster-workload-balancing.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → power-bi-dataset-refresh-status-check.yml

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:
  - insurance
  - 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/aig/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
Open in Framework → View in Fleet → workday-open-position-count-check.yml

When GitHub Advanced Security detects a critical CVE in an AIG platform repo, creates a Jira security ticket, logs a Datadog event, and alerts the cybersecurity team in Teams.

naftiko: '0.5'
info:
  label: GitHub Security Vulnerability Triage
  description: When GitHub Advanced Security detects a critical CVE in an AIG platform repo, creates a Jira security ticket, logs a Datadog event, and alerts the cybersecurity team in Teams.
  tags:
  - security
  - github
  - devops
  - jira
  - vulnerability
capability:
  exposes:
  - type: mcp
    namespace: sec-triage
    port: 8080
    tools:
    - name: triage-security-alert
      description: Given a GitHub security alert with CVE, severity, and affected package, create a Jira security ticket, log a Datadog error event, and alert the cybersecurity Teams channel. Use when GitHub Advanced Security finds a critical CVE in an AIG insurance platform repo.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository full name.
      - name: cve_id
        in: body
        type: string
        description: CVE identifier.
      - name: severity
        in: body
        type: string
        description: 'Severity: critical, high, medium, or low.'
      - name: package_name
        in: body
        type: string
        description: Affected package name.
      - name: sec_channel_id
        in: body
        type: string
        description: Cybersecurity Teams channel ID.
      steps:
      - name: create-sec-ticket
        type: call
        call: jira-sec.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: '[{{severity}}] {{cve_id}} in {{repo}} — {{package_name}}'
          description: 'CVE: {{cve_id}} | Package: {{package_name}} | Severity: {{severity}}'
          priority: Highest
      - name: log-event
        type: call
        call: datadog-sec.create-event
        with:
          title: 'Security: {{cve_id}} in {{repo}}'
          text: 'Package {{package_name}} | Severity: {{severity}} | Jira: {{create-sec-ticket.key}}'
          alert_type: error
      - name: alert-sec-team
        type: call
        call: msteams-sec.post-channel-message
        with:
          channel_id: '{{sec_channel_id}}'
          text: 'SECURITY: {{severity}} CVE {{cve_id}} in {{repo}} / {{package_name}} | Jira: {{create-sec-ticket.key}} | Datadog: {{log-event.url}}'
  consumes:
  - type: http
    namespace: jira-sec
    baseUri: https://aig.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-sec
    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-sec
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → github-security-vulnerability-triage.yml

When a policy is within 60 days of expiration, enriches the Salesforce account with ZoomInfo data, creates a renewal opportunity, and alerts the account manager in Teams.

naftiko: '0.5'
info:
  label: Policy Renewal Outreach Workflow
  description: When a policy is within 60 days of expiration, enriches the Salesforce account with ZoomInfo data, creates a renewal opportunity, and alerts the account manager in Teams.
  tags:
  - sales
  - crm
  - salesforce
  - insurance
  - renewal
capability:
  exposes:
  - type: mcp
    namespace: policy-renewal
    port: 8080
    tools:
    - name: trigger-renewal-outreach
      description: Given a Salesforce account ID and policy expiration date, enrich the account from ZoomInfo, create a renewal opportunity in Salesforce, and notify the account manager in Teams. Use when policy records show expiration within 60 days.
      inputParameters:
      - name: salesforce_account_id
        in: body
        type: string
        description: Salesforce account ID for the policyholder.
      - name: policy_expiry_date
        in: body
        type: string
        description: Policy expiration date in YYYY-MM-DD format.
      - name: account_manager_upn
        in: body
        type: string
        description: Account manager Teams UPN.
      - name: zoominfo_company_id
        in: body
        type: string
        description: ZoomInfo company ID for enrichment.
      steps:
      - name: enrich-account
        type: call
        call: zoominfo.get-company
        with:
          company_id: '{{zoominfo_company_id}}'
      - name: update-sf-account
        type: call
        call: salesforce-acct.update-account
        with:
          account_id: '{{salesforce_account_id}}'
          employees: '{{enrich-account.employee_count}}'
          annual_revenue: '{{enrich-account.revenue}}'
      - name: create-renewal-opp
        type: call
        call: salesforce-opps.create-opportunity
        with:
          account_id: '{{salesforce_account_id}}'
          name: Policy Renewal — {{enrich-account.company_name}} — {{policy_expiry_date}}
          stage_name: Renewal Outreach
          close_date: '{{policy_expiry_date}}'
      - name: alert-account-manager
        type: call
        call: msteams-renewal.send-message
        with:
          recipient_upn: '{{account_manager_upn}}'
          text: 'Policy renewal due {{policy_expiry_date}} for {{enrich-account.company_name}}. Opportunity created: {{create-renewal-opp.id}}. Employees: {{enrich-account.employee_count}}'
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /company/{{company_id}}
      inputParameters:
      - name: company_id
        in: path
      operations:
      - name: get-company
        method: GET
  - type: http
    namespace: salesforce-acct
    baseUri: https://aig.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: salesforce-opps
    baseUri: https://aig.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-renewal
    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
Open in Framework → View in Fleet → policy-renewal-outreach-workflow.yml

Processes a policy endorsement by updating Salesforce, adjusting premium in SAP, and emailing confirmation to the broker.

naftiko: '0.5'
info:
  label: Policy Endorsement Processing Workflow
  description: Processes a policy endorsement by updating Salesforce, adjusting premium in SAP, and emailing confirmation to the broker.
  tags:
  - insurance
  - policy-management
  - salesforce
  - sap
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: endorsement-ops
    port: 8080
    tools:
    - name: process-endorsement
      description: Given a policy number and endorsement type, update Salesforce, post SAP premium adjustment, and send confirmation.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: endorsement_type
        in: body
        type: string
        description: Endorsement type.
      - name: effective_date
        in: body
        type: string
        description: Effective date.
      - name: broker_email
        in: body
        type: string
        description: Broker email.
      steps:
      - name: update-policy
        type: call
        call: sf.update-policy
        with:
          policy_number: '{{policy_number}}'
          endorsement_type: '{{endorsement_type}}'
      - name: adjust-premium
        type: call
        call: sap-fi.post-adjustment
        with:
          policy_number: '{{policy_number}}'
          effective_date: '{{effective_date}}'
      - name: send-confirmation
        type: call
        call: msgraph.send-mail
        with:
          to: '{{broker_email}}'
          subject: 'Endorsement: {{policy_number}} — {{endorsement_type}}'
          body: 'Effective {{effective_date}}. Adjustment: {{adjust-premium.amount}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/InsurancePolicy__c/PolicyNumber__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: update-policy
        method: PATCH
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: adjustments
      path: /A_JournalEntry
      operations:
      - name: post-adjustment
        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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → policy-endorsement-processing-workflow.yml

Looks up a claim investigation record in ServiceNow by claim number and returns status, assigned adjuster, and priority.

naftiko: '0.5'
info:
  label: ServiceNow Claim Record Lookup
  description: Looks up a claim investigation record in ServiceNow by claim number and returns status, assigned adjuster, and priority.
  tags:
  - insurance
  - insurance
  - claims
  - servicenow
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: claims-ops
    port: 8080
    tools:
    - name: get-claim-record
      description: Given a claim number, return the ServiceNow investigation record status, assigned adjuster, and priority level.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Insurance claim number.
      call: snow.get-claim
      with:
        number: '{{claim_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.result.state
      - name: adjuster
        type: string
        mapping: $.result.assigned_to.display_value
      - name: priority
        type: string
        mapping: $.result.priority
  consumes:
  - namespace: snow
    type: http
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: claims-ops
      path: /{{id}}
      operations:
      - name: get-claim
        method: GET
Open in Framework → View in Fleet → servicenow-claim-record-lookup.yml

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:
  - insurance
  - 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.aig.com/v1
    authentication:
      type: bearer
      token: $secrets.api_token
    resources:
    - name: expense-ops
      path: /{{id}}
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → sap-concur-expense-report-status-lookup.yml

Retrieves a complex claims document from ServiceNow, sends it to Anthropic Claude for intelligent summarization, and posts the AI summary to the claims adjuster in Teams.

naftiko: '0.5'
info:
  label: AI-Assisted Claims Document Summarization
  description: Retrieves a complex claims document from ServiceNow, sends it to Anthropic Claude for intelligent summarization, and posts the AI summary to the claims adjuster in Teams.
  tags:
  - ai
  - claims
  - servicenow
  - anthropic
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: ai-claims
    port: 8080
    tools:
    - name: summarize-claims-document
      description: Given a ServiceNow claim record ID, retrieve the claim description and attached documents, send to Anthropic Claude for an intelligent claim summary including coverage assessment and recommended next steps. Post the summary to the adjuster in Teams. Use when adjusters need rapid comprehension of complex or lengthy claims.
      inputParameters:
      - name: claim_record_id
        in: body
        type: string
        description: ServiceNow claim record sys_id.
      - name: adjuster_upn
        in: body
        type: string
        description: Claims adjuster Teams UPN.
      steps:
      - name: get-claim
        type: call
        call: servicenow-ai.get-record
        with:
          sys_id: '{{claim_record_id}}'
      - name: generate-summary
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          prompt: 'Summarize this insurance claim for an AIG claims adjuster. Include: 1) key facts of the loss, 2) likely coverage implications, 3) recommended immediate next steps. Claim: {{get-claim.description}}'
      - name: notify-adjuster
        type: call
        call: msteams-adj.send-message
        with:
          recipient_upn: '{{adjuster_upn}}'
          text: 'AI Claim Summary for {{claim_record_id}}: {{generate-summary.content[0].text}}'
  consumes:
  - type: http
    namespace: servicenow-ai
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: claim-records
      path: /table/u_claims_investigation/{{sys_id}}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: get-record
        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-adj
    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
Open in Framework → View in Fleet → ai-assisted-claims-document-summarization.yml

When a Workday role change is approved, updates Okta group memberships, adjusts the Salesforce user profile, and creates an IT ServiceNow follow-up task.

naftiko: '0.5'
info:
  label: Employee Role Change Access Provisioning
  description: When a Workday role change is approved, updates Okta group memberships, adjusts the Salesforce user profile, and creates an IT ServiceNow follow-up task.
  tags:
  - hr
  - identity
  - workday
  - okta
  - provisioning
capability:
  exposes:
  - type: mcp
    namespace: role-provisioning
    port: 8080
    tools:
    - name: process-role-change
      description: Given a Workday employee ID, new role, and Okta group changes, update Okta group membership, update the Salesforce user profile with the new title, and create a ServiceNow task for IT access follow-up. Use when an AIG employee's role or department changes.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: Workday worker ID of the employee.
      - name: new_role
        in: body
        type: string
        description: New job title or role.
      - name: okta_add_group_id
        in: body
        type: string
        description: Okta group ID to add the employee to for the new role.
      - name: salesforce_user_id
        in: body
        type: string
        description: Salesforce user ID to update.
      steps:
      - name: get-worker
        type: call
        call: workday-rc.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: add-to-group
        type: call
        call: okta-rc.add-user-to-group
        with:
          group_id: '{{okta_add_group_id}}'
      - name: update-sf-user
        type: call
        call: salesforce-rc.update-user
        with:
          user_id: '{{salesforce_user_id}}'
          title: '{{new_role}}'
      - name: create-it-task
        type: call
        call: servicenow-rc.create-task
        with:
          short_description: 'Role change: {{get-worker.full_name}} → {{new_role}}'
          category: access_management
          assigned_group: IT_Access
  consumes:
  - type: http
    namespace: workday-rc
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-rc
    baseUri: https://aig.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: group-users
      path: /groups/{{group_id}}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: add-user-to-group
        method: PUT
  - type: http
    namespace: salesforce-rc
    baseUri: https://aig.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-rc
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → employee-role-change-access-provisioning.yml

Reviews reserve adequacy by pulling reserves from SAP, comparing development in Snowflake, and alerting actuaries in Teams.

naftiko: '0.5'
info:
  label: Claims Reserve Adequacy Review Workflow
  description: Reviews reserve adequacy by pulling reserves from SAP, comparing development in Snowflake, and alerting actuaries in Teams.
  tags:
  - insurance
  - actuarial
  - claims
  - sap
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: reserve-review
    port: 8080
    tools:
    - name: review-reserve-adequacy
      description: Given an LOB and date, pull booked reserves from SAP, compare with Snowflake factors, and alert the actuarial team.
      inputParameters:
      - name: line_of_business
        in: body
        type: string
        description: LOB.
      - name: valuation_date
        in: body
        type: string
        description: Valuation date.
      - name: actuary_channel_id
        in: body
        type: string
        description: Actuarial Teams channel.
      steps:
      - name: get-reserves
        type: call
        call: sap-fi.get-reserves
        with:
          lob: '{{line_of_business}}'
          date: '{{valuation_date}}'
      - name: get-development
        type: call
        call: snowflake.query-development
        with:
          lob: '{{line_of_business}}'
      - name: alert-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: '{{actuary_channel_id}}'
          text: 'Reserve review: {{line_of_business}} — Booked: ${{get-reserves.total}} | Indicated: ${{get-development.indicated}}'
  consumes:
  - type: http
    namespace: sap-fi
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: reserves
      path: /A_JournalEntry?$filter=LOB eq '{{lob}}'
      operations:
      - name: get-reserves
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-development
        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
Open in Framework → View in Fleet → claims-reserve-adequacy-review-workflow.yml

At sprint close, retrieves Jira velocity metrics, refreshes the Power BI agile dashboard, and posts a sprint summary to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Digest
  description: At sprint close, retrieves Jira velocity metrics, refreshes the Power BI agile dashboard, and posts a sprint summary to the engineering Teams channel.
  tags:
  - devops
  - jira
  - agile
  - reporting
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: sprint-reporting
    port: 8080
    tools:
    - name: publish-sprint-velocity
      description: Given a Jira board and sprint ID, retrieve completed story points, refresh the Power BI agile dashboard, and post the sprint summary to the engineering Teams channel. Use at each sprint close to communicate velocity.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira software board ID.
      - name: sprint_id
        in: body
        type: string
        description: Completed sprint ID.
      - name: pbi_dataset_id
        in: body
        type: string
        description: Power BI dataset ID for the agile dashboard.
      - name: eng_channel_id
        in: body
        type: string
        description: Engineering Teams channel ID.
      steps:
      - name: get-sprint-report
        type: call
        call: jira-agile.get-sprint-report
        with:
          board_id: '{{board_id}}'
          sprint_id: '{{sprint_id}}'
      - name: refresh-pbi-sprint
        type: call
        call: powerbi-sprint.trigger-refresh
        with:
          dataset_id: '{{pbi_dataset_id}}'
      - name: post-sprint-summary
        type: call
        call: msteams-sprint.post-channel-message
        with:
          channel_id: '{{eng_channel_id}}'
          text: 'Sprint {{sprint_id}} closed. Velocity: {{get-sprint-report.completed_points}} pts | Completion: {{get-sprint-report.completion_rate}}% | Dashboard refreshed.'
  consumes:
  - type: http
    namespace: jira-agile
    baseUri: https://aig.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: sprint-issues
      path: /board/{{board_id}}/sprint/{{sprint_id}}/issue
      inputParameters:
      - name: board_id
        in: path
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint-report
        method: GET
  - type: http
    namespace: powerbi-sprint
    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
  - type: http
    namespace: msteams-sprint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → jira-sprint-velocity-digest.yml

Auto-adjudicates travel claims by verifying coverage in Salesforce, processing payment in SAP, and updating the claim status.

naftiko: '0.5'
info:
  label: Travel Insurance Auto-Adjudication Workflow
  description: Auto-adjudicates travel claims by verifying coverage in Salesforce, processing payment in SAP, and updating the claim status.
  tags:
  - insurance
  - claims
  - travel
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: travel-claims
    port: 8080
    tools:
    - name: auto-adjudicate-travel
      description: Given a travel claim number, type, and amount, verify coverage, process payment, and update status.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Claim number.
      - name: claim_type
        in: body
        type: string
        description: Claim type.
      - name: claim_amount
        in: body
        type: number
        description: Claim amount.
      steps:
      - name: verify-coverage
        type: call
        call: sf.get-travel-policy
        with:
          claim_number: '{{claim_number}}'
      - name: process-payment
        type: call
        call: sap-fi.post-payment
        with:
          claim_number: '{{claim_number}}'
          amount: '{{claim_amount}}'
      - name: update-case
        type: call
        call: sf.update-claim
        with:
          claim_number: '{{claim_number}}'
          status: Paid
          payment_ref: '{{process-payment.document_number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: travel-claims
      path: /sobjects/Travel_Claim__c/ClaimNumber__c/{{claim_number}}
      operations:
      - name: get-travel-policy
        method: GET
  - type: http
    namespace: sap-fi
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: payments
      path: /A_JournalEntry
      operations:
      - name: post-payment
        method: POST
Open in Framework → View in Fleet → travel-insurance-auto-adjudication-workflow.yml

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:
  - insurance
  - 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://aig-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://aig.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
Open in Framework → View in Fleet → sap-invoice-three-way-match-workflow.yml

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:
  - insurance
  - 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://aig.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://aig.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
Open in Framework → View in Fleet → github-dependabot-alert-handler.yml

Validates incoming SAP Ariba invoices against open purchase orders and routes discrepancies to the accounts payable team for resolution.

naftiko: '0.5'
info:
  label: SAP Ariba Invoice Validation
  description: Validates incoming SAP Ariba invoices against open purchase orders and routes discrepancies to the accounts payable team for resolution.
  tags:
  - finance
  - procurement
  - sap-ariba
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: ap-validation
    port: 8080
    tools:
    - name: validate-supplier-invoice
      description: Given an SAP Ariba invoice ID and corresponding PO number, fetch both records, compare totals for three-way match, and create a ServiceNow task if a discrepancy is found. Use for incoming supplier invoice processing.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: SAP Ariba invoice ID.
      - name: po_number
        in: body
        type: string
        description: SAP purchase order number for three-way match.
      steps:
      - name: get-invoice
        type: call
        call: ariba.get-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: get-po
        type: call
        call: sap-po.get-purchase-order
        with:
          po_number: '{{po_number}}'
      - name: create-approval-task
        type: call
        call: servicenow-ap.create-task
        with:
          short_description: 'Invoice match review: {{invoice_id}} vs PO {{po_number}}'
          description: 'Invoice: ${{get-invoice.total_amount}} | PO: ${{get-po.total_amount}} | Vendor: {{get-invoice.vendor_name}}'
          assigned_group: AP_Finance
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/invoice/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: invoices
      path: /invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
  - type: http
    namespace: sap-po
    baseUri: https://aig-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-ap
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → sap-ariba-invoice-validation.yml

Fetches a GitHub repository by name and returns the default branch, open issue count, and last push timestamp.

naftiko: '0.5'
info:
  label: GitHub Repository Status Check
  description: Fetches a GitHub repository by name and returns the default branch, open issue count, and last push timestamp.
  tags:
  - insurance
  - engineering
  - github
  - devops
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-repo-status
      description: Given a GitHub repository full name, return the default branch and last push timestamp.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository full name.
      call: github.get-repo
      with:
        repo: '{{repo_name}}'
      outputParameters:
      - name: default_branch
        type: string
        mapping: $.default_branch
      - name: last_push
        type: string
        mapping: $.pushed_at
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dev-ops
      path: /{{id}}
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-status-check.yml

Schedules property inspections by pulling policy details from Salesforce, creating a task in ServiceNow, and notifying the inspector via Teams.

naftiko: '0.5'
info:
  label: Commercial Property Inspection Scheduler
  description: Schedules property inspections by pulling policy details from Salesforce, creating a task in ServiceNow, and notifying the inspector via Teams.
  tags:
  - insurance
  - property
  - underwriting
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: inspection-ops
    port: 8080
    tools:
    - name: schedule-inspection
      description: Given a policy number and inspection type, retrieve property details, create a ServiceNow inspection task, and notify the inspector.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: inspection_type
        in: body
        type: string
        description: Inspection type.
      - name: inspector_upn
        in: body
        type: string
        description: Inspector UPN.
      steps:
      - name: get-property
        type: call
        call: sf.get-property
        with:
          policy_number: '{{policy_number}}'
      - name: create-task
        type: call
        call: snow.create-task
        with:
          short_description: 'Inspection: {{policy_number}} — {{inspection_type}}'
          description: 'Address: {{get-property.address}}'
      - name: notify-inspector
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{inspector_upn}}'
          text: 'Inspection: {{inspection_type}} at {{get-property.address}} — Policy {{policy_number}}. SNOW: {{create-task.number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: properties
      path: /sobjects/Property_Risk__c/PolicyNumber__c/{{policy_number}}
      operations:
      - name: get-property
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/u_inspection_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
Open in Framework → View in Fleet → commercial-property-inspection-scheduler.yml

Scans SAP Ariba for supplier contracts expiring within 90 days, creates Jira procurement tasks, and emails contract owners.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Contract Renewal Alerts
  description: Scans SAP Ariba for supplier contracts expiring within 90 days, creates Jira procurement tasks, and emails contract owners.
  tags:
  - procurement
  - contract-management
  - sap-ariba
  - jira
capability:
  exposes:
  - type: mcp
    namespace: contract-renewal
    port: 8080
    tools:
    - name: alert-expiring-contracts
      description: Given a look-ahead window, fetch supplier contracts expiring from SAP Ariba and create a Jira renewal task for each. Use monthly to proactively manage AIG's vendor and reinsurer contract renewals.
      inputParameters:
      - name: days_ahead
        in: body
        type: integer
        description: Number of days ahead to scan for expiring contracts.
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for procurement renewal tasks.
      steps:
      - name: get-expiring
        type: call
        call: ariba-renewal.get-expiring-contracts
        with:
          days_ahead: '{{days_ahead}}'
      - name: create-renewal-task
        type: call
        call: jira-contracts.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Task
          summary: Supplier contract renewals due within {{days_ahead}} days
          description: 'Expiring contracts: {{get-expiring.contract_ids}}'
  consumes:
  - type: http
    namespace: ariba-renewal
    baseUri: https://openapi.ariba.com/api/contract/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: contracts
      path: /contracts
      inputParameters:
      - name: days_ahead
        in: query
      operations:
      - name: get-expiring-contracts
        method: GET
  - type: http
    namespace: jira-contracts
    baseUri: https://aig.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
Open in Framework → View in Fleet → sap-ariba-supplier-contract-renewal-alerts.yml

Generates policyholder documents by pulling policy data from Salesforce, creating a DocuSign envelope, and logging in ServiceNow.

naftiko: '0.5'
info:
  label: Policyholder Document Generation Workflow
  description: Generates policyholder documents by pulling policy data from Salesforce, creating a DocuSign envelope, and logging in ServiceNow.
  tags:
  - insurance
  - document-management
  - salesforce
  - docusign
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: doc-gen
    port: 8080
    tools:
    - name: generate-policy-documents
      description: Given a policy number and document type, retrieve policy details, create a DocuSign envelope, and log in ServiceNow.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: document_type
        in: body
        type: string
        description: Document type.
      - name: recipient_email
        in: body
        type: string
        description: Recipient email.
      steps:
      - name: get-policy
        type: call
        call: sf.get-policy-details
        with:
          policy_number: '{{policy_number}}'
      - name: create-envelope
        type: call
        call: docusign.create-envelope
        with:
          recipient_email: '{{recipient_email}}'
          subject: '{{document_type}} — {{policy_number}}'
      - name: log-task
        type: call
        call: snow.create-task
        with:
          short_description: 'Doc: {{document_type}} — {{policy_number}}'
          description: 'DocuSign: {{create-envelope.envelopeId}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/InsurancePolicy__c/PolicyNumber__c/{{policy_number}}
      operations:
      - name: get-policy-details
        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/{{accountId}}/envelopes
      operations:
      - name: create-envelope
        method: POST
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/u_document_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → policyholder-document-generation-workflow.yml

Retrieves current headcount and payroll cost by department and cost center from Workday for finance and HR reporting.

naftiko: '0.5'
info:
  label: Workday Headcount and Payroll Snapshot
  description: Retrieves current headcount and payroll cost by department and cost center from Workday for finance and HR reporting.
  tags:
  - hr
  - finance
  - payroll
  - workday
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-finance
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns headcount and payroll cost data grouped by department and cost center from Workday as of the specified date. Use for monthly finance reviews and workforce planning.
      inputParameters:
      - name: as_of_date
        in: body
        type: string
        description: Snapshot date in YYYY-MM-DD format.
      call: workday-hcm.get-headcount
      with:
        effective_date: '{{as_of_date}}'
      outputParameters:
      - name: total_headcount
        type: string
        mapping: $.Report_Entry[0].Total_Headcount
      - name: total_payroll_cost
        type: string
        mapping: $.Report_Entry[0].Total_Payroll_Cost
  consumes:
  - type: http
    namespace: workday-hcm
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: headcount
      path: /reports/headcount_by_department
      inputParameters:
      - name: effective_date
        in: query
      operations:
      - name: get-headcount
        method: GET
Open in Framework → View in Fleet → workday-headcount-and-payroll-snapshot.yml

When Datadog fires a critical alert on an insurance platform system, opens a P1 ServiceNow incident, pages the on-call engineer via PagerDuty, and posts to the IT war-room Teams channel.

naftiko: '0.5'
info:
  label: IT P1 Incident Triage and Escalation
  description: When Datadog fires a critical alert on an insurance platform system, opens a P1 ServiceNow incident, pages the on-call engineer via PagerDuty, and posts to the IT war-room Teams channel.
  tags:
  - itsm
  - incident-response
  - datadog
  - pagerduty
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-p1-ops
    port: 8080
    tools:
    - name: handle-critical-alert
      description: Given a Datadog critical alert for an AIG insurance platform system, create a P1 ServiceNow incident, trigger PagerDuty to page the on-call engineer, and post to the IT war-room Teams channel. Use when monitoring detects a critical system failure.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog monitor alert ID.
      - name: system_name
        in: body
        type: string
        description: Affected system name.
      - name: alert_message
        in: body
        type: string
        description: Human-readable alert description.
      - name: warroom_channel_id
        in: body
        type: string
        description: IT war-room Teams channel ID.
      steps:
      - name: create-incident
        type: call
        call: servicenow-p1.create-incident
        with:
          short_description: 'P1: {{system_name}} — {{alert_message}}'
          priority: '1'
          category: critical_system
      - name: page-oncall
        type: call
        call: pagerduty.trigger-incident
        with:
          title: P1 — {{system_name}}
          severity: critical
          details: 'INC: {{create-incident.number}} | Alert: {{alert_id}}'
      - name: post-warroom
        type: call
        call: msteams-p1.post-channel-message
        with:
          channel_id: '{{warroom_channel_id}}'
          text: 'P1 INCIDENT: {{system_name}} | INC: {{create-incident.number}} | PagerDuty: {{page-oncall.incident_key}} | {{alert_message}}'
  consumes:
  - type: http
    namespace: servicenow-p1
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: 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://events.pagerduty.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: enqueue
      path: /enqueue
      operations:
      - name: trigger-incident
        method: POST
  - type: http
    namespace: msteams-p1
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → it-p1-incident-triage-and-escalation.yml

When a fraud indicator is detected, enriches the claim from Salesforce, flags in ServiceNow, and alerts the SIU team via Teams.

naftiko: '0.5'
info:
  label: Claims Fraud Detection Alert Workflow
  description: When a fraud indicator is detected, enriches the claim from Salesforce, flags in ServiceNow, and alerts the SIU team via Teams.
  tags:
  - insurance
  - claims
  - fraud-detection
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: fraud-ops
    port: 8080
    tools:
    - name: handle-fraud-indicator
      description: Given a claim number and fraud indicator, look up in Salesforce, create a fraud investigation in ServiceNow, and notify SIU in Teams.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Claim number.
      - name: fraud_indicator
        in: body
        type: string
        description: Fraud indicator type.
      - name: siu_upn
        in: body
        type: string
        description: UPN of SIU lead.
      steps:
      - name: get-claim
        type: call
        call: sf.get-claim
        with:
          claim_number: '{{claim_number}}'
      - name: create-investigation
        type: call
        call: snow.create-record
        with:
          short_description: 'Fraud: {{claim_number}} — {{fraud_indicator}}'
          category: fraud_investigation
      - name: notify-siu
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{siu_upn}}'
          text: 'Fraud alert: Claim {{claim_number}} — {{fraud_indicator}}. SNOW: {{create-investigation.number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/Case/CaseNumber/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: fraud
      path: /table/u_fraud_investigation
      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
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → claims-fraud-detection-alert-workflow.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → servicenow-change-window-compliance-validator.yml

When a new insurance claim is submitted, creates a Salesforce case, opens a ServiceNow claim investigation record, and notifies the assigned adjuster in Teams.

naftiko: '0.5'
info:
  label: Insurance Claim Intake and Triage
  description: When a new insurance claim is submitted, creates a Salesforce case, opens a ServiceNow claim investigation record, and notifies the assigned adjuster in Teams.
  tags:
  - insurance
  - claims
  - salesforce
  - servicenow
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: claims-ops
    port: 8080
    tools:
    - name: intake-insurance-claim
      description: Given claim details including policy number, claimant name, loss type, and loss date, create a Salesforce case for customer tracking, open a ServiceNow claim investigation record, and notify the assigned adjuster in Teams. Use when a new claim is received.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: AIG policy number for the claim.
      - name: claimant_name
        in: body
        type: string
        description: Full name of the claimant.
      - name: loss_type
        in: body
        type: string
        description: Type of loss, e.g. 'property-damage', 'liability', 'auto'.
      - name: loss_date
        in: body
        type: string
        description: Date of loss in YYYY-MM-DD format.
      - name: adjuster_upn
        in: body
        type: string
        description: UPN of the assigned claims adjuster.
      steps:
      - name: create-sf-case
        type: call
        call: salesforce-claims.create-case
        with:
          subject: Claim — Policy {{policy_number}} — {{loss_type}}
          description: 'Claimant: {{claimant_name}} | Loss date: {{loss_date}}'
          origin: Phone
      - name: create-snow-record
        type: call
        call: servicenow-claims.create-record
        with:
          short_description: 'Claim investigation: {{policy_number}} — {{loss_type}}'
          description: 'Claimant: {{claimant_name}} | Loss date: {{loss_date}} | Salesforce case: {{create-sf-case.case_number}}'
          category: claims_investigation
      - name: notify-adjuster
        type: call
        call: msteams-claims.send-message
        with:
          recipient_upn: '{{adjuster_upn}}'
          text: 'New claim assigned: Policy {{policy_number}} — {{loss_type}} on {{loss_date}}. Claimant: {{claimant_name}}. Salesforce: {{create-sf-case.case_number}} | ServiceNow: {{create-snow-record.number}}'
  consumes:
  - type: http
    namespace: salesforce-claims
    baseUri: https://aig.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-claims
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: claim-records
      path: /table/u_claims_investigation
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams-claims
    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
Open in Framework → View in Fleet → insurance-claim-intake-and-triage.yml

Coordinates RFP responses by pulling requirements from Ariba, gathering costs from SAP, and distributing tasks via ServiceNow and Teams.

naftiko: '0.5'
info:
  label: SAP Ariba RFP Response Coordinator
  description: Coordinates RFP responses by pulling requirements from Ariba, gathering costs from SAP, and distributing tasks via ServiceNow and Teams.
  tags:
  - procurement
  - sap-ariba
  - sap
  - servicenow
  - collaboration
capability:
  exposes:
  - type: mcp
    namespace: rfp-ops
    port: 8080
    tools:
    - name: coordinate-rfp
      description: Given an Ariba RFP event ID, pull requirements, get SAP costs, create a ServiceNow task, and notify procurement.
      inputParameters:
      - name: rfp_event_id
        in: body
        type: string
        description: Ariba event ID.
      - name: deadline
        in: body
        type: string
        description: Response deadline.
      - name: procurement_channel_id
        in: body
        type: string
        description: Teams channel.
      steps:
      - name: get-rfp
        type: call
        call: ariba.get-event
        with:
          event_id: '{{rfp_event_id}}'
      - name: get-costs
        type: call
        call: sap.get-cost-estimate
        with:
          category: '{{get-rfp.category}}'
      - name: create-task
        type: call
        call: snow.create-task
        with:
          short_description: 'RFP: {{rfp_event_id}} — Due {{deadline}}'
          description: 'Category: {{get-rfp.category}}'
      - name: notify-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: '{{procurement_channel_id}}'
          text: 'RFP: {{rfp_event_id}} — {{get-rfp.category}}. Deadline: {{deadline}}. Task: {{create-task.number}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/sourcing/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: events
      path: /events/{{event_id}}
      operations:
      - name: get-event
        method: GET
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_COST_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: costs
      path: /A_ProductCostEstimate
      operations:
      - name: get-cost-estimate
        method: GET
  - type: http
    namespace: snow
    baseUri: https://aig.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/u_rfp_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: channels
      path: /teams/channels/{{channel_id}}/messages
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → sap-ariba-rfp-response-coordinator.yml

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:
  - insurance
  - 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://aig.service-now.com/api/now
    authentication:
      type: 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
Open in Framework → View in Fleet → datadog-slo-breach-incident-handler.yml

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:
  - insurance
  - 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://aig.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@aig.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → quarterly-financial-report-generator.yml

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:
  - insurance
  - 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/aig/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@aig.com/sendMail
      operations:
      - name: send-bulk-mail
        method: POST
  - type: http
    namespace: snow
    baseUri: https://aig.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
Open in Framework → View in Fleet → workday-benefits-enrollment-reminder-workflow.yml

When an employee termination is processed in Workday, deactivates their Okta account, closes open ServiceNow access requests, and deactivates their Salesforce user.

naftiko: '0.5'
info:
  label: Okta Employee Access Deprovisioning
  description: When an employee termination is processed in Workday, deactivates their Okta account, closes open ServiceNow access requests, and deactivates their Salesforce user.
  tags:
  - hr
  - offboarding
  - okta
  - workday
  - identity
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: deprovision-terminated-employee
      description: Given a terminated employee's Workday ID, Okta user ID, and Salesforce user ID, deactivate Okta, close open ServiceNow requests, and deactivate Salesforce. Use immediately upon processing a termination to prevent unauthorized access to AIG systems.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: Workday worker ID of the terminated employee.
      - name: okta_user_id
        in: body
        type: string
        description: Okta user ID to deactivate.
      - name: salesforce_user_id
        in: body
        type: string
        description: Salesforce user ID to deactivate.
      steps:
      - name: deactivate-okta
        type: call
        call: okta-offboard.deactivate-user
        with:
          user_id: '{{okta_user_id}}'
      - name: close-snow-requests
        type: call
        call: servicenow-offboard.close-requests
        with:
          employee_id: '{{workday_employee_id}}'
      - name: deactivate-sf-user
        type: call
        call: salesforce-offboard.update-user
        with:
          user_id: '{{salesforce_user_id}}'
          is_active: 'false'
  consumes:
  - type: http
    namespace: okta-offboard
    baseUri: https://aig.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: user-lifecycle
      path: /users/{{user_id}}/lifecycle/deactivate
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: servicenow-offboard
    baseUri: https://aig.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: close-requests
        method: PATCH
  - type: http
    namespace: salesforce-offboard
    baseUri: https://aig.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
Open in Framework → View in Fleet → okta-employee-access-deprovisioning.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → pagerduty-on-call-schedule-lookup.yml

Coordinates return-to-work by pulling medical status from Salesforce, updating Workday leave records, and notifying the employer via Teams.

naftiko: '0.5'
info:
  label: Workers Comp Return-to-Work Workflow
  description: Coordinates return-to-work by pulling medical status from Salesforce, updating Workday leave records, and notifying the employer via Teams.
  tags:
  - insurance
  - workers-compensation
  - claims
  - workday
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: wc-ops
    port: 8080
    tools:
    - name: coordinate-rtw
      description: Given a WC claim number and employee ID, pull medical clearance from Salesforce, update Workday leave, and notify the employer.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: WC claim number.
      - name: employee_id
        in: body
        type: string
        description: Employee ID.
      - name: employer_upn
        in: body
        type: string
        description: Employer HR contact UPN.
      steps:
      - name: get-medical
        type: call
        call: sf.get-claim-medical
        with:
          claim_number: '{{claim_number}}'
      - name: update-leave
        type: call
        call: workday.update-leave
        with:
          employee_id: '{{employee_id}}'
          status: Return Approved
      - name: notify-employer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{employer_upn}}'
          text: 'RTW approved: Claim {{claim_number}} — Employee {{employee_id}}. Clearance: {{get-medical.clearance_date}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/WC_Claim__c/ClaimNumber__c/{{claim_number}}
      operations:
      - name: get-claim-medical
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/aig/Absence_Management/v40.1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: leaves
      path: /leave-of-absence/{{employee_id}}
      operations:
      - name: update-leave
        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
Open in Framework → View in Fleet → workers-comp-return-to-work-workflow.yml

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:
  - insurance
  - 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://aig-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
Open in Framework → View in Fleet → sap-vendor-master-data-lookup.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → confluence-knowledge-article-search.yml

Monitors Snowflake data pipeline tasks for the claims analytics warehouse, logs failures to Datadog, and creates Jira tickets for the data engineering team.

naftiko: '0.5'
info:
  label: Snowflake Claims Analytics Pipeline Monitoring
  description: Monitors Snowflake data pipeline tasks for the claims analytics warehouse, logs failures to Datadog, and creates Jira tickets for the data engineering team.
  tags:
  - data
  - snowflake
  - datadog
  - analytics
  - claims
capability:
  exposes:
  - type: mcp
    namespace: claims-analytics-ops
    port: 8080
    tools:
    - name: check-claims-pipeline-health
      description: Query Snowflake task history for pipeline failures in the claims analytics database, log failures to Datadog, and open Jira tickets for data engineering. Use daily to ensure the claims and actuarial data pipelines are running correctly.
      inputParameters:
      - name: lookback_hours
        in: body
        type: integer
        description: Hours of pipeline history to scan.
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for data engineering tickets.
      steps:
      - name: get-failed-tasks
        type: call
        call: snowflake.get-task-failures
        with:
          lookback_hours: '{{lookback_hours}}'
      - name: log-to-datadog
        type: call
        call: datadog-dw.create-event
        with:
          title: Snowflake claims pipeline failures
          text: 'Failed tasks: {{get-failed-tasks.task_names}}'
          alert_type: error
      - name: create-jira
        type: call
        call: jira-data.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Bug
          summary: Claims pipeline failures — {{get-failed-tasks.task_count}} tasks
          description: 'Tasks: {{get-failed-tasks.task_names}} | Datadog: {{log-to-datadog.url}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /databases/CLAIMS_ANALYTICS/schemas/PUBLIC/tasks/history
      inputParameters:
      - name: lookback_hours
        in: query
      operations:
      - name: get-task-failures
        method: GET
  - type: http
    namespace: datadog-dw
    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-data
    baseUri: https://aig.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
Open in Framework → View in Fleet → snowflake-claims-analytics-pipeline-monitoring.yml

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:
  - insurance
  - 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://aig.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://aig.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://aig.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
Open in Framework → View in Fleet → data-privacy-subject-access-request-handler.yml

Looks up an SAP S/4HANA purchase order by number and returns header status, vendor, and total value for the finance or procurement team.

naftiko: '0.5'
info:
  label: SAP Purchase Order Status Lookup
  description: Looks up an SAP S/4HANA purchase order by number and returns header status, vendor, and total value for the finance or procurement team.
  tags:
  - finance
  - procurement
  - erp
  - sap
capability:
  exposes:
  - type: mcp
    namespace: erp-finance
    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 when procurement or AP teams need to verify PO status before approving a vendor invoice.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: SAP purchase order number, e.g. '4500012345'.
      call: sap-erp.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: vendor
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_amount
        type: string
        mapping: $.d.TotalAmount
      - name: currency
        type: string
        mapping: $.d.TransactionCurrency
  consumes:
  - type: http
    namespace: sap-erp
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-purchase-order-status-lookup.yml

Triggers a Power BI dataset refresh for the claims performance dashboard and notifies the claims leadership team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Power BI Claims Dashboard Refresh
  description: Triggers a Power BI dataset refresh for the claims performance dashboard and notifies the claims leadership team in Microsoft Teams.
  tags:
  - analytics
  - power-bi
  - claims
  - reporting
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: claims-reporting
    port: 8080
    tools:
    - name: refresh-claims-dashboard
      description: Given a Power BI dataset ID and claims leadership Teams channel, trigger a dataset refresh and post a notification when complete. Use each morning before claims leadership review meetings.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID for the claims dashboard.
      - name: claims_channel_id
        in: body
        type: string
        description: Claims leadership Teams channel ID.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: '{{dataset_id}}'
      - name: notify-claims-team
        type: call
        call: msteams-claims-rpt.post-channel-message
        with:
          channel_id: '{{claims_channel_id}}'
          text: 'Claims dashboard refresh triggered (dataset {{dataset_id}}). Refresh ID: {{trigger-refresh.refreshId}}'
  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
  - type: http
    namespace: msteams-claims-rpt
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_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
Open in Framework → View in Fleet → power-bi-claims-dashboard-refresh.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → azure-kubernetes-cluster-scaling-handler.yml

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:
  - insurance
  - 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://aig.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://aig.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://aig-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
Open in Framework → View in Fleet → it-asset-lifecycle-retirement-workflow.yml

Scores cyber risk by checking security posture, pulling claims history from Snowflake, and updating Salesforce with the score.

naftiko: '0.5'
info:
  label: Cyber Insurance Risk Scoring Workflow
  description: Scores cyber risk by checking security posture, pulling claims history from Snowflake, and updating Salesforce with the score.
  tags:
  - insurance
  - cyber
  - underwriting
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: cyber-uw
    port: 8080
    tools:
    - name: score-cyber-risk
      description: Given an applicant domain, run a security posture check, pull cyber claims data from Snowflake, and update Salesforce.
      inputParameters:
      - name: applicant_domain
        in: body
        type: string
        description: Applicant domain.
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      - name: underwriter_upn
        in: body
        type: string
        description: Underwriter UPN.
      steps:
      - name: scan-posture
        type: call
        call: security-scan.check-domain
        with:
          domain: '{{applicant_domain}}'
      - name: get-history
        type: call
        call: snowflake.query-cyber-claims
        with:
          domain: '{{applicant_domain}}'
      - name: update-record
        type: call
        call: sf.update-risk-score
        with:
          policy_number: '{{policy_number}}'
          score: '{{scan-posture.score}}'
      - name: notify-uw
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{underwriter_upn}}'
          text: 'Cyber risk: {{applicant_domain}} — Score: {{scan-posture.score}}/100 | Losses: {{get-history.loss_count}}'
  consumes:
  - type: http
    namespace: security-scan
    baseUri: https://api.securityscorecard.io
    authentication:
      type: bearer
      token: $secrets.securityscorecard_token
    resources:
    - name: domains
      path: /companies/{{domain}}/score
      operations:
      - name: check-domain
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://aig.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-cyber-claims
        method: POST
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/InsurancePolicy__c/PolicyNumber__c/{{policy_number}}
      operations:
      - name: update-risk-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
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cyber-insurance-risk-scoring-workflow.yml

Processes a claims payment by validating the claim in Salesforce, creating a payment in SAP, and notifying the adjuster via Teams.

naftiko: '0.5'
info:
  label: Claims Payment Processing Workflow
  description: Processes a claims payment by validating the claim in Salesforce, creating a payment in SAP, and notifying the adjuster via Teams.
  tags:
  - insurance
  - claims
  - finance
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: payment-ops
    port: 8080
    tools:
    - name: process-claims-payment
      description: Given a claim number and payment amount, validate in Salesforce, create an SAP payment, and notify the adjuster.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: Claim number.
      - name: payment_amount
        in: body
        type: number
        description: Payment amount.
      - name: adjuster_upn
        in: body
        type: string
        description: Adjuster UPN.
      steps:
      - name: validate
        type: call
        call: sf.get-claim-status
        with:
          claim_number: '{{claim_number}}'
      - name: create-payment
        type: call
        call: sap-fi.post-payment
        with:
          claim_number: '{{claim_number}}'
          amount: '{{payment_amount}}'
      - name: notify-adjuster
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{adjuster_upn}}'
          text: 'Payment: Claim {{claim_number}} — ${{payment_amount}}. SAP: {{create-payment.document_number}}'
  consumes:
  - type: http
    namespace: sf
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/Case/CaseNumber/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim-status
        method: GET
  - type: http
    namespace: sap
    baseUri: https://aig-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: payments
      path: /A_JournalEntry
      operations:
      - name: post-payment
        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
Open in Framework → View in Fleet → claims-payment-processing-workflow.yml

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:
  - insurance
  - 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://aig.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
Open in Framework → View in Fleet → third-party-vendor-risk-assessment-workflow.yml

Retrieves Okta privileged group membership, refreshes a Power BI certification report, and emails the security team for access review.

naftiko: '0.5'
info:
  label: Okta Privileged Access Quarterly Certification
  description: Retrieves Okta privileged group membership, refreshes a Power BI certification report, and emails the security team for access review.
  tags:
  - identity
  - security
  - okta
  - compliance
  - access-review
capability:
  exposes:
  - type: mcp
    namespace: access-cert
    port: 8080
    tools:
    - name: run-privileged-access-certification
      description: Given an Okta privileged group ID, retrieve current membership, trigger a Power BI report refresh, and email the security team the certification report for review. Use quarterly for regulatory compliance access reviews.
      inputParameters:
      - name: okta_group_id
        in: body
        type: string
        description: Okta privileged group ID to certify.
      - name: pbi_dataset_id
        in: body
        type: string
        description: Power BI dataset ID for access certification reports.
      - name: security_team_email
        in: body
        type: string
        description: Security team email for the certification.
      steps:
      - name: get-group-users
        type: call
        call: okta-cert.get-group-members
        with:
          group_id: '{{okta_group_id}}'
      - name: refresh-pbi-cert
        type: call
        call: powerbi-cert.trigger-refresh
        with:
          dataset_id: '{{pbi_dataset_id}}'
      - name: send-cert-report
        type: call
        call: msgraph-cert.send-email
        with:
          to: '{{security_team_email}}'
          subject: Quarterly Access Certification — Okta Group {{okta_group_id}}
          body: Group {{okta_group_id}} has {{get-group-users.total_count}} members. Review in Power BI and certify or revoke access.
  consumes:
  - type: http
    namespace: okta-cert
    baseUri: https://aig.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: get-group-members
        method: GET
  - type: http
    namespace: powerbi-cert
    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
  - type: http
    namespace: msgraph-cert
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /users/{{sender}}/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → okta-privileged-access-quarterly-certification.yml

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:
  - insurance
  - 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
Open in Framework → View in Fleet → docusign-envelope-tracking-lookup.yml

Retrieves a summary of open claims from Salesforce by line of business, returning total count and average age.

naftiko: '0.5'
info:
  label: Salesforce Claims Pipeline Summary
  description: Retrieves a summary of open claims from Salesforce by line of business, returning total count and average age.
  tags:
  - insurance
  - claims
  - salesforce
  - analytics
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: claims-analytics
    port: 8080
    tools:
    - name: get-claims-summary
      description: Given a line of business, return the total open claim count and average claim age in days.
      inputParameters:
      - name: line_of_business
        in: body
        type: string
        description: Insurance line of business.
      call: sf.query-claims-summary
      with:
        lob: '{{line_of_business}}'
      outputParameters:
      - name: total_open
        type: integer
        mapping: $.totalSize
      - name: avg_age_days
        type: number
        mapping: $.records[0].Avg_Age__c
  consumes:
  - namespace: sf
    type: http
    baseUri: https://aig.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /query/?q=SELECT+COUNT(Id)+FROM+Case+WHERE+LOB__c='{{lob}}'
      operations:
      - name: query-claims-summary
        method: GET
Open in Framework → View in Fleet → salesforce-claims-pipeline-summary.yml

At the start of a financial period close, generates a period-end close checklist in ServiceNow, assigns tasks to the finance team via Teams, and monitors SAP for posting period status.

naftiko: '0.5'
info:
  label: SAP Period-End Financial Close Checklist
  description: At the start of a financial period close, generates a period-end close checklist in ServiceNow, assigns tasks to the finance team via Teams, and monitors SAP for posting period status.
  tags:
  - finance
  - erp
  - sap
  - servicenow
  - microsoft-teams
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: trigger-period-close
      description: Given a SAP company code and fiscal period, check the SAP posting period status, generate a ServiceNow close checklist task, and notify the finance controller group in Teams. Invoke at the start of each month-end close cycle.
      inputParameters:
      - name: company_code
        type: string
        description: The SAP company code, e.g. '1000' for Allianz SE.
      - name: fiscal_year
        type: string
        description: The fiscal year, e.g. '2025'.
      - name: fiscal_period
        type: string
        description: The fiscal period number, e.g. '12' for December.
      steps:
      - name: get-posting-period
        type: call
        call: sap.get-posting-period
        with:
          CompanyCode: '{{company_code}}'
          FiscalYear: '{{fiscal_year}}'
          FiscalPeriod: '{{fiscal_period}}'
      - name: create-checklist
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Period-end close checklist: {{company_code}} FY{{fiscal_year}}-P{{fiscal_period}}'
          description: 'SAP posting period status: {{get-posting-period.PostingPeriodStatus}}

            Company code: {{company_code}}

            Period: {{fiscal_period}} / {{fiscal_year}}

            Close activities: 1) Reconcile sub-ledgers 2) Post accruals 3) Run foreign currency valuation 4) Execute balance sheet reclassification'
          assignment_group: Finance_Controllers
      - name: notify-finance
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.finance_channel_id
          text: 'Period-end close initiated: {{company_code}} FY{{fiscal_year}}-P{{fiscal_period}} | SAP status: {{get-posting-period.PostingPeriodStatus}} | ServiceNow checklist: {{create-checklist.number}}'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://allianz-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_pass
    resources:
    - name: posting-periods
      path: /A_CompanyCode('{CompanyCode}')
      inputParameters:
      - name: CompanyCode
        in: path
      - name: FiscalYear
        in: query
      - name: FiscalPeriod
        in: query
      operations:
      - name: get-posting-period
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → sap-period-end-financial-close-checklist.yml

When an employee's role or department changes in Workday, updates their Microsoft 365 group memberships and raises a ServiceNow task for IT to review any privileged access changes.

naftiko: '0.5'
info:
  label: Workday Role Change Access Provisioning
  description: When an employee's role or department changes in Workday, updates their Microsoft 365 group memberships and raises a ServiceNow task for IT to review any privileged access changes.
  tags:
  - hr
  - identity
  - workday
  - microsoft-365
  - servicenow
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: iam-provisioning
    port: 8080
    tools:
    - name: sync-role-change-access
      description: Given a Workday employee ID, old role, and new role, fetch the employee's Microsoft 365 object ID, update their group memberships to reflect the new role, and create a ServiceNow access review task for IT security. Invoke when a Workday business process for position or department change completes.
      inputParameters:
      - name: employee_id
        type: string
        description: The Workday worker ID of the employee whose role has changed.
      - name: old_role
        type: string
        description: The employee's previous role or job title, e.g. 'Claims Analyst'.
      - name: new_role
        type: string
        description: The employee's new role or job title, e.g. 'Senior Claims Manager'.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: update-group-membership
        type: call
        call: msgraph.add-group-member
        with:
          group_display_name: '{{new_role}}-Access'
          user_id: '{{get-worker.azure_object_id}}'
      - name: create-review-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Access review: role change for {{get-worker.display_name}}'
          description: 'Employee: {{get-worker.display_name}}

            Previous role: {{old_role}}

            New role: {{new_role}}

            Action taken: M365 group updated to {{new_role}}-Access. Please review and revoke legacy privileged access.'
          assignment_group: IT_Security
  consumes:
  - namespace: workday
    type: http
    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
  - namespace: msgraph
    type: http
    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
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → workday-role-change-access-provisioning.yml

Queries Workday for current active headcount by department and cost center, then pushes the snapshot to a Snowflake table for downstream BI and workforce planning analytics.

naftiko: '0.5'
info:
  label: Workday Headcount Snapshot
  description: Queries Workday for current active headcount by department and cost center, then pushes the snapshot to a Snowflake table for downstream BI and workforce planning analytics.
  tags:
  - hr
  - analytics
  - workday
  - snowflake
  - reporting
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: snapshot-headcount
      description: Fetch current active employee headcount segmented by department from Workday, then insert the snapshot record into the Snowflake HR_ANALYTICS.HEADCOUNT_SNAPSHOTS table. Invoke on a daily or weekly schedule for workforce planning.
      inputParameters:
      - name: as_of_date
        type: string
        description: Snapshot date in ISO 8601 format (YYYY-MM-DD). Determines the reference date for the Workday query.
      steps:
      - name: get-headcount
        type: call
        call: workday.get-workers-report
        with:
          effectiveDate: '{{as_of_date}}'
          status: Active
      - name: write-snapshot
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO HR_ANALYTICS.HEADCOUNT_SNAPSHOTS SELECT '{{as_of_date}}' AS snapshot_date, department, COUNT(*) AS headcount FROM STAGING.WORKDAY_WORKERS GROUP BY department
          database: ALLIANZ_DW
          schema: HR_ANALYTICS
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers-report
      path: /workers
      inputParameters:
      - name: effectiveDate
        in: query
      - name: status
        in: query
      operations:
      - name: get-workers-report
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
Open in Framework → View in Fleet → workday-headcount-snapshot.yml

Executes a Snowflake stored procedure to refresh the insurance KPI materialized views, then triggers a Power BI dataset refresh so dashboards reflect the latest data.

naftiko: '0.5'
info:
  label: Snowflake BI Refresh and Power BI Dataset Push
  description: Executes a Snowflake stored procedure to refresh the insurance KPI materialized views, then triggers a Power BI dataset refresh so dashboards reflect the latest data.
  tags:
  - data
  - analytics
  - snowflake
  - power-bi
  - bi-refresh
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: bi-ops
    port: 8080
    tools:
    - name: refresh-bi-datasets
      description: Given a Snowflake stored procedure name and a Power BI dataset ID, execute the Snowflake refresh procedure and then trigger a Power BI dataset refresh. Invoke after nightly ETL completion or before scheduled executive report delivery.
      inputParameters:
      - name: snowflake_procedure
        type: string
        description: The fully qualified Snowflake stored procedure to call, e.g. 'REPORTING.REFRESH_INSURANCE_KPIS()'.
      - name: powerbi_group_id
        type: string
        description: The Power BI workspace (group) ID containing the dataset to refresh.
      - name: powerbi_dataset_id
        type: string
        description: The Power BI dataset ID to trigger a refresh on.
      steps:
      - name: run-snowflake-refresh
        type: call
        call: snowflake.execute-statement
        with:
          statement: CALL {{snowflake_procedure}}
          database: ALLIANZ_DW
          schema: REPORTING
      - name: trigger-powerbi-refresh
        type: call
        call: powerbi.trigger-refresh
        with:
          group_id: '{{powerbi_group_id}}'
          dataset_id: '{{powerbi_dataset_id}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: powerbi
    type: http
    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
Open in Framework → View in Fleet → snowflake-bi-refresh-and-power-bi-dataset-push.yml

Fetches the latest LinkedIn Campaign Manager analytics for Allianz's employer brand campaigns and posts a weekly engagement digest to the HR marketing Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Campaign Digest
  description: Fetches the latest LinkedIn Campaign Manager analytics for Allianz's employer brand campaigns and posts a weekly engagement digest to the HR marketing Teams channel.
  tags:
  - marketing
  - hr
  - linkedin
  - microsoft-teams
  - reporting
  - employer-brand
capability:
  exposes:
  - type: mcp
    namespace: employer-brand
    port: 8080
    tools:
    - name: digest-linkedin-campaigns
      description: Given a LinkedIn ad account ID and date range, fetch campaign performance metrics (impressions, clicks, applications, CTR) for employer brand campaigns and post a formatted digest to the HR marketing Teams channel. Invoke weekly on Monday mornings.
      inputParameters:
      - name: ad_account_id
        type: string
        description: The LinkedIn Campaign Manager ad account URN, e.g. 'urn:li:sponsoredAccount:12345678'.
      - name: date_range_start
        type: string
        description: Start date for the reporting period in YYYY-MM-DD format.
      - name: date_range_end
        type: string
        description: End date for the reporting period in YYYY-MM-DD format.
      steps:
      - name: get-campaign-analytics
        type: call
        call: linkedin.get-ad-analytics
        with:
          q: analytics
          pivot: CAMPAIGN
          dateRange.start.year: '{{date_range_start}}'
          dateRange.end.year: '{{date_range_end}}'
          accounts: '{{ad_account_id}}'
          fields: impressions,clicks,costInLocalCurrency,externalWebsiteConversions
      - name: post-digest
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.hr_marketing_channel_id
          text: 'LinkedIn Employer Brand Weekly Digest ({{date_range_start}} – {{date_range_end}}): {{get-campaign-analytics.elements.length}} campaigns tracked. See full analytics in Campaign Manager.'
  consumes:
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: ad-analytics
      path: /adAnalyticsV2
      inputParameters:
      - name: q
        in: query
      - name: pivot
        in: query
      - name: accounts
        in: query
      - name: fields
        in: query
      operations:
      - name: get-ad-analytics
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-employer-brand-campaign-digest.yml

When a Datadog monitor fires for an application error rate spike, automatically creates a Jira bug with full observability context including monitor query, alert value, and affected service tags.

naftiko: '0.5'
info:
  label: Jira Bug Triage from Datadog Alert
  description: When a Datadog monitor fires for an application error rate spike, automatically creates a Jira bug with full observability context including monitor query, alert value, and affected service tags.
  tags:
  - devops
  - observability
  - datadog
  - jira
  - bug-triage
capability:
  exposes:
  - type: mcp
    namespace: alert-triage
    port: 8080
    tools:
    - name: create-bug-from-alert
      description: Given a Datadog monitor ID and triggered alert value, fetch the monitor definition, create a Jira Bug in the appropriate project with full alert context, and return the Jira issue key. Invoke when Datadog fires a monitor for application error rate or latency SLO violations.
      inputParameters:
      - name: monitor_id
        type: string
        description: The Datadog monitor ID that fired the alert.
      - name: alert_value
        type: number
        description: The metric value that triggered the alert, e.g. 12.5 for 12.5% error rate.
      - name: service_name
        type: string
        description: The name of the affected service, e.g. 'claims-api'.
      steps:
      - name: get-monitor
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[Alert] {{service_name}}: {{get-monitor.name}}'
          description: 'Monitor: {{get-monitor.name}}

            Triggered value: {{alert_value}}

            Monitor query: {{get-monitor.query}}

            Service: {{service_name}}

            Datadog monitor ID: {{monitor_id}}

            Threshold: {{get-monitor.options.thresholds.critical}}'
      outputParameters:
      - name: jira_key
        type: string
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: monitors
      path: /monitor/{monitor_id}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - namespace: jira
    type: http
    baseUri: https://allianz.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
Open in Framework → View in Fleet → jira-bug-triage-from-datadog-alert.yml

When a pull request is opened against a protected branch in GitHub, triggers a Datadog static analysis check and blocks merge if critical vulnerabilities are detected, posting findings to the PR and a Teams channel.

naftiko: '0.5'
info:
  label: GitHub Pull Request Security Gate
  description: When a pull request is opened against a protected branch in GitHub, triggers a Datadog static analysis check and blocks merge if critical vulnerabilities are detected, posting findings to the PR and a Teams channel.
  tags:
  - devops
  - security
  - github
  - datadog
  - microsoft-teams
  - code-quality
capability:
  exposes:
  - type: mcp
    namespace: devops-security
    port: 8080
    tools:
    - name: run-pr-security-gate
      description: Given a GitHub repository, PR number, and commit SHA, fetch PR details, query Datadog for static analysis findings on the commit, post a summary comment to the PR, and notify the security channel in Teams if critical issues are found. Invoke on pull_request opened and synchronize events.
      inputParameters:
      - name: repo_owner
        type: string
        description: GitHub organization or owner, e.g. 'allianz'.
      - name: repo_name
        type: string
        description: GitHub repository name, e.g. 'claims-service'.
      - name: pr_number
        type: integer
        description: The pull request number.
      - name: commit_sha
        type: string
        description: The head commit SHA of the pull request.
      steps:
      - name: get-pr
        type: call
        call: github.get-pull-request
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          pull_number: '{{pr_number}}'
      - name: get-findings
        type: call
        call: datadog.get-ci-pipeline-events
        with:
          filter_query: ci_level:pipeline @git.commit.sha:{{commit_sha}} @git.repository_url:*{{repo_name}}
      - name: post-pr-comment
        type: call
        call: github.create-pr-comment
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          issue_number: '{{pr_number}}'
          body: 'Security gate results for {{commit_sha}}: {{get-findings.data.length}} pipeline events found. Branch: {{get-pr.head.ref}}'
  consumes:
  - namespace: github
    type: http
    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
    - name: pr-comments
      path: /repos/{owner}/{repo}/issues/{issue_number}/comments
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: issue_number
        in: path
      operations:
      - name: create-pr-comment
        method: POST
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: ci-pipeline-events
      path: /events
      inputParameters:
      - name: filter_query
        in: query
      operations:
      - name: get-ci-pipeline-events
        method: GET
Open in Framework → View in Fleet → github-pull-request-security-gate.yml

Queries Workday for the latest employee engagement survey results by business unit, computes satisfaction scores, and posts a pulse digest to the HR leadership Teams channel.

naftiko: '0.5'
info:
  label: Employee Satisfaction Survey Pulse
  description: Queries Workday for the latest employee engagement survey results by business unit, computes satisfaction scores, and posts a pulse digest to the HR leadership Teams channel.
  tags:
  - hr
  - workday
  - microsoft-teams
  - employee-engagement
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: hr-engagement
    port: 8080
    tools:
    - name: digest-engagement-pulse
      description: Given a Workday survey run ID, fetch engagement survey results segmented by business unit, compute average scores, and post a formatted pulse digest to the HR leadership Teams channel. Invoke after each survey window closes in Workday.
      inputParameters:
      - name: survey_run_id
        type: string
        description: The Workday engagement survey run ID to retrieve results for.
      steps:
      - name: get-survey-results
        type: call
        call: workday.get-survey-results
        with:
          surveyRunId: '{{survey_run_id}}'
      - name: post-pulse-digest
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.hr_leadership_channel_id
          text: 'Employee Engagement Pulse — Survey Run {{survey_run_id}}: Results retrieved from Workday. {{get-survey-results.totalResponses}} responses collected. Review full breakdown in Workday People Analytics.'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: survey-results
      path: /surveyRuns/{surveyRunId}/results
      inputParameters:
      - name: surveyRunId
        in: path
      operations:
      - name: get-survey-results
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → employee-satisfaction-survey-pulse.yml

Queries Salesforce for insurance policies approaching their renewal date, enriches each with the customer's claims history from ServiceNow, and creates renewal opportunity records back in Salesforce.

naftiko: '0.5'
info:
  label: Policy Renewal Opportunity Sync
  description: Queries Salesforce for insurance policies approaching their renewal date, enriches each with the customer's claims history from ServiceNow, and creates renewal opportunity records back in Salesforce.
  tags:
  - insurance
  - sales
  - crm
  - salesforce
  - servicenow
  - renewal
capability:
  exposes:
  - type: mcp
    namespace: policy-renewals
    port: 8080
    tools:
    - name: sync-renewal-opportunities
      description: Given a renewal look-ahead window in days, query Salesforce for expiring policies, enrich each with the customer's open claim count from ServiceNow, and upsert a renewal Opportunity in Salesforce. Invoke on a daily schedule or on demand.
      inputParameters:
      - name: days_ahead
        type: integer
        description: Number of days ahead to look for expiring policies, e.g. 30 or 60.
      steps:
      - name: get-expiring-policies
        type: call
        call: salesforce-query.run-soql
        with:
          query: SELECT Id, Name, AccountId, ExpirationDate__c FROM InsurancePolicy__c WHERE ExpirationDate__c = NEXT_N_DAYS:{{days_ahead}}
      - name: get-open-claims
        type: call
        call: servicenow.list-incidents
        with:
          sysparm_query: state=1^category=insurance_claim
          sysparm_fields: caller_id,number,priority
      - name: create-opportunities
        type: call
        call: salesforce-write.create-opportunity
        with:
          name: Renewal - {{get-expiring-policies.Name}}
          account_id: '{{get-expiring-policies.AccountId}}'
          close_date: '{{get-expiring-policies.ExpirationDate__c}}'
          stage_name: Renewal Prospecting
          open_claims: '{{get-open-claims.total_count}}'
  consumes:
  - namespace: salesforce-query
    type: http
    baseUri: https://allianz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: run-soql
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: sysparm_query
        in: query
      - name: sysparm_fields
        in: query
      operations:
      - name: list-incidents
        method: GET
  - namespace: salesforce-write
    type: http
    baseUri: https://allianz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
Open in Framework → View in Fleet → policy-renewal-opportunity-sync.yml

Scans all repositories in the Allianz GitHub organization for secret scanning alerts and Dependabot vulnerabilities, then creates Jira tickets for critical findings and posts a summary to the security Teams channel.

naftiko: '0.5'
info:
  label: GitHub Repository Security Audit
  description: Scans all repositories in the Allianz GitHub organization for secret scanning alerts and Dependabot vulnerabilities, then creates Jira tickets for critical findings and posts a summary to the security Teams channel.
  tags:
  - devops
  - security
  - github
  - jira
  - microsoft-teams
  - vulnerability-management
capability:
  exposes:
  - type: mcp
    namespace: security-audit
    port: 8080
    tools:
    - name: audit-repo-security
      description: Given a GitHub organization name and repository name, fetch all open Dependabot critical vulnerability alerts and secret scanning alerts, create a Jira security ticket for each critical finding, and post a consolidated audit summary to the Teams security channel. Invoke weekly or after a new repository is created.
      inputParameters:
      - name: org
        type: string
        description: The GitHub organization name, e.g. 'allianz'.
      - name: repo
        type: string
        description: The GitHub repository name to audit.
      steps:
      - name: get-dependabot-alerts
        type: call
        call: github.list-dependabot-alerts
        with:
          owner: '{{org}}'
          repo: '{{repo}}'
          severity: critical
          state: open
      - name: get-secret-alerts
        type: call
        call: github.list-secret-scanning-alerts
        with:
          owner: '{{org}}'
          repo: '{{repo}}'
          state: open
      - name: create-security-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: SEC
          issuetype: Security Vulnerability
          summary: 'Security Audit: {{org}}/{{repo}} — critical findings'
          description: 'Critical Dependabot alerts: {{get-dependabot-alerts.length}}

            Secret scanning alerts: {{get-secret-alerts.length}}

            Repository: {{org}}/{{repo}}

            Review and remediate all findings immediately.'
      - name: notify-security-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.security_channel_id
          text: 'Security Audit Complete: {{org}}/{{repo}} | Critical vulns: {{get-dependabot-alerts.length}} | Secret alerts: {{get-secret-alerts.length}} | Jira: {{create-security-ticket.key}}'
  consumes:
  - namespace: github
    type: http
    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
      - name: state
        in: query
      operations:
      - name: list-dependabot-alerts
        method: GET
    - name: secret-scanning-alerts
      path: /repos/{owner}/{repo}/secret-scanning/alerts
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: state
        in: query
      operations:
      - name: list-secret-scanning-alerts
        method: GET
  - namespace: jira
    type: http
    baseUri: https://allianz.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → github-repository-security-audit.yml

Given a policy document stored in SharePoint, retrieves the document content, sends it to an AI model for summarization, and returns a structured key-terms summary for agent or advisor use.

naftiko: '0.5'
info:
  label: Insurance Policy Document Summarizer
  description: Given a policy document stored in SharePoint, retrieves the document content, sends it to an AI model for summarization, and returns a structured key-terms summary for agent or advisor use.
  tags:
  - insurance
  - ai
  - sharepoint
  - document-management
  - summarization
capability:
  exposes:
  - type: mcp
    namespace: policy-intelligence
    port: 8080
    tools:
    - name: summarize-policy-document
      description: Given a SharePoint site ID and document item ID for an insurance policy document, retrieve the file content, send it to the Anthropic API for structured summarization, and return a key-terms summary including coverage limits, exclusions, and renewal date. Use when an advisor or agent needs a quick policy overview.
      inputParameters:
      - name: site_id
        type: string
        description: The SharePoint site ID where the policy document is stored.
      - name: item_id
        type: string
        description: The SharePoint drive item ID of the policy document.
      steps:
      - name: get-document
        type: call
        call: sharepoint.get-file-content
        with:
          site_id: '{{site_id}}'
          item_id: '{{item_id}}'
      - name: summarize
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 1024
          system: 'You are an insurance policy analyst. Extract and summarize: coverage limits, exclusions, premium amount, renewal date, and policyholder obligations. Return as structured JSON.'
          content: '{{get-document.content}}'
  consumes:
  - namespace: sharepoint
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{site_id}/drive/items/{item_id}/content
      inputParameters:
      - name: site_id
        in: path
      - name: item_id
        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: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
Open in Framework → View in Fleet → insurance-policy-document-summarizer.yml

When a vendor invoice is received in SAP S/4HANA, validates it against the purchase order, routes it for approval via ServiceNow, and notifies the responsible finance contact via Teams.

naftiko: '0.5'
info:
  label: SAP Invoice Processing and Approval
  description: When a vendor invoice is received in SAP S/4HANA, validates it against the purchase order, routes it for approval via ServiceNow, and notifies the responsible finance contact via Teams.
  tags:
  - finance
  - erp
  - sap
  - servicenow
  - microsoft-teams
  - invoice-processing
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: process-invoice
      description: Given a SAP invoice document number, fetch invoice and PO details, create a ServiceNow approval task for the finance controller, and notify the approver via Teams. Invoke when a new vendor invoice document is posted in SAP.
      inputParameters:
      - name: invoice_number
        type: string
        description: The SAP FI invoice document number, e.g. 5100012345.
      - name: company_code
        type: string
        description: The SAP company code, e.g. 1000 for Allianz SE.
      steps:
      - name: get-invoice
        type: call
        call: sap.get-invoice
        with:
          InvoiceDocument: '{{invoice_number}}'
          CompanyCode: '{{company_code}}'
      - name: create-approval-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Invoice approval required: {{invoice_number}}'
          description: 'Vendor: {{get-invoice.SupplierName}}

            Amount: {{get-invoice.InvoiceGrossAmount}} {{get-invoice.DocumentCurrency}}

            PO: {{get-invoice.PurchaseOrder}}'
          assignment_group: Finance_Controllers
      - name: notify-approver
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-invoice.AccountingClerk}}@allianz.com'
          text: 'Invoice {{invoice_number}} from {{get-invoice.SupplierName}} for {{get-invoice.InvoiceGrossAmount}} {{get-invoice.DocumentCurrency}} requires your approval. ServiceNow task: {{create-approval-task.number}}'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://allianz-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_pass
    resources:
    - name: invoices
      path: /A_SupplierInvoice(InvoiceDocument='{InvoiceDocument}',FiscalYear='')
      inputParameters:
      - name: InvoiceDocument
        in: path
      - name: CompanyCode
        in: query
      operations:
      - name: get-invoice
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-invoice-processing-and-approval.yml

Fetches the current health status of all monitored Allianz infrastructure hosts from Datadog and returns a structured snapshot for use in status reports or automated runbooks.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Health Dashboard Snapshot
  description: Fetches the current health status of all monitored Allianz infrastructure hosts from Datadog and returns a structured snapshot for use in status reports or automated runbooks.
  tags:
  - observability
  - datadog
  - monitoring
  - infrastructure
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-infra-health-snapshot
      description: Fetch the current status of all monitored hosts from Datadog filtered by environment tag, returning host counts by status (up, down, muted). Use when generating infrastructure health reports or evaluating deployment readiness.
      inputParameters:
      - name: environment
        type: string
        description: The environment tag to filter hosts by, e.g. 'production', 'staging'.
      call: datadog.list-hosts
      with:
        filter: env:{{environment}}
      outputParameters:
      - name: total_hosts
        type: number
        mapping: $.total_matching
      - name: active_hosts
        type: number
        mapping: $.total_active
  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: hosts
      path: /hosts
      inputParameters:
      - name: filter
        in: query
      operations:
      - name: list-hosts
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-health-dashboard-snapshot.yml

When a Salesforce NPS survey response is submitted with a detractor score, creates a Salesforce task for the account owner to follow up and posts a notification to the customer success Teams channel.

naftiko: '0.5'
info:
  label: Salesforce NPS Survey Follow-Up
  description: When a Salesforce NPS survey response is submitted with a detractor score, creates a Salesforce task for the account owner to follow up and posts a notification to the customer success Teams channel.
  tags:
  - crm
  - sales
  - salesforce
  - microsoft-teams
  - nps
  - customer-success
capability:
  exposes:
  - type: mcp
    namespace: customer-success
    port: 8080
    tools:
    - name: handle-nps-detractor
      description: Given a Salesforce NPS survey response ID and score, retrieve the survey response and account details, create a follow-up task assigned to the account owner, and post a notification to the customer success Teams channel. Invoke when an NPS score below 7 is recorded in Salesforce.
      inputParameters:
      - name: survey_response_id
        type: string
        description: The Salesforce Survey Response record ID.
      - name: nps_score
        type: integer
        description: The NPS score submitted by the customer (0–6 for detractors).
      steps:
      - name: get-response
        type: call
        call: salesforce-read.get-survey-response
        with:
          record_id: '{{survey_response_id}}'
      - name: create-followup-task
        type: call
        call: salesforce-write.create-task
        with:
          subject: 'NPS Detractor Follow-Up: Score {{nps_score}}'
          whatId: '{{get-response.AccountId}}'
          ownerId: '{{get-response.AccountOwnerId}}'
          activity_date: TODAY+3
          description: 'Customer submitted NPS score {{nps_score}}. Feedback: {{get-response.Comments__c}}'
      - name: notify-cs-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.customer_success_channel_id
          text: 'NPS Detractor Alert: Account {{get-response.AccountName}} scored {{nps_score}}. Follow-up task created for {{get-response.AccountOwnerName}}. Feedback: {{get-response.Comments__c}}'
  consumes:
  - namespace: salesforce-read
    type: http
    baseUri: https://allianz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: survey-responses
      path: /sobjects/SurveyResponse/{record_id}
      inputParameters:
      - name: record_id
        in: path
      operations:
      - name: get-survey-response
        method: GET
  - namespace: salesforce-write
    type: http
    baseUri: https://allianz.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-nps-survey-follow-up.yml

Given a Salesforce Account ID, fetches the customer's full profile, open claims from ServiceNow, and active policies, then updates the Salesforce account with a consolidated risk score and notes field.

naftiko: '0.5'
info:
  label: Salesforce Customer 360 Enrichment
  description: Given a Salesforce Account ID, fetches the customer's full profile, open claims from ServiceNow, and active policies, then updates the Salesforce account with a consolidated risk score and notes field.
  tags:
  - crm
  - sales
  - salesforce
  - servicenow
  - customer-360
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: crm-enrichment
    port: 8080
    tools:
    - name: enrich-customer-account
      description: Given a Salesforce Account ID, retrieve the account record, fetch open ServiceNow claims for the customer, and update the Salesforce account with a risk score and claims summary. Use when preparing for customer renewal meetings or account reviews.
      inputParameters:
      - name: account_id
        type: string
        description: The Salesforce Account ID for the customer to enrich.
      steps:
      - name: get-account
        type: call
        call: salesforce-read.get-account
        with:
          account_id: '{{account_id}}'
      - name: get-claims
        type: call
        call: servicenow.list-claims
        with:
          sysparm_query: caller_id.email={{get-account.PersonEmail}}^state!=7
          sysparm_fields: number,short_description,priority,state
      - name: update-account
        type: call
        call: salesforce-write.update-account
        with:
          account_id: '{{account_id}}'
          open_claims_count: '{{get-claims.total_count}}'
          risk_notes: 'Open claims: {{get-claims.total_count}} as of last enrichment'
  consumes:
  - namespace: salesforce-read
    type: http
    baseUri: https://allianz.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
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: sysparm_query
        in: query
      - name: sysparm_fields
        in: query
      operations:
      - name: list-claims
        method: GET
  - namespace: salesforce-write
    type: http
    baseUri: https://allianz.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
Open in Framework → View in Fleet → salesforce-customer-360-enrichment.yml

When a ServiceNow change request is submitted for production infrastructure, validates the change window, creates a linked Jira ticket for engineering sign-off, and notifies the CAB approvers via Teams.

naftiko: '0.5'
info:
  label: Change Management Approval Workflow
  description: When a ServiceNow change request is submitted for production infrastructure, validates the change window, creates a linked Jira ticket for engineering sign-off, and notifies the CAB approvers via Teams.
  tags:
  - itsm
  - change-management
  - servicenow
  - jira
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: submit-change-for-approval
      description: Given a ServiceNow change request number, retrieve the change details, create a linked Jira issue for the engineering team to review, and notify the Change Advisory Board (CAB) channel in Teams with the change summary and scheduled window. Invoke when a normal or emergency change is submitted for CAB review.
      inputParameters:
      - name: change_number
        type: string
        description: The ServiceNow change request number, e.g. CHG0012345.
      steps:
      - name: get-change
        type: call
        call: servicenow.get-change-request
        with:
          number: '{{change_number}}'
      - name: create-jira-review
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Change Review
          summary: 'CAB Review: {{get-change.short_description}}'
          description: 'ServiceNow: {{change_number}}

            Risk: {{get-change.risk}}

            Impact: {{get-change.impact}}

            Scheduled start: {{get-change.start_date}}

            Scheduled end: {{get-change.end_date}}

            Implementation plan: {{get-change.implementation_plan}}'
      - name: notify-cab
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.cab_channel_id
          text: 'CAB REVIEW REQUIRED: {{change_number}} | {{get-change.short_description}} | Risk: {{get-change.risk}} | Window: {{get-change.start_date}} → {{get-change.end_date}} | Jira: {{create-jira-review.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change-requests
      path: /table/change_request
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-change-request
        method: GET
  - namespace: jira
    type: http
    baseUri: https://allianz.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → change-management-approval-workflow.yml

Runs data quality validation queries against key insurance data tables in Snowflake and raises a ServiceNow incident when row counts, null rates, or referential integrity checks fall outside acceptable thresholds.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Monitor
  description: Runs data quality validation queries against key insurance data tables in Snowflake and raises a ServiceNow incident when row counts, null rates, or referential integrity checks fall outside acceptable thresholds.
  tags:
  - data
  - analytics
  - snowflake
  - servicenow
  - data-quality
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Given a Snowflake table name and schema, execute a suite of data quality validation queries (row count, null rate, referential integrity) and open a ServiceNow incident if any check fails. Invoke on a daily schedule after ETL pipeline completion.
      inputParameters:
      - name: table_name
        type: string
        description: The fully qualified Snowflake table name to validate, e.g. CLAIMS.FACT_CLAIMS.
      - name: min_row_count
        type: integer
        description: Minimum expected row count; an incident is raised if the actual count falls below this value.
      steps:
      - name: check-row-count
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT COUNT(*) AS row_count FROM {{table_name}}
          database: ALLIANZ_DW
          schema: PUBLIC
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data quality failure: {{table_name}} row count below threshold'
          description: 'Table: {{table_name}}

            Actual row count: {{check-row-count.results[0].data[0]}}

            Minimum expected: {{min_row_count}}

            Check time: now'
          category: data_engineering
          urgency: '2'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-monitor.yml

Compares the current payroll run totals from Workday against the prior period baseline in Snowflake, and raises a ServiceNow incident if any variance exceeds the configured threshold.

naftiko: '0.5'
info:
  label: Workday Payroll Variance Detector
  description: Compares the current payroll run totals from Workday against the prior period baseline in Snowflake, and raises a ServiceNow incident if any variance exceeds the configured threshold.
  tags:
  - hr
  - finance
  - payroll
  - workday
  - snowflake
  - servicenow
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: detect-payroll-variance
      description: Given a Workday payroll run ID and variance threshold percentage, fetch the current payroll totals, compare against the prior period stored in Snowflake, and open a ServiceNow incident if variance exceeds the threshold. Invoke after each payroll calculation run completes.
      inputParameters:
      - name: payroll_run_id
        type: string
        description: The Workday payroll run ID to validate.
      - name: variance_threshold_pct
        type: number
        description: Maximum acceptable variance percentage between current and prior period, e.g. 5.0 for 5%.
      steps:
      - name: get-payroll-run
        type: call
        call: workday.get-payroll-run
        with:
          runId: '{{payroll_run_id}}'
      - name: get-prior-period
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT total_gross_pay FROM PAYROLL.RUN_HISTORY ORDER BY run_date DESC LIMIT 1
          database: ALLIANZ_DW
          schema: PAYROLL
      - name: open-variance-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Payroll variance detected: run {{payroll_run_id}}'
          description: 'Current run gross pay: {{get-payroll-run.totalGrossPay}}

            Prior period: {{get-prior-period.results[0].data[0]}}

            Threshold: {{variance_threshold_pct}}%

            Immediate review required before payroll submission.'
          category: payroll
          urgency: '1'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: payroll-runs
      path: /payrollRuns/{runId}
      inputParameters:
      - name: runId
        in: path
      operations:
      - name: get-payroll-run
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → workday-payroll-variance-detector.yml

Retrieves a purchase order from SAP S/4HANA by PO number and returns the header details, line items, and current approval status for use in downstream approvals or reporting.

naftiko: '0.5'
info:
  label: SAP Purchase Order Lookup
  description: Retrieves a purchase order from SAP S/4HANA by PO number and returns the header details, line items, and current approval status for use in downstream approvals or reporting.
  tags:
  - finance
  - erp
  - sap
  - procurement
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given a SAP purchase order number, fetch the PO header and line item details from SAP S/4HANA including supplier, total amount, currency, and approval status. Use when an agent or user needs to review or validate a PO before approval or payment.
      inputParameters:
      - name: purchase_order
        type: string
        description: The SAP purchase order number, e.g. 4500012345.
      call: sap.get-po
      with:
        PurchaseOrder: '{{purchase_order}}'
      outputParameters:
      - name: supplier_name
        type: string
        mapping: $.SupplierName
      - name: total_net_amount
        type: number
        mapping: $.NetPaymentAmount
      - name: currency
        type: string
        mapping: $.DocumentCurrency
      - name: status
        type: string
        mapping: $.ProcessingStatus
  consumes:
  - namespace: sap
    type: http
    baseUri: https://allianz-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_pass
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{PurchaseOrder}')
      inputParameters:
      - name: PurchaseOrder
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-purchase-order-lookup.yml

Queries Salesforce for the current quarter's open opportunities by stage and owner, computes a weighted pipeline forecast, and posts the digest to the sales leadership Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Pipeline Forecast Digest
  description: Queries Salesforce for the current quarter's open opportunities by stage and owner, computes a weighted pipeline forecast, and posts the digest to the sales leadership Teams channel.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - forecasting
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: sales-forecasting
    port: 8080
    tools:
    - name: digest-pipeline-forecast
      description: Query Salesforce for all open opportunities closing in the current quarter, compute the weighted forecast by stage probability, and post a pipeline summary to the sales leadership Teams channel. Invoke weekly or before sales review meetings.
      inputParameters:
      - name: fiscal_quarter
        type: string
        description: The fiscal quarter filter for Salesforce SOQL, e.g. 'THIS_QUARTER'.
      steps:
      - name: get-opportunities
        type: call
        call: salesforce.run-soql
        with:
          q: SELECT Name, StageName, Amount, Probability, Owner.Name, CloseDate FROM Opportunity WHERE IsClosed = false AND CloseDate = {{fiscal_quarter}} ORDER BY Amount DESC
      - name: post-forecast
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.sales_leadership_channel_id
          text: 'Pipeline Forecast Digest ({{fiscal_quarter}}): {{get-opportunities.totalSize}} open opportunities. Top opportunities retrieved from Salesforce. Review full forecast in Salesforce Reports.'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://allianz.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: run-soql
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-pipeline-forecast-digest.yml

When an employee separation is recorded in Workday, revokes Microsoft 365 access, closes all open ServiceNow tickets assigned to the employee, and notifies the IT security team via Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding Workflow
  description: When an employee separation is recorded in Workday, revokes Microsoft 365 access, closes all open ServiceNow tickets assigned to the employee, and notifies the IT security team via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - servicenow
  - microsoft-teams
  - identity
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, revoke Microsoft 365 access, close open ServiceNow tickets, and alert the IT security team in Teams. Invoke when an employee separation is confirmed in Workday.
      inputParameters:
      - name: employee_id
        type: string
        description: The Workday worker ID of the departing employee.
      - name: termination_date
        type: string
        description: Effective termination date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: revoke-access
        type: call
        call: msgraph.disable-user
        with:
          user_id: '{{get-worker.azure_object_id}}'
          account_enabled: 'false'
      - name: close-tickets
        type: call
        call: servicenow.close-user-tickets
        with:
          caller_id: '{{get-worker.work_email}}'
          close_notes: 'Auto-closed: employee separation effective {{termination_date}}'
      - name: notify-security
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.security_channel_id
          text: 'Offboarding complete for {{get-worker.display_name}} ({{get-worker.work_email}}). M365 access revoked. Open tickets closed. Effective: {{termination_date}}'
  consumes:
  - namespace: workday
    type: http
    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
  - namespace: msgraph
    type: http
    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
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: close-user-tickets
        method: PATCH
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → employee-offboarding-workflow.yml

When a new employee is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Teams welcome message.

naftiko: '0.5'
info:
  label: New Hire Onboarding Orchestrator
  description: When a new employee is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and start date, orchestrate the full new-hire onboarding sequence across ServiceNow, Microsoft Graph, and Microsoft Teams. Invoke when a new hire record becomes active in Workday.
      inputParameters:
      - name: employee_id
        type: string
        description: 'The Workday worker ID for the new hire. Format: WD-XXXXXXX.'
      - name: start_date
        type: string
        description: The employee's first day of work in ISO 8601 format (YYYY-MM-DD).
      - name: department
        type: string
        description: The department or business unit the new hire is joining, e.g. 'Claims Operations'.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          category: hr_onboarding
          short_description: 'New hire onboarding: {{get-worker.display_name}}'
          assignment_group: IT_Onboarding
          due_date: '{{start_date}}'
      - name: provision-account
        type: call
        call: msgraph.create-user
        with:
          display_name: '{{get-worker.display_name}}'
          mail_nickname: '{{get-worker.user_login}}'
          department: '{{department}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          text: Welcome to Allianz, {{get-worker.first_name}}! Your IT onboarding ticket is {{create-ticket.number}}. Your Microsoft 365 account is ready.
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: msgraph
    type: http
    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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-hire-onboarding-orchestrator.yml

When Datadog detects an AWS cost anomaly, fetches the anomaly details, creates a ServiceNow change request to investigate, and notifies the cloud FinOps team via Teams.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Responder
  description: When Datadog detects an AWS cost anomaly, fetches the anomaly details, creates a ServiceNow change request to investigate, and notifies the cloud FinOps team via Teams.
  tags:
  - cloud
  - finops
  - datadog
  - servicenow
  - microsoft-teams
  - aws
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-ops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given a Datadog cost anomaly alert ID and the affected AWS account ID, fetch anomaly details, open a ServiceNow change request for FinOps investigation, and notify the cloud cost management channel in Teams. Invoke when a Datadog cost anomaly monitor triggers.
      inputParameters:
      - name: monitor_id
        type: string
        description: The Datadog monitor ID that triggered the cost anomaly alert.
      - name: aws_account_id
        type: string
        description: The AWS account ID where the anomaly was detected.
      - name: estimated_overage_usd
        type: number
        description: Estimated cost overage in USD detected by the anomaly alert.
      steps:
      - name: get-monitor
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: open-change-request
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'AWS Cost Anomaly: {{get-monitor.name}} — est. overage ${{estimated_overage_usd}}'
          description: 'AWS Account: {{aws_account_id}}

            Monitor: {{get-monitor.name}}

            Estimated overage: ${{estimated_overage_usd}}

            Query: {{get-monitor.query}}'
          type: normal
          category: Cloud Cost Management
      - name: notify-finops
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.finops_channel_id
          text: 'COST ANOMALY: AWS account {{aws_account_id}} | Monitor: {{get-monitor.name}} | Est. overage: ${{estimated_overage_usd}} | ServiceNow: {{open-change-request.number}}'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: monitors
      path: /monitor/{monitor_id}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-anomaly-responder.yml

Fetches completed sprint data from Jira, calculates team velocity metrics, and publishes a sprint summary to the engineering leadership Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Report
  description: Fetches completed sprint data from Jira, calculates team velocity metrics, and publishes a sprint summary to the engineering leadership Teams channel.
  tags:
  - devops
  - jira
  - microsoft-teams
  - reporting
  - agile
capability:
  exposes:
  - type: mcp
    namespace: devops-reporting
    port: 8080
    tools:
    - name: publish-sprint-velocity
      description: Given a Jira board ID and sprint ID, retrieve the sprint report including completed story points and issue counts, then post a formatted velocity summary to the engineering leadership Teams channel. Invoke at sprint close or on demand.
      inputParameters:
      - name: board_id
        type: integer
        description: The Jira Scrum board ID, e.g. 42.
      - name: sprint_id
        type: integer
        description: The Jira sprint ID to report on.
      steps:
      - name: get-sprint
        type: call
        call: jira.get-sprint
        with:
          sprintId: '{{sprint_id}}'
      - name: get-sprint-issues
        type: call
        call: jira.get-sprint-issues
        with:
          sprintId: '{{sprint_id}}'
          jql: sprint = {{sprint_id}} AND status = Done
      - name: post-report
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.eng_leadership_channel_id
          text: 'Sprint Report: {{get-sprint.name}} | Completed: {{get-sprint-issues.total}} issues | State: {{get-sprint.state}} | Goal: {{get-sprint.goal}}'
  consumes:
  - namespace: jira
    type: http
    baseUri: https://allianz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: sprints
      path: /sprint/{sprintId}
      inputParameters:
      - name: sprintId
        in: path
      operations:
      - name: get-sprint
        method: GET
    - name: sprint-issues
      path: /search
      inputParameters:
      - name: jql
        in: query
      operations:
      - name: get-sprint-issues
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-velocity-report.yml

When a GitHub release is published, fetches the merged pull requests since the last release, generates structured release notes using an AI model, and posts them to the engineering Teams channel.

naftiko: '0.5'
info:
  label: GitHub Deployment Release Notes Generator
  description: When a GitHub release is published, fetches the merged pull requests since the last release, generates structured release notes using an AI model, and posts them to the engineering Teams channel.
  tags:
  - devops
  - github
  - ai
  - microsoft-teams
  - release-management
capability:
  exposes:
  - type: mcp
    namespace: release-ops
    port: 8080
    tools:
    - name: generate-release-notes
      description: Given a GitHub repository, release tag, and prior tag, fetch all merged pull requests between the two tags, generate structured release notes via OpenAI, and post the release notes to the engineering Teams channel. Invoke when a new GitHub release is published.
      inputParameters:
      - name: repo_owner
        type: string
        description: The GitHub organization or owner name, e.g. 'allianz'.
      - name: repo_name
        type: string
        description: The GitHub repository name.
      - name: release_tag
        type: string
        description: The new release tag, e.g. 'v2.5.0'.
      - name: prior_tag
        type: string
        description: The previous release tag to compare against, e.g. 'v2.4.0'.
      steps:
      - name: get-commits
        type: call
        call: github.compare-commits
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          base: '{{prior_tag}}'
          head: '{{release_tag}}'
      - name: generate-notes
        type: call
        call: openai.create-completion
        with:
          model: gpt-4o
          prompt: 'Generate structured release notes for {{repo_name}} {{release_tag}} based on these commits between {{prior_tag}} and {{release_tag}}: {{get-commits.commits}}. Format as: ## What''s New, ## Bug Fixes, ## Breaking Changes.'
      - name: post-release-notes
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.engineering_channel_id
          text: 'Release {{release_tag}} published for {{repo_owner}}/{{repo_name}}:

            {{generate-notes.choices[0].message.content}}'
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: compare
      path: /repos/{owner}/{repo}/compare/{base}...{head}
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: base
        in: path
      - name: head
        in: path
      operations:
      - name: compare-commits
        method: GET
  - namespace: openai
    type: http
    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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → github-deployment-release-notes-generator.yml

Fetches all unassigned ServiceNow incidents older than a configurable threshold, uses an AI model to suggest priority and assignment group, and updates each incident record with the recommended routing.

naftiko: '0.5'
info:
  label: ServiceNow Backlog Triage and Prioritization
  description: Fetches all unassigned ServiceNow incidents older than a configurable threshold, uses an AI model to suggest priority and assignment group, and updates each incident record with the recommended routing.
  tags:
  - itsm
  - servicenow
  - ai
  - triage
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: itsm-triage
    port: 8080
    tools:
    - name: triage-incident-backlog
      description: Given a maximum age in hours, fetch all unassigned open ServiceNow incidents older than that threshold, call the OpenAI API to suggest priority and assignment group based on the incident description, and update each incident with the AI-recommended routing. Invoke daily or when backlog size exceeds SLA limits.
      inputParameters:
      - name: max_age_hours
        type: integer
        description: Maximum age in hours; incidents older than this threshold are included in the triage batch, e.g. 4.
      - name: max_batch_size
        type: integer
        description: Maximum number of incidents to process in one triage run, e.g. 20.
      steps:
      - name: get-unassigned-incidents
        type: call
        call: servicenow-read.list-incidents
        with:
          sysparm_query: assigned_toISEMPTY^state=1^sys_created_onRELATIVELE@hour@ago@{{max_age_hours}}
          sysparm_limit: '{{max_batch_size}}'
          sysparm_fields: number,short_description,description,category
      - name: suggest-routing
        type: call
        call: openai.create-completion
        with:
          model: gpt-4o
          prompt: 'For each IT incident below, suggest a priority (1=Critical,2=High,3=Moderate,4=Low) and assignment group from: [Network_Ops, Security_Ops, App_Support, Desktop_Support, Claims_IT, Finance_IT]. Return JSON array with fields: number, priority, assignment_group.


            Incidents: {{get-unassigned-incidents.result}}'
      - name: update-incidents
        type: call
        call: servicenow-write.bulk-update-incidents
        with:
          updates: '{{suggest-routing.choices[0].message.content}}'
  consumes:
  - namespace: servicenow-read
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: sysparm_query
        in: query
      - name: sysparm_limit
        in: query
      - name: sysparm_fields
        in: query
      operations:
      - name: list-incidents
        method: GET
  - namespace: openai
    type: http
    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
  - namespace: servicenow-write
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents-bulk
      path: /table/incident
      operations:
      - name: bulk-update-incidents
        method: PATCH
Open in Framework → View in Fleet → servicenow-backlog-triage-and-prioritization.yml

Queries Snowflake for the latest Solvency Capital Requirement (SCR) and Minimum Capital Requirement (MCR) metrics, compares them against regulatory thresholds, and raises a ServiceNow incident if any ratio falls below the required minimum.

naftiko: '0.5'
info:
  label: Solvency II Capital Adequacy Check
  description: Queries Snowflake for the latest Solvency Capital Requirement (SCR) and Minimum Capital Requirement (MCR) metrics, compares them against regulatory thresholds, and raises a ServiceNow incident if any ratio falls below the required minimum.
  tags:
  - compliance
  - insurance
  - finance
  - snowflake
  - servicenow
  - solvency-ii
  - capital-management
capability:
  exposes:
  - type: mcp
    namespace: capital-compliance
    port: 8080
    tools:
    - name: check-capital-adequacy
      description: Given a reporting entity and calculation date, query Snowflake for the current SCR ratio and MCR ratio, compare against Solvency II minimums (SCR >= 100%, MCR >= 100%), and open a ServiceNow P1 incident if either ratio is breached. Invoke daily as part of the capital monitoring schedule.
      inputParameters:
      - name: entity_code
        type: string
        description: The legal entity code for the Allianz entity to check, e.g. 'AZSE' for Allianz SE.
      - name: calculation_date
        type: string
        description: The date of the capital calculation in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-capital-metrics
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT entity_code, scr_ratio, mcr_ratio, own_funds, scr_value, mcr_value FROM SOLVENCY.CAPITAL_ADEQUACY WHERE entity_code = '{{entity_code}}' AND calculation_date = '{{calculation_date}}'
          database: ALLIANZ_DW
          schema: SOLVENCY
      - name: raise-breach-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Solvency II capital breach: {{entity_code}} SCR/MCR below minimum'
          description: 'Entity: {{entity_code}}

            Calculation date: {{calculation_date}}

            SCR ratio: {{get-capital-metrics.results[0].data[1]}}

            MCR ratio: {{get-capital-metrics.results[0].data[2]}}

            Immediately escalate to Group CFO and Chief Actuary.'
          category: regulatory_capital
          urgency: '1'
          impact: '1'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → solvency-ii-capital-adequacy-check.yml

When a critical ServiceNow incident is raised, creates a Jira ticket for engineering investigation, posts an alert to the Teams ops channel, and tracks the incident in Datadog.

naftiko: '0.5'
info:
  label: IT Incident Response Escalation
  description: When a critical ServiceNow incident is raised, creates a Jira ticket for engineering investigation, posts an alert to the Teams ops channel, and tracks the incident in Datadog.
  tags:
  - itsm
  - incident-response
  - servicenow
  - jira
  - microsoft-teams
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: it-ops
    port: 8080
    tools:
    - name: handle-critical-incident
      description: Given a ServiceNow incident number, retrieve its details, create a linked Jira engineering ticket, post a priority alert to the Teams ops channel, and register a Datadog event for timeline correlation. Invoke for P1 and P2 incidents.
      inputParameters:
      - name: incident_number
        type: string
        description: The ServiceNow incident number, e.g. INC0012345.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          number: '{{incident_number}}'
      - name: create-jira-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Bug
          summary: '[P1] {{get-incident.short_description}}'
          description: 'ServiceNow: {{incident_number}}

            Impact: {{get-incident.impact}}

            Description: {{get-incident.description}}'
      - name: post-teams-alert
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.ops_channel_id
          text: 'CRITICAL INCIDENT: {{incident_number}} | {{get-incident.short_description}} | Jira: {{create-jira-ticket.key}} | Assigned: {{get-incident.assigned_to}}'
      - name: register-datadog-event
        type: call
        call: datadog.create-event
        with:
          title: 'Incident {{incident_number}}: {{get-incident.short_description}}'
          text: 'ServiceNow P1 incident raised. Jira: {{create-jira-ticket.key}}'
          alert_type: error
          tags: incident:{{incident_number}},env:production
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
  - namespace: jira
    type: http
    baseUri: https://allianz.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → it-incident-response-escalation.yml

Queries Power BI for the latest asset management portfolio KPIs, compiles a performance digest, and posts a summary report to the finance leadership Teams channel on a scheduled basis.

naftiko: '0.5'
info:
  label: Asset Management Portfolio Performance Digest
  description: Queries Power BI for the latest asset management portfolio KPIs, compiles a performance digest, and posts a summary report to the finance leadership Teams channel on a scheduled basis.
  tags:
  - finance
  - asset-management
  - power-bi
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance-reporting
    port: 8080
    tools:
    - name: digest-portfolio-performance
      description: Fetch the latest portfolio performance dataset from Power BI, format a KPI summary, and post the digest to the finance leadership Teams channel. Invoke on a weekly schedule or on demand before investment committee meetings.
      inputParameters:
      - name: dataset_id
        type: string
        description: The Power BI dataset ID containing portfolio KPI data.
      - name: group_id
        type: string
        description: The Power BI workspace (group) ID, e.g. the Asset Management workspace.
      steps:
      - name: get-dataset-rows
        type: call
        call: powerbi.execute-query
        with:
          group_id: '{{group_id}}'
          dataset_id: '{{dataset_id}}'
          query: EVALUATE SUMMARIZECOLUMNS(Portfolio[Fund], 'Metrics'[TotalAUM], 'Metrics'[WeeklyReturn], 'Metrics'[YTDReturn])
      - name: post-digest
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.finance_leadership_channel_id
          text: 'Weekly Portfolio Digest: {{get-dataset-rows.results[0].tables[0].rows.length}} funds reported. Data retrieved from Power BI dataset {{dataset_id}}.'
  consumes:
  - namespace: powerbi
    type: http
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets-query
      path: /groups/{group_id}/datasets/{dataset_id}/executeQueries
      inputParameters:
      - name: group_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: execute-query
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → asset-management-portfolio-performance-digest.yml

Queries Snowflake for the latest compliance metrics, generates a structured regulatory report using an AI model, and stores the output in SharePoint for the compliance team.

naftiko: '0.5'
info:
  label: Regulatory Compliance Report Generation
  description: Queries Snowflake for the latest compliance metrics, generates a structured regulatory report using an AI model, and stores the output in SharePoint for the compliance team.
  tags:
  - compliance
  - insurance
  - snowflake
  - anthropic
  - sharepoint
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: compliance-reporting
    port: 8080
    tools:
    - name: generate-compliance-report
      description: Given a reporting period and regulatory framework (e.g. Solvency II, IFRS 17), query Snowflake for compliance metrics, generate a narrative report via Anthropic, and upload the report to the SharePoint Compliance library. Invoke monthly before regulatory submission deadlines.
      inputParameters:
      - name: period
        type: string
        description: Reporting period in YYYY-QN format, e.g. 2025-Q4.
      - name: framework
        type: string
        description: Regulatory framework identifier, e.g. 'Solvency II' or 'IFRS 17'.
      steps:
      - name: get-metrics
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT metric_name, metric_value, threshold, status FROM COMPLIANCE.REGULATORY_METRICS WHERE period = '{{period}}' AND framework = '{{framework}}'
          database: ALLIANZ_DW
          schema: COMPLIANCE
      - name: generate-report
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 4096
          system: You are a regulatory compliance analyst for a global insurer. Generate a formal compliance report narrative based on the provided metrics data. Structure the report with an executive summary, metric analysis, and remediation recommendations.
          content: 'Generate a {{framework}} compliance report for period {{period}} based on these metrics: {{get-metrics.results}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: $secrets.compliance_site_id
          folder_path: Regulatory Reports/{{framework}}/{{period}}
          file_name: compliance-report-{{period}}.txt
          content: '{{generate-report.content[0].text}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://allianz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - 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: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - namespace: sharepoint
    type: http
    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_path}/{file_name}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → regulatory-compliance-report-generation.yml

When a Datadog SLO drops below its error budget threshold, fetches the SLO details, opens a ServiceNow incident, and posts a resolution alert to the relevant Teams engineering channel.

naftiko: '0.5'
info:
  label: Datadog SLO Breach Alert
  description: When a Datadog SLO drops below its error budget threshold, fetches the SLO details, opens a ServiceNow incident, and posts a resolution alert to the relevant Teams engineering channel.
  tags:
  - observability
  - datadog
  - servicenow
  - microsoft-teams
  - slo
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: observability-ops
    port: 8080
    tools:
    - name: handle-slo-breach
      description: Given a Datadog SLO ID and current error budget remaining, fetch the SLO status, open a ServiceNow incident with full context, and notify the engineering channel in Teams. Invoke when a Datadog monitor triggers an SLO budget burn alert.
      inputParameters:
      - name: slo_id
        type: string
        description: The Datadog SLO ID that breached its error budget threshold.
      - name: error_budget_remaining
        type: number
        description: Remaining error budget percentage at time of breach, e.g. 2.5.
      steps:
      - name: get-slo
        type: call
        call: datadog.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'SLO Breach: {{get-slo.data.name}}'
          urgency: '1'
          impact: '1'
          description: 'SLO: {{get-slo.data.name}}

            ID: {{slo_id}}

            Error budget remaining: {{error_budget_remaining}}%

            Target: {{get-slo.data.thresholds[0].target}}%'
      - name: alert-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.engineering_channel_id
          text: 'SLO BREACH: {{get-slo.data.name}} — {{error_budget_remaining}}% error budget remaining. ServiceNow incident: {{open-incident.number}}'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo/{slo_id}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://allianz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-breach-alert.yml

When a new job requisition is approved in Workday, creates a Jira recruiting ticket, posts the open position to the talent acquisition Teams channel, and updates the requisition with the Jira ticket reference.

naftiko: '0.5'
info:
  label: Workday Open Position Recruiter Assignment
  description: When a new job requisition is approved in Workday, creates a Jira recruiting ticket, posts the open position to the talent acquisition Teams channel, and updates the requisition with the Jira ticket reference.
  tags:
  - hr
  - recruiting
  - workday
  - jira
  - microsoft-teams
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: recruiting-ops
    port: 8080
    tools:
    - name: assign-recruiter-for-requisition
      description: Given a Workday job requisition ID, fetch the requisition details, create a Jira ticket in the talent acquisition project with job details and hiring manager, and notify the talent acquisition Teams channel. Invoke when a job requisition is approved in Workday.
      inputParameters:
      - name: requisition_id
        type: string
        description: The Workday job requisition ID, e.g. 'JR-00123'.
      steps:
      - name: get-requisition
        type: call
        call: workday.get-job-requisition
        with:
          requisitionId: '{{requisition_id}}'
      - name: create-recruiting-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: TA
          issuetype: Recruiting Task
          summary: 'Open req: {{get-requisition.jobTitle}} — {{get-requisition.department}}'
          description: 'Requisition ID: {{requisition_id}}

            Job title: {{get-requisition.jobTitle}}

            Department: {{get-requisition.department}}

            Hiring manager: {{get-requisition.hiringManagerName}}

            Location: {{get-requisition.location}}

            Target start date: {{get-requisition.targetStartDate}}'
      - name: notify-ta-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: $secrets.talent_acquisition_channel_id
          text: 'New Approved Requisition: {{get-requisition.jobTitle}} | Department: {{get-requisition.department}} | Hiring Manager: {{get-requisition.hiringManagerName}} | Jira: {{create-recruiting-ticket.key}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /jobRequisitions/{requisitionId}
      inputParameters:
      - name: requisitionId
        in: path
      operations:
      - name: get-job-requisition
        method: GET
  - namespace: jira
    type: http
    baseUri: https://allianz.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.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-channel-message
        method: POST
Open in Framework → View in Fleet → workday-open-position-recruiter-assignment.yml

Retrieves a Jira issue by its key and returns the summary, status, assignee, priority, and description for use in downstream orchestrations or agent context gathering.

naftiko: '0.5'
info:
  label: Jira Issue Lookup by Key
  description: Retrieves a Jira issue by its key and returns the summary, status, assignee, priority, and description for use in downstream orchestrations or agent context gathering.
  tags:
  - devops
  - jira
  - lookup
  - itsm
capability:
  exposes:
  - type: mcp
    namespace: jira-lookup
    port: 8080
    tools:
    - name: get-jira-issue
      description: Given a Jira issue key, fetch the full issue record from Jira including summary, status, assignee, priority, and description. Use when an agent needs issue context before creating a related record or sending a notification.
      inputParameters:
      - name: issue_key
        type: string
        description: The Jira issue key, e.g. 'OPS-1234' or 'SEC-567'.
      call: jira.get-issue
      with:
        issueIdOrKey: '{{issue_key}}'
      outputParameters:
      - name: summary
        type: string
        mapping: $.fields.summary
      - name: status
        type: string
        mapping: $.fields.status.name
      - name: assignee
        type: string
        mapping: $.fields.assignee.displayName
      - name: priority
        type: string
        mapping: $.fields.priority.name
  consumes:
  - namespace: jira
    type: http
    baseUri: https://allianz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issues
      path: /issue/{issueIdOrKey}
      inputParameters:
      - name: issueIdOrKey
        in: path
      operations:
      - name: get-issue
        method: GET
Open in Framework → View in Fleet → jira-issue-lookup-by-key.yml

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
Open in Framework → View in Fleet → merchant-fee-rate-lookup.yml

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

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
Open in Framework → View in Fleet → tableau-financial-dashboard-refresh.yml

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

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
Open in Framework → View in Fleet → snowflake-data-quality-monitoring-alert.yml

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
Open in Framework → View in Fleet → cloudflare-ddos-mitigation-response.yml

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
Open in Framework → View in Fleet → dynatrace-application-slowdown-response.yml

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
Open in Framework → View in Fleet → okta-access-provisioning-for-new-role.yml

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
Open in Framework → View in Fleet → merchant-settlement-status-lookup.yml

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
Open in Framework → View in Fleet → salesforce-lead-to-card-applicant-enrichment.yml

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
Open in Framework → View in Fleet → jira-sprint-retrospective-digest.yml

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
Open in Framework → View in Fleet → cardholder-rewards-balance-lookup.yml

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
Open in Framework → View in Fleet → cardholder-digital-wallet-provisioning.yml

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
Open in Framework → View in Fleet → cardholder-offer-eligibility-check.yml

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
Open in Framework → View in Fleet → cardholder-account-status-lookup.yml

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

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
Open in Framework → View in Fleet → corporate-expense-policy-violation-handler.yml

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

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
Open in Framework → View in Fleet → aml-transaction-screening-workflow.yml

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
Open in Framework → View in Fleet → workday-employee-termination-orchestration.yml

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
Open in Framework → View in Fleet → payment-gateway-certificate-rotation.yml

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
Open in Framework → View in Fleet → vendor-invoice-approval-workflow.yml

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
Open in Framework → View in Fleet → pci-compliance-status-lookup.yml

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
Open in Framework → View in Fleet → tableau-dashboard-access-provisioning.yml

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
Open in Framework → View in Fleet → marketing-campaign-performance-digest.yml

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
Open in Framework → View in Fleet → merchant-onboarding-application-status-check.yml

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
Open in Framework → View in Fleet → salesforce-renewal-pipeline-digest.yml

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
Open in Framework → View in Fleet → employee-performance-review-cycle-initiation.yml

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
Open in Framework → View in Fleet → cloudwatch-lambda-error-spike-response.yml

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
Open in Framework → View in Fleet → suspicious-login-threat-response.yml

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
Open in Framework → View in Fleet → merchant-category-code-lookup.yml

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
Open in Framework → View in Fleet → cardholder-travel-notification-status.yml

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

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
Open in Framework → View in Fleet → amex-offer-activation-campaign.yml

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

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
Open in Framework → View in Fleet → corporate-card-expense-report-sync.yml

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
Open in Framework → View in Fleet → regulatory-compliance-document-summarization.yml

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
Open in Framework → View in Fleet → corporate-card-bulk-provisioning.yml

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
Open in Framework → View in Fleet → bloomberg-market-data-alert-workflow.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-to-card-program-sync.yml

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

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
Open in Framework → View in Fleet → merchant-risk-assessment-workflow.yml

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
Open in Framework → View in Fleet → cardholder-spend-category-insights-digest.yml

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
Open in Framework → View in Fleet → currency-exchange-rate-lookup.yml

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
Open in Framework → View in Fleet → global-lounge-access-lookup.yml

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
Open in Framework → View in Fleet → corporate-card-spending-limit-lookup.yml

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
Open in Framework → View in Fleet → adobe-analytics-conversion-funnel-report.yml

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
Open in Framework → View in Fleet → supplementary-card-list-lookup.yml

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
Open in Framework → View in Fleet → azure-resource-cost-optimization-alert.yml

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
Open in Framework → View in Fleet → cardholder-annual-fee-waiver-evaluation.yml

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

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
Open in Framework → View in Fleet → cardholder-credit-limit-increase-review.yml

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
Open in Framework → View in Fleet → cardholder-benefits-enrollment-sync.yml

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
Open in Framework → View in Fleet → cardholder-account-closure-workflow.yml

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
Open in Framework → View in Fleet → servicenow-change-management-notification.yml

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
Open in Framework → View in Fleet → fraud-alert-investigation-workflow.yml

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
Open in Framework → View in Fleet → cardholder-statement-balance-lookup.yml

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
Open in Framework → View in Fleet → palo-alto-networks-threat-block-and-incident-log.yml

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
Open in Framework → View in Fleet → quarterly-merchant-revenue-report.yml

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

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
Open in Framework → View in Fleet → datadog-slo-breach-weekly-digest.yml

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
Open in Framework → View in Fleet → cardholder-autopay-status-lookup.yml

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
Open in Framework → View in Fleet → cardholder-credit-limit-lookup.yml

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

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

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
Open in Framework → View in Fleet → cardholder-paperless-preference-lookup.yml

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
Open in Framework → View in Fleet → merchant-dispute-resolution-workflow.yml

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
Open in Framework → View in Fleet → mailchimp-customer-retention-campaign.yml

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
Open in Framework → View in Fleet → cardholder-address-on-file-lookup.yml

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
Open in Framework → View in Fleet → linkedin-employer-brand-campaign-sync.yml

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
Open in Framework → View in Fleet → employee-offboarding-card-cancellation.yml

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
Open in Framework → View in Fleet → workday-open-requisition-report.yml

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

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
Open in Framework → View in Fleet → cardholder-recent-transactions-lookup.yml

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
Open in Framework → View in Fleet → cardholder-international-fee-disclosure.yml

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

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

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

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
Open in Framework → View in Fleet → cardholder-payment-plan-setup.yml

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
Open in Framework → View in Fleet → vendor-contract-renewal-workflow.yml

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
Open in Framework → View in Fleet → terraform-infrastructure-provisioning-approval.yml

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
Open in Framework → View in Fleet → cardholder-dispute-status-lookup.yml

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
Open in Framework → View in Fleet → new-merchant-onboarding-orchestration.yml

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
Open in Framework → View in Fleet → cardholder-kyc-document-request.yml

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
Open in Framework → View in Fleet → box-document-classification-workflow.yml

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

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
Open in Framework → View in Fleet → github-pull-request-security-scan.yml

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
Open in Framework → View in Fleet → workday-compensation-change-approval.yml

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
Open in Framework → View in Fleet → new-employee-card-provisioning.yml

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
Open in Framework → View in Fleet → oracle-database-health-monitoring.yml

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
Open in Framework → View in Fleet → new-relic-performance-degradation-handler.yml

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
Open in Framework → View in Fleet → cardholder-lost-card-replacement-workflow.yml

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
Open in Framework → View in Fleet → customer-sentiment-analysis-from-support-cases.yml

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
Open in Framework → View in Fleet → transaction-anomaly-monitoring-alert.yml

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
Open in Framework → View in Fleet → cardholder-fraud-alert-triage.yml

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
Open in Framework → View in Fleet → corporate-travel-booking-policy-compliance-check.yml

Queries Azure costs and publishes allocation to Confluence.

naftiko: '0.5'
info:
  label: Azure Cost Allocation Report Workflow
  description: Queries Azure costs and publishes allocation to Confluence.
  tags:
  - cloud
  - finance
  - microsoft-azure
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: cost-ops
    port: 8080
    tools:
    - name: gen-report
      description: Generate cost report.
      inputParameters:
      - name: period
        in: body
        type: string
        description: YYYY-MM.
      steps:
      - name: costs
        type: call
        call: azure-cost.get-usage
        with:
          period: '{{period}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space_key: FINOPS
          title: Azure Costs {{period}}
  consumes:
  - type: http
    namespace: azure-cost
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: usage
      path: /subscriptions/$secrets.azure_sub/providers/Microsoft.CostManagement/query
      operations:
      - name: get-usage
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://axa.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → azure-cost-allocation-report-workflow.yml

Pulls AXA brand campaign performance metrics from LinkedIn Marketing, combines with HubSpot lead attribution data, and posts a weekly report to the Brand Marketing Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Brand Campaign Performance Report
  description: Pulls AXA brand campaign performance metrics from LinkedIn Marketing, combines with HubSpot lead attribution data, and posts a weekly report to the Brand Marketing Teams channel.
  tags:
  - marketing
  - social
  - linkedin
  - hubspot
  - microsoft-teams
  - brand
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: brand-marketing
    port: 8080
    tools:
    - name: publish-linkedin-brand-report
      description: Given a LinkedIn organization URN and date range, fetch campaign analytics and merge with HubSpot lead data attributed to LinkedIn, then post a weekly brand performance report to Teams.
      inputParameters:
      - name: org_urn
        in: body
        type: string
        description: The LinkedIn organization URN for AXA, e.g. 'urn:li:organization:1234'.
      - 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-metrics
        type: call
        call: linkedin.get-organization-follower-statistics
        with:
          organizationalEntity: '{{org_urn}}'
      - name: get-hubspot-attribution
        type: call
        call: hubspot.list-leads
        with:
          source: LinkedIn
          start: '{{start_date}}'
          end: '{{end_date}}'
      - name: post-report
        type: call
        call: msteams.post-channel-message
        with:
          channel: brand-marketing
          message: 'LinkedIn Brand Report ({{start_date}} to {{end_date}}): Followers {{get-linkedin-metrics.followerCount}}, New HubSpot leads from LinkedIn: {{get-hubspot-attribution.count}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: organization-follower-statistics
      path: /organizationalEntityFollowerStatistics
      operations:
      - name: get-organization-follower-statistics
        method: GET
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts/search
      operations:
      - name: list-leads
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-brand-campaign-performance-report.yml

Queries Snowflake for treaty data, validates terms, and publishes to Confluence.

naftiko: '0.5'
info:
  label: Reinsurance Treaty Compliance Report
  description: Queries Snowflake for treaty data, validates terms, and publishes to Confluence.
  tags:
  - insurance
  - actuarial
  - compliance
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: reinsurance-ops
    port: 8080
    tools:
    - name: treaty-report
      description: Generate treaty report.
      inputParameters:
      - name: treaty
        in: body
        type: string
        description: Treaty ID.
      - name: period
        in: body
        type: string
        description: YYYY-Q.
      steps:
      - name: query
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM TREATY WHERE treaty='{{treaty}}'
      - name: validate
        type: call
        call: reinsurance-api.validate
        with:
          treaty: '{{treaty}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space_key: REINSURANCE
          title: Treaty {{treaty}} - {{period}}
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: reinsurance-api
    baseUri: https://api.axa.com/reinsurance/v1
    authentication:
      type: bearer
      token: $secrets.reinsurance_token
    resources:
    - name: validation
      path: /treaties/validate
      operations:
      - name: validate
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://axa.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → reinsurance-treaty-compliance-report.yml

Processes GDPR/CCPA requests by querying systems and logging in ServiceNow.

naftiko: '0.5'
info:
  label: Data Subject Request Workflow
  description: Processes GDPR/CCPA requests by querying systems and logging in ServiceNow.
  tags:
  - insurance
  - compliance
  - privacy
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: dsar-ops
    port: 8080
    tools:
    - name: process-dsar
      description: Process DSAR.
      inputParameters:
      - name: email
        in: body
        type: string
        description: Subject email.
      - name: type
        in: body
        type: string
        description: Request type.
      steps:
      - name: sf
        type: call
        call: salesforce.search
        with:
          email: '{{email}}'
      - name: claims
        type: call
        call: claims-api.search
        with:
          email: '{{email}}'
      - name: log
        type: call
        call: servicenow.create-record
        with:
          table: u_dsar
          email: '{{email}}'
          type: '{{type}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
  - type: http
    namespace: claims-api
    baseUri: https://api.axa.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: search
      path: /claims/search
      operations:
      - name: search
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_dsar
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → data-subject-request-workflow.yml

Generates medical record request, creates tracking, and sets Jira follow-up.

naftiko: '0.5'
info:
  label: Claims Medical Record Request Workflow
  description: Generates medical record request, creates tracking, and sets Jira follow-up.
  tags:
  - insurance
  - claims
  - servicenow
  - jira
capability:
  exposes:
  - type: mcp
    namespace: medrecord-ops
    port: 8080
    tools:
    - name: request-records
      description: Request medical records.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: provider
        in: body
        type: string
        description: Provider.
      - name: claimant
        in: body
        type: string
        description: Claimant.
      steps:
      - name: gen
        type: call
        call: document-api.generate
        with:
          claim_id: '{{claim_id}}'
          provider: '{{provider}}'
      - name: track
        type: call
        call: servicenow.create-record
        with:
          table: u_med_request
          claim_id: '{{claim_id}}'
      - name: followup
        type: call
        call: jira.create-issue
        with:
          project_key: CLAIMS
          issuetype: Task
          summary: 'Med records: {{claim_id}}'
  consumes:
  - type: http
    namespace: document-api
    baseUri: https://api.axa.com/documents/v1
    authentication:
      type: bearer
      token: $secrets.document_api_token
    resources:
    - name: medical
      path: /generate/medical-request
      operations:
      - name: generate
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_med_request
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → claims-medical-record-request-workflow.yml

Calculates BI reserve, updates claim, and notifies manager.

naftiko: '0.5'
info:
  label: Bodily Injury Reserve Calculator
  description: Calculates BI reserve, updates claim, and notifies manager.
  tags:
  - insurance
  - claims
  - actuarial
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bi-reserve
    port: 8080
    tools:
    - name: calc-bi
      description: Calculate BI reserve.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: injury
        in: body
        type: string
        description: Injury.
      - name: jurisdiction
        in: body
        type: string
        description: State.
      steps:
      - name: calc
        type: call
        call: reserve-engine.calc
        with:
          injury: '{{injury}}'
          jurisdiction: '{{jurisdiction}}'
      - name: update
        type: call
        call: servicenow.update
        with:
          claim_id: '{{claim_id}}'
          reserve: '{{calc.amount}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.claims_mgr
          text: 'BI: {{claim_id}} = ${{calc.amount}}'
  consumes:
  - type: http
    namespace: reserve-engine
    baseUri: https://api.axa.com/actuarial/v1
    authentication:
      type: bearer
      token: $secrets.actuarial_api_token
    resources:
    - name: bi-reserves
      path: /reserves/bodily-injury
      operations:
      - name: calc
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: reserves
      path: /table/sn_claim_reserve/{{claim_id}}
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: update
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → bodily-injury-reserve-calculator.yml

Retrieves mortality rate data for age, gender, and table version for life insurance pricing.

naftiko: '0.5'
info:
  label: Actuarial Mortality Table Lookup
  description: Retrieves mortality rate data for age, gender, and table version for life insurance pricing.
  tags:
  - insurance
  - actuarial
  - life
capability:
  exposes:
  - type: mcp
    namespace: mortality-ops
    port: 8080
    tools:
    - name: get-rate
      description: Look up mortality rate. Returns rate and expectancy.
      inputParameters:
      - name: age
        in: body
        type: integer
        description: Insured age.
      - name: gender
        in: body
        type: string
        description: Gender.
      - name: table
        in: body
        type: string
        description: Table version.
      call: actuarial-api.get-rate
      with:
        age: '{{age}}'
        gender: '{{gender}}'
        table: '{{table}}'
      outputParameters:
      - name: rate
        type: number
        mapping: $.annualMortalityRate
      - name: expectancy
        type: number
        mapping: $.lifeExpectancy
  consumes:
  - type: http
    namespace: actuarial-api
    baseUri: https://api.axa.com/actuarial/v1
    authentication:
      type: bearer
      token: $secrets.actuarial_api_token
    resources:
    - name: mortality
      path: /mortality-tables/{{table}}/rates
      inputParameters:
      - name: table
        in: path
      operations:
      - name: get-rate
        method: GET
Open in Framework → View in Fleet → actuarial-mortality-table-lookup.yml

Validates adjuster authority, updates reserve in ServiceNow, and notifies claims manager.

naftiko: '0.5'
info:
  label: Claims Reserve Adjustment Workflow
  description: Validates adjuster authority, updates reserve in ServiceNow, and notifies claims manager.
  tags:
  - insurance
  - claims
  - actuarial
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: reserve-adj
    port: 8080
    tools:
    - name: adjust-reserve
      description: Adjust claim reserve.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: amount
        in: body
        type: number
        description: New reserve.
      - name: adjuster
        in: body
        type: string
        description: Adjuster.
      steps:
      - name: check
        type: call
        call: claims-api.check-auth
        with:
          adjuster: '{{adjuster}}'
          amount: '{{amount}}'
      - name: update
        type: call
        call: servicenow.update-reserve
        with:
          claim_id: '{{claim_id}}'
          reserve: '{{amount}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.claims_mgr
          text: 'Reserve: {{claim_id}} = ${{amount}}'
  consumes:
  - type: http
    namespace: claims-api
    baseUri: https://api.axa.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: authority
      path: /authority/check
      operations:
      - name: check-auth
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: reserves
      path: /table/sn_claim_reserve/{{claim_id}}
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: update-reserve
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → claims-reserve-adjustment-workflow.yml

Evaluates loss type and adjuster workload, assigns optimal adjuster in Salesforce, and notifies via Microsoft Teams.

naftiko: '0.5'
info:
  label: Claims Adjuster Assignment Router
  description: Evaluates loss type and adjuster workload, assigns optimal adjuster in Salesforce, and notifies via Microsoft Teams.
  tags:
  - insurance
  - claims
  - salesforce
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: claims-route
    port: 8080
    tools:
    - name: route-claim
      description: Route claim to best adjuster. Checks capacity, assigns, notifies.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim ID.
      - name: loss_type
        in: body
        type: string
        description: Loss type.
      steps:
      - name: get-capacity
        type: call
        call: workday.get-capacity
        with:
          department: claims-{{loss_type}}
      - name: assign
        type: call
        call: salesforce.assign
        with:
          claim_id: '{{claim_id}}'
          adjuster: '{{get-capacity.id}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.claims_channel
          text: Claim {{claim_id}} ({{loss_type}}) assigned.
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/axa
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: capacity
      path: /staffing/teamCapacity
      operations:
      - name: get-capacity
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/Claim__c/{{claim_id}}
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: assign
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → claims-adjuster-assignment-router.yml

Triggers quarterly reserve calculations in Snowflake, validates results, and publishes to Power BI.

naftiko: '0.5'
info:
  label: Actuarial Reserve Calculation Trigger
  description: Triggers quarterly reserve calculations in Snowflake, validates results, and publishes to Power BI.
  tags:
  - insurance
  - actuarial
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: reserve-ops
    port: 8080
    tools:
    - name: run-reserves
      description: Run quarterly reserves. Executes and refreshes dashboard.
      inputParameters:
      - name: lob
        in: body
        type: string
        description: LOB.
      - name: quarter
        in: body
        type: string
        description: YYYY-Q.
      steps:
      - name: calc
        type: call
        call: snowflake.query
        with:
          query: CALL CALCULATE_RESERVES('{{lob}}','{{quarter}}')
      - name: validate
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM RESERVE_VALIDATION WHERE lob='{{lob}}'
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_group
          dataset_id: $secrets.pbi_reserves
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → actuarial-reserve-calculation-trigger.yml

Queries SAP Concur for expense reports pending manager approval beyond 5 days, and sends reminder notifications to approvers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Concur Expense Report Approval Reminder
  description: Queries SAP Concur for expense reports pending manager approval beyond 5 days, and sends reminder notifications to approvers via Microsoft Teams.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-management
    port: 8080
    tools:
    - name: send-expense-approval-reminders
      description: Query SAP Concur for expense reports in Pending Manager Approval status older than 5 days, and send Teams reminders to each approver.
      inputParameters:
      - name: days_pending
        in: body
        type: integer
        description: 'Number of days an expense 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
Open in Framework → View in Fleet → concur-expense-report-approval-reminder.yml

On a GitHub pull request opened against a protected branch, triggers a security scan via Datadog SAST, reports findings back as a PR comment, and opens a Jira ticket for any critical issues.

naftiko: '0.5'
info:
  label: GitHub Pull Request Security Scan Gating
  description: On a GitHub pull request opened against a protected branch, triggers a security scan via Datadog SAST, reports findings back as a PR comment, and opens a Jira ticket for any critical issues.
  tags:
  - devops
  - security
  - github
  - datadog
  - jira
  - ci-cd
  - code-quality
capability:
  exposes:
  - type: mcp
    namespace: pr-security
    port: 8080
    tools:
    - name: handle-pr-security-gate
      description: Given a GitHub pull request number and repository, run a security analysis, post findings as a PR review comment on GitHub, and open a Jira bug for any critical vulnerabilities found.
      inputParameters:
      - name: repo_full_name
        in: body
        type: string
        description: The GitHub repository full name, e.g. 'axa-group/claims-api'.
      - name: pr_number
        in: body
        type: integer
        description: The pull request number to analyse.
      - name: commit_sha
        in: body
        type: string
        description: The head commit SHA for the pull request.
      steps:
      - name: get-pr-details
        type: call
        call: github.get-pull-request
        with:
          repo: '{{repo_full_name}}'
          pull_number: '{{pr_number}}'
      - name: post-pr-comment
        type: call
        call: github.create-pr-comment
        with:
          repo: '{{repo_full_name}}'
          pull_number: '{{pr_number}}'
          body: Security scan initiated for commit {{commit_sha}}.
      - name: create-jira-issue
        type: call
        call: jira.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Security finding: {{repo_full_name}} PR #{{pr_number}}'
          description: 'Commit: {{commit_sha}} | PR: {{get-pr-details.html_url}}'
  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://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-pull-request-security-scan-gating.yml

When a GitHub Actions deployment workflow fails on main branch, creates a Jira incident ticket and posts a failure alert with context to the DevOps Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub Deployment Pipeline Failure Handler
  description: When a GitHub Actions deployment workflow fails on main branch, creates a Jira incident ticket and posts a failure alert with context to the DevOps Microsoft Teams channel.
  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 GitHub Actions workflow run ID and repository, retrieve failure details, create a Jira incident, and alert the DevOps Teams channel with full context.
      inputParameters:
      - name: repo_full_name
        in: body
        type: string
        description: The GitHub repository full name, e.g. 'axa-group/policy-service'.
      - 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 the deployment was targeting, typically 'main'.
      steps:
      - name: get-run-details
        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 ID: {{run_id}} | Status: {{get-run-details.conclusion}} | URL: {{get-run-details.html_url}}'
      - name: alert-devops-channel
        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-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://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-deployment-pipeline-failure-handler.yml

Creates ServiceNow case, links to Salesforce policy, and notifies CX team.

naftiko: '0.5'
info:
  label: Customer Complaint Tracking Workflow
  description: Creates ServiceNow case, links to Salesforce policy, and notifies CX team.
  tags:
  - insurance
  - compliance
  - servicenow
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: complaint-ops
    port: 8080
    tools:
    - name: log-complaint
      description: Log complaint.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Policy.
      - name: category
        in: body
        type: string
        description: Category.
      - name: desc
        in: body
        type: string
        description: Description.
      steps:
      - name: case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Complaint: {{category}} - {{policy}}'
          description: '{{desc}}'
      - name: link
        type: call
        call: salesforce.create-note
        with:
          policy: '{{policy}}'
          note: 'Complaint: {{case.number}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.cx_channel
          text: 'Complaint: {{policy}}. Case: {{case.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: notes
      path: /sobjects/CaseNote__c
      operations:
      - name: create-note
        method: POST
  - type: http
    namespace: msteams
    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: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → customer-complaint-tracking-workflow.yml

Exports current headcount by department and cost center from ADP, uploads the snapshot to SharePoint, and posts a digest to the Finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Payroll Headcount Snapshot
  description: Exports current headcount by department and cost center from ADP, uploads the snapshot to SharePoint, and posts a digest to the 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 current headcount and cost center data from ADP, upload the report to SharePoint, and post a summary to the Finance Teams channel. Use for monthly headcount reconciliation.
      inputParameters:
      - name: report_month
        in: body
        type: string
        description: The report month in YYYY-MM format, e.g. '2026-03'.
      - name: cost_center_filter
        in: body
        type: string
        description: Optional cost center code to filter results. Leave blank for all.
      steps:
      - name: export-headcount
        type: call
        call: adp.export-workers
        with:
          asOfDate: '{{report_month}}'
          costCenter: '{{cost_center_filter}}'
      - name: upload-to-sharepoint
        type: call
        call: sharepoint.upload-file
        with:
          site_id: finance-reports
          folder: Payroll/Headcount
          filename: headcount-{{report_month}}.csv
          content: '{{export-headcount.csv_data}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel: finance-reporting
          message: 'Headcount snapshot for {{report_month}} uploaded to SharePoint. Total employees: {{export-headcount.total_count}}.'
  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
Open in Framework → View in Fleet → payroll-headcount-snapshot.yml

Pulls vendor data from SAP, scores risk, and creates assessment in ServiceNow.

naftiko: '0.5'
info:
  label: Vendor Risk Assessment Workflow
  description: Pulls vendor data from SAP, scores risk, and creates assessment in ServiceNow.
  tags:
  - insurance
  - compliance
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: vendor-risk
    port: 8080
    tools:
    - name: assess-vendor
      description: Assess vendor risk.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      - name: type
        in: body
        type: string
        description: Assessment type.
      steps:
      - name: get
        type: call
        call: sap.get-vendor
        with:
          vendor_id: '{{vendor_id}}'
      - name: score
        type: call
        call: risk-api.score
        with:
          name: '{{get.name}}'
          type: '{{type}}'
      - name: log
        type: call
        call: servicenow.create-record
        with:
          table: u_vendor_risk
          vendor: '{{vendor_id}}'
          level: '{{score.level}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://axa-sap.s4hana.cloud.sap/api/v1
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: vendors
      path: /suppliers/{{vendor_id}}
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: risk-api
    baseUri: https://api.axa.com/risk/v1
    authentication:
      type: bearer
      token: $secrets.risk_token
    resources:
    - name: scoring
      path: /vendors/score
      operations:
      - name: score
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_vendor_risk
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → vendor-risk-assessment-workflow.yml

Creates a ServiceNow change request for infrastructure changes, routes it through the CAB approval chain, and notifies stakeholders via Microsoft Teams at each stage.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Approval Workflow
  description: Creates a ServiceNow change request for infrastructure changes, routes it through the CAB approval chain, and notifies stakeholders via Microsoft Teams at each stage.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
  - approval
  - operations
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: submit-change-request
      description: Given change details, create a ServiceNow change request, assign it to the CAB, and notify the Change Management Teams channel with a link for approval.
      inputParameters:
      - name: change_title
        in: body
        type: string
        description: Short description of the proposed change.
      - name: change_description
        in: body
        type: string
        description: Detailed description of what is changing, why, and the rollback plan.
      - name: risk_level
        in: body
        type: string
        description: 'Risk level: ''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 change request submitted: {{change_title}} | Risk: {{risk_level}} | Planned: {{planned_date}} | SNOW: {{create-change.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.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
Open in Framework → View in Fleet → servicenow-change-request-approval-workflow.yml

Enriches Salesforce prospect with firmographic data from ZoomInfo.

naftiko: '0.5'
info:
  label: Prospect Enrichment Workflow
  description: Enriches Salesforce prospect with firmographic data from ZoomInfo.
  tags:
  - insurance
  - sales
  - zoominfo
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: enrichment
    port: 8080
    tools:
    - name: enrich
      description: Enrich prospect.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: Lead ID.
      - name: company
        in: body
        type: string
        description: Company.
      steps:
      - name: search
        type: call
        call: zoominfo.search
        with:
          company: '{{company}}'
      - name: update
        type: call
        call: salesforce.update-lead
        with:
          lead_id: '{{lead_id}}'
          industry: '{{search.industry}}'
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /search/company
      operations:
      - name: search
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: update-lead
        method: PATCH
Open in Framework → View in Fleet → prospect-enrichment-workflow.yml

Pulls claims history from Snowflake, recalculates risk, updates renewal offer in Salesforce, and notifies agent.

naftiko: '0.5'
info:
  label: Policy Renewal Underwriting Review
  description: Pulls claims history from Snowflake, recalculates risk, updates renewal offer in Salesforce, and notifies agent.
  tags:
  - insurance
  - underwriting
  - policy
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: renewal-ops
    port: 8080
    tools:
    - name: process-renewal
      description: Process renewal review. Pulls history, recalcs, updates.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: Policy number.
      steps:
      - name: history
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM CLAIMS WHERE policy='{{policy_number}}'
      - name: recalc
        type: call
        call: underwriting.calculate
        with:
          policy_number: '{{policy_number}}'
      - name: update
        type: call
        call: salesforce.update-renewal
        with:
          policy_number: '{{policy_number}}'
          premium: '{{recalc.premium}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: renewals
      path: /sobjects/Renewal__c
      operations:
      - name: update-renewal
        method: PATCH
Open in Framework → View in Fleet → policy-renewal-underwriting-review.yml

Given a SharePoint document URL containing an insurance policy or claim document, retrieves the content and generates a concise executive summary using OpenAI, returning it for agent or advisor consumption.

naftiko: '0.5'
info:
  label: AI-Assisted Insurance Document Summarization
  description: Given a SharePoint document URL containing an insurance policy or claim document, retrieves the content and generates a concise executive summary using OpenAI, returning it for agent or advisor consumption.
  tags:
  - ai
  - openai
  - sharepoint
  - document-processing
  - insurance
  - automation
capability:
  exposes:
  - type: mcp
    namespace: doc-ai
    port: 8080
    tools:
    - name: summarize-insurance-document
      description: Given a SharePoint document site ID and item ID, retrieve the document content and generate a structured summary using OpenAI GPT-4o. Returns a 5-point executive summary suitable for advisors.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID where the document is stored.
      - name: item_id
        in: body
        type: string
        description: The SharePoint drive item ID for the document to summarize.
      - name: document_type
        in: body
        type: string
        description: 'The type of document: ''policy'', ''claim'', ''endorsement'', or ''report''.'
      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 an expert insurance document analyst. Summarize the following {{document_type}} document in 5 bullet points, highlighting key terms, coverage limits, exclusions, and dates.
          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
Open in Framework → View in Fleet → ai-assisted-insurance-document-summarization.yml

Retrieves premium breakdown returning base rate, risk factors, and final premium.

naftiko: '0.5'
info:
  label: Policy Premium Breakdown Lookup
  description: Retrieves premium breakdown returning base rate, risk factors, and final premium.
  tags:
  - insurance
  - policy
  - actuarial
capability:
  exposes:
  - type: mcp
    namespace: premium-ops
    port: 8080
    tools:
    - name: get-premium
      description: Look up premium breakdown. Returns base rate, factors, final premium.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: AXA policy number.
      call: rating-engine.get-premium
      with:
        policy_number: '{{policy_number}}'
      outputParameters:
      - name: base_rate
        type: number
        mapping: $.baseRate
      - name: risk_factors
        type: array
        mapping: $.riskFactors
      - name: final_premium
        type: number
        mapping: $.finalAnnualPremium
  consumes:
  - type: http
    namespace: rating-engine
    baseUri: https://api.axa.com/rating/v2
    authentication:
      type: bearer
      token: $secrets.rating_engine_token
    resources:
    - name: premiums
      path: /policies/{{policy_number}}/premium
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-premium
        method: GET
Open in Framework → View in Fleet → policy-premium-breakdown-lookup.yml

Looks up the current status of an employee absence request in Workday by request ID, returning approval status, dates, and approver information.

naftiko: '0.5'
info:
  label: Workday Absence Request Status Lookup
  description: Looks up the current status of an employee absence request in Workday by request ID, returning approval status, dates, and approver information.
  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 dates, leave type, and approver name. Use for employee self-service or manager review.
      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
      - name: approver_name
        type: string
        mapping: $.data.approver.name
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: absence-requests
      path: /axa/absenceRequests/{{request_id}}
      inputParameters:
      - name: request_id
        in: path
      operations:
      - name: get-absence-request
        method: GET
Open in Framework → View in Fleet → workday-absence-request-status-lookup.yml

Retrieves all Okta application assignments for a user, produces an access summary, and posts it to the Security Teams channel for review. Used for quarterly access certification.

naftiko: '0.5'
info:
  label: Okta User Access Review
  description: Retrieves all Okta application assignments for a user, produces an access summary, and posts it to the Security Teams channel for review. Used for quarterly access certification.
  tags:
  - identity
  - security
  - okta
  - microsoft-teams
  - access-review
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: identity-security
    port: 8080
    tools:
    - name: get-user-access-summary
      description: Given an Okta user login, retrieve all application assignments and group memberships, then post a formatted access summary to the Security Teams channel for quarterly certification.
      inputParameters:
      - name: user_login
        in: body
        type: string
        description: The Okta user login (email format) to review.
      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-access-summary
        type: call
        call: msteams.post-channel-message
        with:
          channel: security-access-reviews
          message: 'Access review 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://axa.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
Open in Framework → View in Fleet → okta-user-access-review.yml

Retrieves health metrics from Datadog including error rate, latency, and throughput.

naftiko: '0.5'
info:
  label: Datadog Service Health Lookup
  description: Retrieves health metrics from Datadog including error rate, latency, and throughput.
  tags:
  - engineering
  - datadog
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: health-ops
    port: 8080
    tools:
    - name: get-health
      description: Look up service health.
      inputParameters:
      - name: service
        in: body
        type: string
        description: Service name.
      call: datadog.get-metrics
      with:
        service: '{{service}}'
      outputParameters:
      - name: error_rate
        type: number
        mapping: $.errorRate
      - name: latency
        type: number
        mapping: $.p99Latency
      - name: throughput
        type: number
        mapping: $.throughput
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → datadog-service-health-lookup.yml

Screens applicants against AML watchlists, logs results, and escalates matches.

naftiko: '0.5'
info:
  label: Compliance AML Screening Workflow
  description: Screens applicants against AML watchlists, logs results, and escalates matches.
  tags:
  - insurance
  - compliance
  - fraud
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: aml-ops
    port: 8080
    tools:
    - name: screen-aml
      description: Screen for AML.
      inputParameters:
      - name: name
        in: body
        type: string
        description: Applicant name.
      - name: app_id
        in: body
        type: string
        description: Application ID.
      steps:
      - name: screen
        type: call
        call: aml-api.screen
        with:
          name: '{{name}}'
          ref: '{{app_id}}'
      - name: log
        type: call
        call: servicenow.create-record
        with:
          table: u_aml
          result: '{{screen.status}}'
      - name: alert
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.compliance_channel
          text: 'AML: {{name}} - {{screen.status}}'
  consumes:
  - type: http
    namespace: aml-api
    baseUri: https://api.axa.com/compliance/aml/v1
    authentication:
      type: bearer
      token: $secrets.aml_api_token
    resources:
    - name: screening
      path: /screen
      operations:
      - name: screen
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_aml
      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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → compliance-aml-screening-workflow.yml

Initiates the annual performance review cycle in Workday for a given department, notifies managers via Microsoft Teams, and creates tracking tasks in ServiceNow.

naftiko: '0.5'
info:
  label: Annual Performance Review Cycle Trigger
  description: Initiates the annual performance review cycle in Workday for a given department, notifies managers via Microsoft Teams, and creates tracking tasks in ServiceNow.
  tags:
  - hr
  - performance
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: trigger-performance-review-cycle
      description: Given a department ID and review cycle year, initiate the Workday performance review process, create ServiceNow tracking tasks for each manager, and notify managers via Teams.
      inputParameters:
      - name: department_id
        in: body
        type: string
        description: The Workday department ID for the 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-performance-review
        with:
          department_id: '{{department_id}}'
          review_period: '{{review_year}}'
      - name: create-tracking-task
        type: call
        call: servicenow.create-task
        with:
          short_description: Performance review cycle {{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}} started for department {{department_id}}. Deadline: {{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: /axa/performanceReviews
      operations:
      - name: initiate-performance-review
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.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
Open in Framework → View in Fleet → annual-performance-review-cycle-trigger.yml

Reconciles invoices against POs in SAP and creates ServiceNow tickets.

naftiko: '0.5'
info:
  label: SAP Invoice Reconciliation Workflow
  description: Reconciles invoices against POs in SAP and creates ServiceNow tickets.
  tags:
  - finance
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: invoice-ops
    port: 8080
    tools:
    - name: reconcile
      description: Reconcile invoices.
      inputParameters:
      - name: vendor
        in: body
        type: string
        description: Vendor.
      - name: period
        in: body
        type: string
        description: YYYY-MM.
      steps:
      - name: invoices
        type: call
        call: sap.get-invoices
        with:
          vendor: '{{vendor}}'
          period: '{{period}}'
      - name: pos
        type: call
        call: sap.get-pos
        with:
          vendor: '{{vendor}}'
          period: '{{period}}'
      - name: ticket
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Recon: {{vendor}} - {{period}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://axa-sap.s4hana.cloud.sap/api/v1
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: invoices
      path: /invoices
      operations:
      - name: get-invoices
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    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
Open in Framework → View in Fleet → sap-invoice-reconciliation-workflow.yml

Creates SIU case in ServiceNow and alerts team via PagerDuty when fraud scoring flags a claim.

naftiko: '0.5'
info:
  label: Fraud Detection Alert to SIU
  description: Creates SIU case in ServiceNow and alerts team via PagerDuty when fraud scoring flags a claim.
  tags:
  - insurance
  - fraud
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: fraud-ops
    port: 8080
    tools:
    - name: escalate-fraud
      description: Escalate fraud alert. Creates case and PagerDuty alert.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Flagged claim.
      - name: fraud_score
        in: body
        type: number
        description: Score 0-100.
      - name: indicators
        in: body
        type: string
        description: Indicators.
      steps:
      - name: create-case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Fraud: {{claim_id}} ({{fraud_score}})'
          category: fraud
      - name: alert
        type: call
        call: pagerduty.create-incident
        with:
          service_id: $secrets.siu_service
          title: 'Fraud: {{claim_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_si_incident
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → fraud-detection-alert-to-siu.yml

When a compliance review is due, retrieves policy data from Salesforce, generates a summary document using OpenAI, and uploads it to SharePoint for regulatory filing.

naftiko: '0.5'
info:
  label: Regulatory Compliance Document Generation
  description: When a compliance review is due, retrieves policy data from Salesforce, generates a summary document using OpenAI, and uploads it to SharePoint for regulatory filing.
  tags:
  - compliance
  - regulatory
  - salesforce
  - openai
  - sharepoint
  - insurance
  - ai
capability:
  exposes:
  - type: mcp
    namespace: compliance-docs
    port: 8080
    tools:
    - name: generate-compliance-report
      description: Given a policy ID and review period, retrieve policy details from Salesforce, generate a regulatory summary via OpenAI, and upload the document to SharePoint.
      inputParameters:
      - name: policy_id
        in: body
        type: string
        description: The Salesforce policy record ID for the compliance review.
      - name: review_period
        in: body
        type: string
        description: The review period in YYYY-QX format, e.g. '2026-Q1'.
      - name: regulation_type
        in: body
        type: string
        description: The applicable regulation framework, e.g. 'Solvency II', 'IFRS 17'.
      steps:
      - name: get-policy
        type: call
        call: salesforce.get-policy
        with:
          policy_id: '{{policy_id}}'
      - name: generate-summary
        type: call
        call: openai.create-chat-completion
        with:
          model: gpt-4o
          system_prompt: You are a regulatory compliance specialist for insurance. Generate a concise compliance summary for the given regulation.
          user_message: 'Policy: {{get-policy.name}} | Period: {{review_period}} | Regulation: {{regulation_type}} | Details: {{get-policy.details}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: compliance-portal
          folder: Regulatory/{{regulation_type}}
          filename: '{{policy_id}}-{{review_period}}-compliance.pdf'
          content: '{{generate-summary.content}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Insurance_Policy__c/{{policy_id}}
      inputParameters:
      - name: policy_id
        in: path
      operations:
      - name: get-policy
        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
  - 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
Open in Framework → View in Fleet → regulatory-compliance-document-generation.yml

Runs IBNR model in Snowflake and publishes results to Power BI.

naftiko: '0.5'
info:
  label: Actuarial IBNR Reserve Estimation
  description: Runs IBNR model in Snowflake and publishes results to Power BI.
  tags:
  - insurance
  - actuarial
  - claims
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: ibnr-ops
    port: 8080
    tools:
    - name: estimate-ibnr
      description: Estimate IBNR reserves.
      inputParameters:
      - name: lob
        in: body
        type: string
        description: LOB.
      - name: year
        in: body
        type: integer
        description: Accident year.
      steps:
      - name: model
        type: call
        call: snowflake.query
        with:
          query: CALL ESTIMATE_IBNR('{{lob}}',{{year}})
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_actuarial
          dataset_id: $secrets.pbi_ibnr
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → actuarial-ibnr-reserve-estimation.yml

Runs rating engine and creates quote record in Salesforce.

naftiko: '0.5'
info:
  label: Policy Quote Generation Workflow
  description: Runs rating engine and creates quote record in Salesforce.
  tags:
  - insurance
  - underwriting
  - policy
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: quote-ops
    port: 8080
    tools:
    - name: generate-quote
      description: Generate quote.
      inputParameters:
      - name: product
        in: body
        type: string
        description: Product.
      - name: data
        in: body
        type: string
        description: Applicant data.
      steps:
      - name: rate
        type: call
        call: rating.quote
        with:
          product: '{{product}}'
          data: '{{data}}'
      - name: create
        type: call
        call: salesforce.create-quote
        with:
          product: '{{product}}'
          premium: '{{rate.premium}}'
  consumes:
  - type: http
    namespace: rating
    baseUri: https://api.axa.com/rating/v2
    authentication:
      type: bearer
      token: $secrets.rating_token
    resources:
    - name: quotes
      path: /quote
      operations:
      - name: quote
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: quotes
      path: /sobjects/Quote__c
      operations:
      - name: create-quote
        method: POST
Open in Framework → View in Fleet → policy-quote-generation-workflow.yml

Monitors Datadog latency, creates PagerDuty incident, and alerts engineering.

naftiko: '0.5'
info:
  label: API Latency Alert Workflow
  description: Monitors Datadog latency, creates PagerDuty incident, and alerts engineering.
  tags:
  - engineering
  - datadog
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: latency-ops
    port: 8080
    tools:
    - name: check-latency
      description: Check API latency.
      inputParameters:
      - name: service
        in: body
        type: string
        description: Service.
      - name: threshold
        in: body
        type: integer
        description: Threshold ms.
      steps:
      - name: get
        type: call
        call: datadog.query
        with:
          query: p99:trace.http.request{service:{{service}}}
      - name: incident
        type: call
        call: pagerduty.create-incident
        with:
          service_id: $secrets.eng_pd
          title: 'Latency: {{service}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.eng_channel
          text: 'Latency: {{service}} > {{threshold}}ms'
  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
        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: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → api-latency-alert-workflow.yml

Queries Snowflake for loss and premium data and refreshes Power BI dashboard.

naftiko: '0.5'
info:
  label: Actuarial Loss Ratio Dashboard Sync
  description: Queries Snowflake for loss and premium data and refreshes Power BI dashboard.
  tags:
  - insurance
  - actuarial
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: lossratio-ops
    port: 8080
    tools:
    - name: sync-ratios
      description: Sync loss ratios.
      inputParameters:
      - name: lob
        in: body
        type: string
        description: LOB.
      - name: period
        in: body
        type: string
        description: YYYY-MM.
      steps:
      - name: query
        type: call
        call: snowflake.query
        with:
          query: SELECT SUM(loss),SUM(premium) FROM LOSS_TRIANGLE WHERE lob='{{lob}}'
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_actuarial
          dataset_id: $secrets.pbi_lossratio
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → actuarial-loss-ratio-dashboard-sync.yml

Gathers data from Snowflake, compiles Confluence package, and notifies compliance.

naftiko: '0.5'
info:
  label: Compliance Audit Preparation Workflow
  description: Gathers data from Snowflake, compiles Confluence package, and notifies compliance.
  tags:
  - insurance
  - compliance
  - snowflake
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: audit-ops
    port: 8080
    tools:
    - name: prepare-audit
      description: Prepare audit.
      inputParameters:
      - name: state
        in: body
        type: string
        description: State.
      - name: start
        in: body
        type: string
        description: Start.
      - name: end
        in: body
        type: string
        description: End.
      steps:
      - name: gather
        type: call
        call: snowflake.query
        with:
          query: CALL PREPARE_AUDIT('{{state}}','{{start}}','{{end}}')
      - name: package
        type: call
        call: confluence.create-page
        with:
          space_key: COMPLIANCE
          title: 'Audit: {{state}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.compliance_channel
          text: 'Audit ready: {{state}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://axa.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: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → compliance-audit-preparation-workflow.yml

Retrieves current on-call engineer from PagerDuty returning primary and secondary contacts.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Lookup
  description: Retrieves current on-call engineer from PagerDuty returning primary and secondary contacts.
  tags:
  - engineering
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: oncall-ops
    port: 8080
    tools:
    - name: get-oncall
      description: Look up on-call schedule. Returns contacts.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: PagerDuty schedule ID.
      call: pagerduty.get-oncall
      with:
        schedule_id: '{{schedule_id}}'
      outputParameters:
      - name: primary
        type: string
        mapping: $.oncalls[0].user.name
      - name: email
        type: string
        mapping: $.oncalls[0].user.email
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: oncalls
      path: /oncalls
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-lookup.yml

Looks up an SAP Ariba purchase order by number and returns header status, supplier name, and total value for use in finance reconciliation workflows.

naftiko: '0.5'
info:
  label: Procurement Purchase Order Lookup
  description: Looks up an SAP Ariba purchase order by number and returns header status, supplier name, and total value for use in finance reconciliation workflows.
  tags:
  - procurement
  - finance
  - sap-ariba
  - purchase-order
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given a purchase order number, retrieve PO header details from SAP Ariba including status, supplier, and total value. Use for procurement status checks and finance reconciliation.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP Ariba purchase order number to look up.
      call: sap-ariba.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: supplier_name
        type: string
        mapping: $.supplier.name
      - name: total_value
        type: number
        mapping: $.totalCost.amount
      - name: currency
        type: string
        mapping: $.totalCost.currencyCode
  consumes:
  - type: http
    namespace: sap-ariba
    baseUri: https://openapi.ariba.com/api/purchase-orders/v1
    authentication:
      type: bearer
      token: $secrets.sap_ariba_token
    resources:
    - name: purchase-orders
      path: /{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → procurement-purchase-order-lookup.yml

Finds physician, books IME, and creates tracking in ServiceNow.

naftiko: '0.5'
info:
  label: Independent Medical Exam Scheduling Workflow
  description: Finds physician, books IME, and creates tracking in ServiceNow.
  tags:
  - insurance
  - claims
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: ime-ops
    port: 8080
    tools:
    - name: schedule-ime
      description: Schedule IME.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: specialty
        in: body
        type: string
        description: Specialty.
      - name: zip
        in: body
        type: string
        description: ZIP.
      steps:
      - name: find
        type: call
        call: medical-api.find
        with:
          specialty: '{{specialty}}'
          zip: '{{zip}}'
      - name: book
        type: call
        call: scheduling-api.book
        with:
          provider: '{{find.id}}'
          claim: '{{claim_id}}'
      - name: track
        type: call
        call: servicenow.create-record
        with:
          table: u_ime
          claim_id: '{{claim_id}}'
  consumes:
  - type: http
    namespace: medical-api
    baseUri: https://api.axa.com/medical-network/v1
    authentication:
      type: bearer
      token: $secrets.medical_token
    resources:
    - name: providers
      path: /ime-providers/search
      operations:
      - name: find
        method: GET
  - type: http
    namespace: scheduling-api
    baseUri: https://api.axa.com/scheduling/v1
    authentication:
      type: bearer
      token: $secrets.scheduling_token
    resources:
    - name: appointments
      path: /appointments
      operations:
      - name: book
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_ime
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → independent-medical-exam-scheduling-workflow.yml

Creates Jira ticket and alerts engineering via Teams for critical vulnerabilities.

naftiko: '0.5'
info:
  label: GitHub Security Advisory Workflow
  description: Creates Jira ticket and alerts engineering via Teams for critical vulnerabilities.
  tags:
  - security
  - github
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sec-ops
    port: 8080
    tools:
    - name: handle-advisory
      description: Handle security advisory.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository.
      - name: advisory
        in: body
        type: string
        description: Advisory ID.
      - name: severity
        in: body
        type: string
        description: Severity.
      steps:
      - name: get
        type: call
        call: github.get-advisory
        with:
          repo: '{{repo}}'
          id: '{{advisory}}'
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: '{{severity}} in {{repo}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.sec_channel
          text: '{{severity}} in {{repo}}. Jira: {{ticket.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: advisories
      path: /repos/{{repo}}/dependabot/alerts/{{advisory}}
      inputParameters:
      - name: repo
        in: path
      - name: advisory
        in: path
      operations:
      - name: get-advisory
        method: GET
  - type: http
    namespace: jira
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: 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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → github-security-advisory-workflow.yml

Runs data quality checks in Snowflake and creates Jira tickets for breached thresholds.

naftiko: '0.5'
info:
  label: Snowflake Claims Data Quality Check
  description: Runs data quality checks in Snowflake and creates Jira tickets for breached thresholds.
  tags:
  - insurance
  - claims
  - data
  - snowflake
  - jira
capability:
  exposes:
  - type: mcp
    namespace: dq-ops
    port: 8080
    tools:
    - name: check-quality
      description: Check data quality.
      inputParameters:
      - name: date
        in: body
        type: string
        description: Check date.
      steps:
      - name: check
        type: call
        call: snowflake.query
        with:
          query: CALL RUN_DQ_CHECKS('{{date}}')
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: DQ issues {{date}}
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: jira
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → snowflake-claims-data-quality-check.yml

Analyzes coverage in Salesforce, identifies gaps, and creates cross-sell opportunities.

naftiko: '0.5'
info:
  label: Cross-Sell Opportunity Workflow
  description: Analyzes coverage in Salesforce, identifies gaps, and creates cross-sell opportunities.
  tags:
  - insurance
  - policy
  - salesforce
  - sales
capability:
  exposes:
  - type: mcp
    namespace: cross-sell
    port: 8080
    tools:
    - name: cross-sell
      description: Create cross-sell opportunities.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Customer ID.
      steps:
      - name: policies
        type: call
        call: salesforce.get-policies
        with:
          customer_id: '{{customer_id}}'
      - name: gaps
        type: call
        call: analytics.identify-gaps
        with:
          customer_id: '{{customer_id}}'
      - name: opp
        type: call
        call: salesforce.create-opp
        with:
          customer_id: '{{customer_id}}'
          product: '{{gaps.recommended}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /query
      operations:
      - name: get-policies
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://api.axa.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: gaps
      path: /coverage-gaps
      operations:
      - name: identify-gaps
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opp
        method: POST
Open in Framework → View in Fleet → cross-sell-opportunity-workflow.yml

Creates policy in Salesforce, generates documents, and sets up billing after underwriting approval.

naftiko: '0.5'
info:
  label: New Policy Issuance Workflow
  description: Creates policy in Salesforce, generates documents, and sets up billing after underwriting approval.
  tags:
  - insurance
  - policy
  - underwriting
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: issuance-ops
    port: 8080
    tools:
    - name: issue-policy
      description: Issue new policy.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: Application ID.
      - name: product
        in: body
        type: string
        description: Product type.
      - name: premium
        in: body
        type: number
        description: Premium.
      steps:
      - name: create
        type: call
        call: salesforce.create-policy
        with:
          app_id: '{{app_id}}'
          product: '{{product}}'
          premium: '{{premium}}'
      - name: docs
        type: call
        call: document-api.generate
        with:
          policy: '{{create.policy_number}}'
      - name: billing
        type: call
        call: billing-api.create-schedule
        with:
          policy: '{{create.policy_number}}'
          premium: '{{premium}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c
      operations:
      - name: create-policy
        method: POST
  - type: http
    namespace: document-api
    baseUri: https://api.axa.com/documents/v1
    authentication:
      type: bearer
      token: $secrets.document_api_token
    resources:
    - name: generation
      path: /generate
      operations:
      - name: generate
        method: POST
  - type: http
    namespace: billing-api
    baseUri: https://api.axa.com/billing/v1
    authentication:
      type: bearer
      token: $secrets.billing_api_token
    resources:
    - name: schedules
      path: /billing-schedules
      operations:
      - name: create-schedule
        method: POST
Open in Framework → View in Fleet → new-policy-issuance-workflow.yml

Retrieves active insurance licenses for an agent including states, authority, and expirations.

naftiko: '0.5'
info:
  label: Agent License Status Lookup
  description: Retrieves active insurance licenses for an agent including states, authority, and expirations.
  tags:
  - insurance
  - compliance
  - agent
capability:
  exposes:
  - type: mcp
    namespace: license-ops
    port: 8080
    tools:
    - name: get-licenses
      description: Look up agent licenses. Returns states, authority, expirations.
      inputParameters:
      - name: agent_id
        in: body
        type: string
        description: Agent identifier.
      call: compliance-api.get-licenses
      with:
        agent_id: '{{agent_id}}'
      outputParameters:
      - name: licenses
        type: array
        mapping: $.licenses
      - name: next_expiry
        type: string
        mapping: $.nearestExpiration
      - name: count
        type: integer
        mapping: $.activeCount
  consumes:
  - type: http
    namespace: compliance-api
    baseUri: https://api.axa.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_api_token
    resources:
    - name: licenses
      path: /agents/{{agent_id}}/licenses
      inputParameters:
      - name: agent_id
        in: path
      operations:
      - name: get-licenses
        method: GET
Open in Framework → View in Fleet → agent-license-status-lookup.yml

Calculates pro-rata refund, updates status in Salesforce, and logs cancellation in ServiceNow.

naftiko: '0.5'
info:
  label: Policy Cancellation Workflow
  description: Calculates pro-rata refund, updates status in Salesforce, and logs cancellation in ServiceNow.
  tags:
  - insurance
  - policy
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: cancel-ops
    port: 8080
    tools:
    - name: process-cancel
      description: Process cancellation.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Policy number.
      - name: reason
        in: body
        type: string
        description: Reason.
      - name: date
        in: body
        type: string
        description: Effective date.
      steps:
      - name: refund
        type: call
        call: billing-api.calc-refund
        with:
          policy: '{{policy}}'
          date: '{{date}}'
      - name: update
        type: call
        call: salesforce.cancel
        with:
          policy: '{{policy}}'
          reason: '{{reason}}'
      - name: log
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Cancel: {{policy}}'
  consumes:
  - type: http
    namespace: billing-api
    baseUri: https://api.axa.com/billing/v1
    authentication:
      type: bearer
      token: $secrets.billing_api_token
    resources:
    - name: refunds
      path: /refunds/calculate
      operations:
      - name: calc-refund
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c
      operations:
      - name: cancel
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    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
Open in Framework → View in Fleet → policy-cancellation-workflow.yml

Monitors regulatory filing deadlines, generates Confluence summary, and alerts compliance via Microsoft Teams.

naftiko: '0.5'
info:
  label: Compliance Regulatory Filing Tracker
  description: Monitors regulatory filing deadlines, generates Confluence summary, and alerts compliance via Microsoft Teams.
  tags:
  - insurance
  - compliance
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: check-filings
      description: Check filing deadlines and notify.
      inputParameters:
      - name: days_ahead
        in: body
        type: integer
        description: Days ahead.
      - name: state
        in: body
        type: string
        description: State or ALL.
      steps:
      - name: get-filings
        type: call
        call: compliance-api.get-filings
        with:
          days: '{{days_ahead}}'
          state: '{{state}}'
      - name: create-page
        type: call
        call: confluence.create-page
        with:
          space_key: COMPLIANCE
          title: Filings Next {{days_ahead}} Days
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.compliance_channel
          text: '{{get-filings.count}} filings due.'
  consumes:
  - type: http
    namespace: compliance-api
    baseUri: https://api.axa.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_api_token
    resources:
    - name: filings
      path: /filings/upcoming
      operations:
      - name: get-filings
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://axa.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: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → compliance-regulatory-filing-tracker.yml

Queries the Datadog API for current SLI/SLO metrics across AXA's critical insurance platforms and posts a daily digest to the engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Datadog Observability Dashboard Refresh
  description: Queries the Datadog API for current SLI/SLO metrics across AXA's critical insurance platforms and posts a daily digest to the engineering Microsoft Teams channel.
  tags:
  - observability
  - monitoring
  - datadog
  - microsoft-teams
  - slo
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: observability-reporting
    port: 8080
    tools:
    - name: digest-platform-slos
      description: Query Datadog for SLO compliance metrics for a given time window and post a structured daily digest to the engineering Teams channel.
      inputParameters:
      - name: time_window_hours
        in: body
        type: integer
        description: The look-back window in hours for SLO metrics. Typically 24.
      - name: environment
        in: body
        type: string
        description: 'The target environment: ''production'', ''staging'', or ''dr''.'
      steps:
      - name: get-slo-metrics
        type: call
        call: datadog.list-slos
        with:
          tags: env:{{environment}}
          limit: '50'
      - 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-slo-metrics.summary}}'
  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
Open in Framework → View in Fleet → datadog-observability-dashboard-refresh.yml

Retrieves employee time off balances from Workday including vacation, sick, and personal hours.

naftiko: '0.5'
info:
  label: Workday Time Off Balance Lookup
  description: Retrieves employee time off balances from Workday including vacation, sick, and personal hours.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: timeoff-ops
    port: 8080
    tools:
    - name: get-balance
      description: Look up time off balances.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-balance
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: vacation
        type: number
        mapping: $.vacationBalance
      - name: sick
        type: number
        mapping: $.sickBalance
      - name: personal
        type: number
        mapping: $.personalBalance
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/axa
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off
      path: /timeOff/balances/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-balance
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance-lookup.yml

Identifies at-risk policies, triggers Marketo campaigns, and creates agent tasks in Jira.

naftiko: '0.5'
info:
  label: Policy Lapse Prevention Workflow
  description: Identifies at-risk policies, triggers Marketo campaigns, and creates agent tasks in Jira.
  tags:
  - insurance
  - policy
  - salesforce
  - marketo
  - jira
capability:
  exposes:
  - type: mcp
    namespace: lapse-ops
    port: 8080
    tools:
    - name: prevent-lapse
      description: Prevent policy lapse.
      inputParameters:
      - name: days
        in: body
        type: integer
        description: Days until lapse.
      steps:
      - name: at-risk
        type: call
        call: salesforce.query-lapsing
        with:
          days: '{{days}}'
      - name: campaign
        type: call
        call: marketo.trigger
        with:
          campaign_id: $secrets.lapse_campaign
      - name: tasks
        type: call
        call: jira.create-issue
        with:
          project_key: RETENTION
          issuetype: Task
          summary: Lapse prevention
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-lapsing
        method: GET
  - type: http
    namespace: marketo
    baseUri: https://axa.mktorest.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.marketo_token
    resources:
    - name: campaigns
      path: /campaigns/trigger.json
      operations:
      - name: trigger
        method: POST
  - type: http
    namespace: jira
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → policy-lapse-prevention-workflow.yml

Retrieves CLV score from Snowflake including retention probability and revenue projection.

naftiko: '0.5'
info:
  label: Snowflake Customer Lifetime Value Lookup
  description: Retrieves CLV score from Snowflake including retention probability and revenue projection.
  tags:
  - insurance
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: clv-ops
    port: 8080
    tools:
    - name: get-clv
      description: Look up CLV. Returns score, retention, revenue.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: AXA customer ID.
      call: snowflake.query-clv
      with:
        customer_id: '{{customer_id}}'
      outputParameters:
      - name: ltv
        type: number
        mapping: $.ltvScore
      - name: retention
        type: number
        mapping: $.retentionProbability
      - name: revenue
        type: number
        mapping: $.projectedAnnualRevenue
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-clv
        method: POST
Open in Framework → View in Fleet → snowflake-customer-lifetime-value-lookup.yml

Compares Okta access against Workday roles and creates Jira tickets for discrepancies.

naftiko: '0.5'
info:
  label: Okta System Access Review Workflow
  description: Compares Okta access against Workday roles and creates Jira tickets for discrepancies.
  tags:
  - insurance
  - okta
  - workday
  - jira
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: access-rev
    port: 8080
    tools:
    - name: review-access
      description: Review system access.
      inputParameters:
      - name: app
        in: body
        type: string
        description: Application.
      steps:
      - name: okta
        type: call
        call: okta.list-users
        with:
          app: '{{app}}'
      - name: roles
        type: call
        call: workday.get-roster
        with:
          dept: all
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project_key: SEC
          issuetype: Task
          summary: 'Access review: {{app}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://axa.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: app-users
      path: /apps/{{app}}/users
      inputParameters:
      - name: app
        in: path
      operations:
      - name: list-users
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/axa
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: roster
      path: /staffing/departmentRoster
      operations:
      - name: get-roster
        method: GET
  - type: http
    namespace: jira
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → okta-system-access-review-workflow.yml

Retrieves employee benefits eligibility from Workday including enrolled and eligible plans.

naftiko: '0.5'
info:
  label: Workday Benefits Eligibility Lookup
  description: Retrieves employee benefits eligibility from Workday including enrolled and eligible plans.
  tags:
  - hr
  - workday
  - benefits
capability:
  exposes:
  - type: mcp
    namespace: benefits-ops
    port: 8080
    tools:
    - name: get-benefits
      description: Look up benefits eligibility.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-benefits
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: enrolled
        type: array
        mapping: $.enrolledPlans
      - name: eligible
        type: array
        mapping: $.eligiblePlans
      - name: status
        type: string
        mapping: $.enrollmentStatus
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/axa
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: benefits
      path: /benefits/eligibility/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-benefits
        method: GET
Open in Framework → View in Fleet → workday-benefits-eligibility-lookup.yml

Retrieves customer account from Salesforce including contact details and policy count.

naftiko: '0.5'
info:
  label: Salesforce Account Lookup
  description: Retrieves customer account from Salesforce including contact details and policy count.
  tags:
  - insurance
  - salesforce
  - crm
capability:
  exposes:
  - type: mcp
    namespace: account-ops
    port: 8080
    tools:
    - name: get-account
      description: Look up Salesforce account.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Account ID.
      call: salesforce.get-account
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
      - name: policies
        type: integer
        mapping: $.Policy_Count__c
      - name: tier
        type: string
        mapping: $.Account_Tier__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-account-lookup.yml

Generates Jira backlog digest and posts to Microsoft Teams.

naftiko: '0.5'
info:
  label: Engineering Backlog Digest Workflow
  description: Generates Jira backlog digest and posts to Microsoft Teams.
  tags:
  - engineering
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: backlog-ops
    port: 8080
    tools:
    - name: gen-digest
      description: Generate digest.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Board ID.
      steps:
      - name: sprint
        type: call
        call: jira.get-sprint
        with:
          board_id: '{{board_id}}'
      - name: blockers
        type: call
        call: jira.search
        with:
          jql: status=Blocked
      - name: post
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.eng_channel
          text: 'Sprint: {{sprint.name}}. Blockers: {{blockers.total}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://axa.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
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-sprint
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → engineering-backlog-digest-workflow.yml

Retrieves a policy document by number and type returning URL and metadata.

naftiko: '0.5'
info:
  label: Policy Document Retrieval
  description: Retrieves a policy document by number and type returning URL and metadata.
  tags:
  - insurance
  - policy
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: doc-ops
    port: 8080
    tools:
    - name: get-document
      description: Retrieve policy document. Returns URL and metadata.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: AXA policy number.
      - name: doc_type
        in: body
        type: string
        description: 'Type: declaration, endorsement, certificate.'
      call: document-api.get-doc
      with:
        policy_number: '{{policy_number}}'
        doc_type: '{{doc_type}}'
      outputParameters:
      - name: url
        type: string
        mapping: $.documentUrl
      - name: modified
        type: string
        mapping: $.lastModified
  consumes:
  - type: http
    namespace: document-api
    baseUri: https://api.axa.com/documents/v1
    authentication:
      type: bearer
      token: $secrets.document_api_token
    resources:
    - name: documents
      path: /policies/{{policy_number}}/documents
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-doc
        method: GET
Open in Framework → View in Fleet → policy-document-retrieval.yml

When a critical Datadog alert fires, creates a ServiceNow incident, pages the on-call engineer via PagerDuty, and posts context to the Microsoft Teams ops channel.

naftiko: '0.5'
info:
  label: IT Incident Response and Escalation
  description: When a critical Datadog alert fires, creates a ServiceNow incident, pages the on-call engineer via PagerDuty, and posts context to the Microsoft Teams ops channel.
  tags:
  - itsm
  - incident-response
  - datadog
  - servicenow
  - pagerduty
  - microsoft-teams
  - operations
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: handle-critical-alert
      description: Given a Datadog alert payload with monitor ID, severity, and affected service, create a ServiceNow incident, trigger a PagerDuty page, and post an alert to the Teams ops channel.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID that triggered the alert.
      - name: severity
        in: body
        type: string
        description: 'Alert severity: ''critical'', ''warning'', or ''info''.'
      - name: affected_service
        in: body
        type: string
        description: Name of the affected service or application.
      - name: alert_message
        in: body
        type: string
        description: The Datadog alert message or condition description.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '{{severity}} alert on {{affected_service}} — {{alert_message}}'
          urgency: '1'
          impact: '1'
          category: infrastructure
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          title: '{{severity}}: {{affected_service}} — {{alert_message}}'
          service_id: $secrets.pagerduty_service_id
          severity: '{{severity}}'
          body: 'Monitor: {{monitor_id}} | SNOW: {{create-incident.number}}'
      - name: post-ops-alert
        type: call
        call: msteams.post-channel-message
        with:
          channel: ops-alerts
          message: 'INCIDENT: {{affected_service}} | Severity: {{severity}} | SNOW: {{create-incident.number}} | PD: {{page-oncall.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: 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
Open in Framework → View in Fleet → it-incident-response-and-escalation.yml

Runs data quality validation queries on AXA's Snowflake actuarial data warehouse to detect nulls, outliers, and schema drift, and posts results to the Actuarial Data Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Actuarial Data Quality Check
  description: Runs data quality validation queries on AXA's Snowflake actuarial data warehouse to detect nulls, outliers, and schema drift, and posts results to the Actuarial Data Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - data-quality
  - actuarial
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: actuarial-data
    port: 8080
    tools:
    - name: run-actuarial-data-quality-check
      description: Given a Snowflake table name and validation rules, execute data quality checks and post a pass/fail report to the Actuarial Data Teams channel.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: The fully qualified Snowflake table name, e.g. 'AXA_DW_PROD.ACTUARIAL.LOSS_TRIANGLES'.
      - name: check_date
        in: body
        type: string
        description: The date to run data quality checks against in YYYY-MM-DD format.
      steps:
      - name: run-dq-query
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT COUNT(*) as total, COUNT_IF(claim_amount IS NULL) as null_count FROM {{table_name}} WHERE report_date = '{{check_date}}'
      - name: post-dq-results
        type: call
        call: msteams.post-channel-message
        with:
          channel: actuarial-data
          message: 'DQ check on {{table_name}} for {{check_date}}: Total rows {{run-dq-query.total}}, Null claim amounts: {{run-dq-query.null_count}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.snowflakecomputing.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
Open in Framework → View in Fleet → snowflake-actuarial-data-quality-check.yml

Queries affected policies in Snowflake, creates ServiceNow incident, and broadcasts alerts via Microsoft Teams.

naftiko: '0.5'
info:
  label: Catastrophe Event Response Handler
  description: Queries affected policies in Snowflake, creates ServiceNow incident, and broadcasts alerts via Microsoft Teams.
  tags:
  - insurance
  - claims
  - catastrophe
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cat-ops
    port: 8080
    tools:
    - name: activate-cat
      description: Activate CAT response.
      inputParameters:
      - name: event
        in: body
        type: string
        description: Event name.
      - name: zips
        in: body
        type: string
        description: Affected ZIPs.
      - name: type
        in: body
        type: string
        description: Event type.
      steps:
      - name: count
        type: call
        call: snowflake.query
        with:
          query: SELECT COUNT(*) FROM POLICIES WHERE zip IN ('{{zips}}')
      - name: incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'CAT: {{event}}'
          priority: '1'
      - name: broadcast
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.cat_channel
          text: 'CAT: {{event}}. Incident: {{incident.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → catastrophe-event-response-handler.yml

Reconciles vendor payments against authorizations and flags discrepancies.

naftiko: '0.5'
info:
  label: Vendor Payment Reconciliation Workflow
  description: Reconciles vendor payments against authorizations and flags discrepancies.
  tags:
  - insurance
  - claims
  - finance
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: vendor-recon
    port: 8080
    tools:
    - name: reconcile-vendor
      description: Reconcile vendor payments.
      inputParameters:
      - name: vendor
        in: body
        type: string
        description: Vendor.
      - name: period
        in: body
        type: string
        description: YYYY-MM.
      steps:
      - name: invoices
        type: call
        call: claims-api.get-invoices
        with:
          vendor: '{{vendor}}'
          period: '{{period}}'
      - name: auths
        type: call
        call: claims-api.get-auths
        with:
          vendor: '{{vendor}}'
          period: '{{period}}'
      - name: flag
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Vendor recon: {{vendor}} - {{period}}'
  consumes:
  - type: http
    namespace: claims-api
    baseUri: https://api.axa.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: vendor-data
      path: /vendors/{{vendor}}/invoices
      inputParameters:
      - name: vendor
        in: path
      operations:
      - name: get-invoices
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    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
Open in Framework → View in Fleet → vendor-payment-reconciliation-workflow.yml

Checks flood and wildfire risk for a property and logs in underwriting.

naftiko: '0.5'
info:
  label: Property Hazard Check Workflow
  description: Checks flood and wildfire risk for a property and logs in underwriting.
  tags:
  - insurance
  - underwriting
  - homeowner
capability:
  exposes:
  - type: mcp
    namespace: hazard-ops
    port: 8080
    tools:
    - name: check-hazards
      description: Check property hazards.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: Application.
      - name: address
        in: body
        type: string
        description: Address.
      - name: zip
        in: body
        type: string
        description: ZIP.
      steps:
      - name: flood
        type: call
        call: hazard-api.check-flood
        with:
          address: '{{address}}'
          zip: '{{zip}}'
      - name: wildfire
        type: call
        call: hazard-api.check-wildfire
        with:
          zip: '{{zip}}'
      - name: log
        type: call
        call: underwriting.log
        with:
          app_id: '{{app_id}}'
          flood: '{{flood.zone}}'
  consumes:
  - type: http
    namespace: hazard-api
    baseUri: https://api.axa.com/hazards/v1
    authentication:
      type: bearer
      token: $secrets.hazard_token
    resources:
    - name: flood
      path: /flood-zones
      operations:
      - name: check-flood
        method: GET
  - type: http
    namespace: underwriting
    baseUri: https://api.axa.com/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.underwriting_api_token
    resources:
    - name: hazards
      path: /hazard-assessments
      operations:
      - name: log
        method: POST
Open in Framework → View in Fleet → property-hazard-check-workflow.yml

Retrieves current billing status including balance, next due date, and payment method.

naftiko: '0.5'
info:
  label: Policy Billing Status Lookup
  description: Retrieves current billing status including balance, next due date, and payment method.
  tags:
  - insurance
  - policy
  - billing
capability:
  exposes:
  - type: mcp
    namespace: billing-ops
    port: 8080
    tools:
    - name: get-billing
      description: Look up billing status. Returns balance, due date, method.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: AXA policy number.
      call: billing-api.get-status
      with:
        policy_number: '{{policy_number}}'
      outputParameters:
      - name: balance
        type: number
        mapping: $.outstandingBalance
      - name: next_due
        type: string
        mapping: $.nextDueDate
      - name: method
        type: string
        mapping: $.paymentMethod
  consumes:
  - type: http
    namespace: billing-api
    baseUri: https://api.axa.com/billing/v1
    authentication:
      type: bearer
      token: $secrets.billing_api_token
    resources:
    - name: status
      path: /policies/{{policy_number}}/billing-status
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-status
        method: GET
Open in Framework → View in Fleet → policy-billing-status-lookup.yml

Provisions infrastructure via Terraform Cloud and notifies platform team.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Provisioning Workflow
  description: Provisions infrastructure via Terraform Cloud and notifies platform team.
  tags:
  - engineering
  - terraform
  - microsoft-azure
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: provision
      description: Provision infrastructure.
      inputParameters:
      - name: workspace
        in: body
        type: string
        description: Workspace.
      - name: env
        in: body
        type: string
        description: Environment.
      steps:
      - name: run
        type: call
        call: terraform.create-run
        with:
          workspace: '{{workspace}}'
          message: Provisioning {{env}}
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.platform_channel
          text: 'Terraform: {{workspace}} ({{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: create-run
        method: POST
  - type: http
    namespace: msteams
    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: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → terraform-infrastructure-provisioning-workflow.yml

Retrieves Jira issue status including assignee and priority.

naftiko: '0.5'
info:
  label: Jira Ticket Status Lookup
  description: Retrieves Jira issue status including assignee and priority.
  tags:
  - engineering
  - jira
capability:
  exposes:
  - type: mcp
    namespace: jira-ops
    port: 8080
    tools:
    - name: get-ticket
      description: Look up Jira ticket.
      inputParameters:
      - name: key
        in: body
        type: string
        description: Issue key.
      call: jira.get-issue
      with:
        key: '{{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
    baseUri: https://axa.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue/{{key}}
      inputParameters:
      - name: key
        in: path
      operations:
      - name: get-issue
        method: GET
Open in Framework → View in Fleet → jira-ticket-status-lookup.yml

Retrieves underwriting risk score for a policy application returning grade, score, and action.

naftiko: '0.5'
info:
  label: Underwriting Risk Score Lookup
  description: Retrieves underwriting risk score for a policy application returning grade, score, and action.
  tags:
  - insurance
  - underwriting
  - risk
capability:
  exposes:
  - type: mcp
    namespace: uw-ops
    port: 8080
    tools:
    - name: get-risk-score
      description: Look up risk score for application. Returns grade and action.
      inputParameters:
      - name: application_id
        in: body
        type: string
        description: Application ID.
      call: risk-engine.get-score
      with:
        application_id: '{{application_id}}'
      outputParameters:
      - name: risk_grade
        type: string
        mapping: $.riskGrade
      - name: score
        type: number
        mapping: $.overallScore
      - name: action
        type: string
        mapping: $.recommendedAction
  consumes:
  - type: http
    namespace: risk-engine
    baseUri: https://api.axa.com/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.underwriting_api_token
    resources:
    - name: scores
      path: /applications/{{application_id}}/risk-score
      inputParameters:
      - name: application_id
        in: path
      operations:
      - name: get-score
        method: GET
Open in Framework → View in Fleet → underwriting-risk-score-lookup.yml

Retrieves policy coverage details from Salesforce including limits, deductibles, and endorsements.

naftiko: '0.5'
info:
  label: Policy Coverage Details Lookup
  description: Retrieves policy coverage details from Salesforce including limits, deductibles, and endorsements.
  tags:
  - insurance
  - policy
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: policy-ops
    port: 8080
    tools:
    - name: get-coverage
      description: Look up coverage for a policy. Returns limits, deductibles, endorsements.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: AXA policy number.
      call: salesforce.get-policy
      with:
        policy_number: '{{policy_number}}'
      outputParameters:
      - name: limits
        type: object
        mapping: $.coverageLimits
      - name: deductible
        type: number
        mapping: $.deductible
      - name: endorsements
        type: array
        mapping: $.endorsements
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
Open in Framework → View in Fleet → policy-coverage-details-lookup.yml

Triggers a Terraform Cloud workspace run to provision or update AXA cloud infrastructure, monitors run status, and alerts the Platform Engineering team via Microsoft Teams on completion.

naftiko: '0.5'
info:
  label: Terraform Cloud Infrastructure Provisioning
  description: Triggers a Terraform Cloud workspace run to provision or update AXA cloud infrastructure, monitors run status, and alerts the Platform Engineering team via Microsoft Teams on completion.
  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 message, trigger a new plan-and-apply run, then notify the Platform Engineering Teams channel with the run URL and status.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Terraform Cloud workspace ID to trigger the run against.
      - name: run_message
        in: body
        type: string
        description: Description message for this Terraform run, e.g. 'Provision AKS cluster for claims service'.
      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 on {{workspace_id}}: {{run_message}} | Run ID: {{trigger-run.id}} | URL: {{trigger-run.url}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → terraform-cloud-infrastructure-provisioning.yml

Updates payment method in billing and sends confirmation.

naftiko: '0.5'
info:
  label: Payment Method Update Workflow
  description: Updates payment method in billing and sends confirmation.
  tags:
  - insurance
  - policy
  - billing
capability:
  exposes:
  - type: mcp
    namespace: pay-ops
    port: 8080
    tools:
    - name: update-method
      description: Update payment method.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Policy.
      - name: method
        in: body
        type: string
        description: Method.
      steps:
      - name: update
        type: call
        call: billing-api.update
        with:
          policy: '{{policy}}'
          method: '{{method}}'
      - name: confirm
        type: call
        call: notification-api.send
        with:
          policy: '{{policy}}'
          template: payment-updated
  consumes:
  - type: http
    namespace: billing-api
    baseUri: https://api.axa.com/billing/v1
    authentication:
      type: bearer
      token: $secrets.billing_api_token
    resources:
    - name: methods
      path: /policies/{{policy}}/payment-method
      inputParameters:
      - name: policy
        in: path
      operations:
      - name: update
        method: PUT
  - type: http
    namespace: notification-api
    baseUri: https://api.axa.com/notifications/v1
    authentication:
      type: bearer
      token: $secrets.notification_token
    resources:
    - name: notifications
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → payment-method-update-workflow.yml

Queries Snowflake for failed or delayed data pipeline tasks in the insurance data warehouse, posts a health report to the Data Engineering Teams channel, and creates ServiceNow tickets for failures.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Check
  description: Queries Snowflake for failed or delayed data pipeline tasks in the insurance data warehouse, posts a health report to the Data Engineering Teams channel, and creates ServiceNow tickets for failures.
  tags:
  - data
  - analytics
  - snowflake
  - servicenow
  - microsoft-teams
  - data-quality
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Query Snowflake for failed task runs in the last N hours, open ServiceNow incidents for failures, and post a health summary to the Data Engineering Teams channel.
      inputParameters:
      - name: look_back_hours
        in: body
        type: integer
        description: Hours to look back for failed pipeline tasks, typically 24.
      - name: database_name
        in: body
        type: string
        description: The Snowflake database to check, e.g. 'AXA_DW_PROD'.
      steps:
      - name: get-failed-tasks
        type: call
        call: snowflake.query-task-history
        with:
          database: '{{database_name}}'
          hours: '{{look_back_hours}}'
          state: FAILED
      - name: create-snow-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Snowflake pipeline failures in {{database_name}}: {{get-failed-tasks.count}} tasks failed'
          category: data_engineering
          urgency: '2'
      - name: post-health-report
        type: call
        call: msteams.post-channel-message
        with:
          channel: data-engineering
          message: 'Pipeline health (last {{look_back_hours}}h): {{get-failed-tasks.count}} failed tasks in {{database_name}}. SNOW: {{create-snow-incident.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.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: query-task-history
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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
Open in Framework → View in Fleet → snowflake-data-pipeline-health-check.yml

Detects Confluence updates and broadcasts to staff via Microsoft Teams.

naftiko: '0.5'
info:
  label: Procedure Update Notifier Workflow
  description: Detects Confluence updates and broadcasts to staff via Microsoft Teams.
  tags:
  - insurance
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: proc-notify
    port: 8080
    tools:
    - name: notify-update
      description: Notify procedure updates.
      inputParameters:
      - name: page_id
        in: body
        type: string
        description: Page ID.
      steps:
      - name: history
        type: call
        call: confluence.get-history
        with:
          page_id: '{{page_id}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.all_staff
          text: 'Updated: {{history.title}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://axa.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: history
      path: /content/{{page_id}}/history
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: get-history
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → procedure-update-notifier-workflow.yml

Checks current underwriting appetite for product, state, and risk class.

naftiko: '0.5'
info:
  label: Underwriting Appetite Check
  description: Checks current underwriting appetite for product, state, and risk class.
  tags:
  - insurance
  - underwriting
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: appetite-ops
    port: 8080
    tools:
    - name: check-appetite
      description: Check appetite. Returns status and restrictions.
      inputParameters:
      - name: product
        in: body
        type: string
        description: Product type.
      - name: state
        in: body
        type: string
        description: State code.
      - name: risk_class
        in: body
        type: string
        description: Risk class.
      call: uw-api.check
      with:
        product: '{{product}}'
        state: '{{state}}'
        risk_class: '{{risk_class}}'
      outputParameters:
      - name: accepting
        type: boolean
        mapping: $.isAccepting
      - name: restrictions
        type: array
        mapping: $.restrictions
  consumes:
  - type: http
    namespace: uw-api
    baseUri: https://api.axa.com/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.underwriting_api_token
    resources:
    - name: appetite
      path: /appetite
      operations:
      - name: check
        method: GET
Open in Framework → View in Fleet → underwriting-appetite-check.yml

Triggers Marketo retention campaigns and logs in Salesforce.

naftiko: '0.5'
info:
  label: Retention Campaign Launcher
  description: Triggers Marketo retention campaigns and logs in Salesforce.
  tags:
  - insurance
  - policy
  - marketo
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: retention-ops
    port: 8080
    tools:
    - name: launch-retention
      description: Launch retention campaign.
      inputParameters:
      - name: segment
        in: body
        type: string
        description: Segment.
      - name: campaign
        in: body
        type: string
        description: Campaign ID.
      steps:
      - name: trigger
        type: call
        call: marketo.trigger
        with:
          campaign_id: '{{campaign}}'
          segment: '{{segment}}'
      - name: log
        type: call
        call: salesforce.create-log
        with:
          campaign: 'Retention: {{segment}}'
  consumes:
  - type: http
    namespace: marketo
    baseUri: https://axa.mktorest.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.marketo_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign}}/trigger.json
      inputParameters:
      - name: campaign
        in: path
      operations:
      - name: trigger
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: logs
      path: /sobjects/CampaignLog__c
      operations:
      - name: create-log
        method: POST
Open in Framework → View in Fleet → retention-campaign-launcher.yml

Places litigation hold on documents, creates legal case, and notifies legal team.

naftiko: '0.5'
info:
  label: Claims Litigation Hold Workflow
  description: Places litigation hold on documents, creates legal case, and notifies legal team.
  tags:
  - insurance
  - claims
  - compliance
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lit-ops
    port: 8080
    tools:
    - name: initiate-hold
      description: Place litigation hold.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: attorney
        in: body
        type: string
        description: Opposing counsel.
      steps:
      - name: hold
        type: call
        call: document-api.create-hold
        with:
          claim_id: '{{claim_id}}'
          type: litigation
      - name: case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Litigation: {{claim_id}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.legal_channel
          text: 'Hold: {{claim_id}}. Case: {{case.number}}'
  consumes:
  - type: http
    namespace: document-api
    baseUri: https://api.axa.com/documents/v1
    authentication:
      type: bearer
      token: $secrets.document_api_token
    resources:
    - name: holds
      path: /holds
      operations:
      - name: create-hold
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_legal_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → claims-litigation-hold-workflow.yml

Queries Salesforce for open opportunities closing in the current quarter, aggregates forecast by product line, and posts a pipeline digest to the Sales Leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Forecast Digest
  description: Queries Salesforce for open opportunities closing in the current quarter, aggregates forecast by product line, and posts a pipeline digest to the Sales Leadership Microsoft Teams channel.
  tags:
  - sales
  - salesforce
  - forecasting
  - microsoft-teams
  - reporting
  - finance
capability:
  exposes:
  - type: mcp
    namespace: sales-forecasting
    port: 8080
    tools:
    - name: digest-quarterly-forecast
      description: Query Salesforce for open opportunities closing this quarter, grouped by product line, and post a pipeline forecast digest to the Sales Leadership Teams channel.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: The fiscal quarter to forecast, e.g. '2026-Q1'.
      - name: product_line
        in: body
        type: string
        description: Insurance product line to filter by, e.g. 'Commercial P&C'. Leave blank for all.
      steps:
      - name: query-opportunities
        type: call
        call: salesforce.query-opportunities
        with:
          quarter: '{{fiscal_quarter}}'
          product_line: '{{product_line}}'
      - name: post-forecast-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel: sales-leadership
          message: 'Q{{fiscal_quarter}} Forecast ({{product_line}}): {{query-opportunities.count}} open opps | Pipeline value: €{{query-opportunities.total_value}} | Weighted: €{{query-opportunities.weighted_value}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.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
Open in Framework → View in Fleet → salesforce-opportunity-forecast-digest.yml

Executes CAT model in Snowflake and publishes PML to Power BI.

naftiko: '0.5'
info:
  label: Catastrophe Model Run Workflow
  description: Executes CAT model in Snowflake and publishes PML to Power BI.
  tags:
  - insurance
  - actuarial
  - catastrophe
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: cat-model
    port: 8080
    tools:
    - name: run-cat
      description: Run CAT model.
      inputParameters:
      - name: peril
        in: body
        type: string
        description: Peril.
      - name: region
        in: body
        type: string
        description: Region.
      steps:
      - name: execute
        type: call
        call: snowflake.query
        with:
          query: CALL RUN_CAT_MODEL('{{peril}}','{{region}}')
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_cat
          dataset_id: $secrets.pbi_cat_model
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → catastrophe-model-run-workflow.yml

Retrieves Okta group memberships for a user returning groups and access.

naftiko: '0.5'
info:
  label: Okta User Group Membership Lookup
  description: Retrieves Okta group memberships for a user returning groups and access.
  tags:
  - security
  - okta
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: get-groups
      description: Look up Okta groups. Returns memberships.
      inputParameters:
      - name: email
        in: body
        type: string
        description: User email.
      call: okta.get-groups
      with:
        email: '{{email}}'
      outputParameters:
      - name: groups
        type: array
        mapping: $.groups
      - name: count
        type: integer
        mapping: $.totalGroups
  consumes:
  - type: http
    namespace: okta
    baseUri: https://axa.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: user-groups
      path: /users/{{email}}/groups
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-groups
        method: GET
Open in Framework → View in Fleet → okta-user-group-membership-lookup.yml

Verifies eligibility, calculates back premium, and reinstates in Salesforce.

naftiko: '0.5'
info:
  label: Policy Reinstatement Workflow
  description: Verifies eligibility, calculates back premium, and reinstates in Salesforce.
  tags:
  - insurance
  - policy
  - salesforce
  - billing
capability:
  exposes:
  - type: mcp
    namespace: reinstate-ops
    port: 8080
    tools:
    - name: reinstate
      description: Reinstate policy.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Lapsed policy.
      steps:
      - name: check
        type: call
        call: underwriting.check
        with:
          policy: '{{policy}}'
      - name: calc
        type: call
        call: billing-api.calc
        with:
          policy: '{{policy}}'
      - name: reinstate
        type: call
        call: salesforce.reinstate
        with:
          policy: '{{policy}}'
          premium: '{{calc.amount}}'
  consumes:
  - type: http
    namespace: underwriting
    baseUri: https://api.axa.com/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.underwriting_api_token
    resources:
    - name: reinstatement
      path: /reinstatement/eligibility
      operations:
      - name: check
        method: POST
  - type: http
    namespace: billing-api
    baseUri: https://api.axa.com/billing/v1
    authentication:
      type: bearer
      token: $secrets.billing_api_token
    resources:
    - name: back-premium
      path: /back-premium/calculate
      operations:
      - name: calc
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c
      operations:
      - name: reinstate
        method: PATCH
Open in Framework → View in Fleet → policy-reinstatement-workflow.yml

Retrieves current claim status from ServiceNow including state, adjuster, and last update.

naftiko: '0.5'
info:
  label: Claims Status Inquiry
  description: Retrieves current claim status from ServiceNow including state, adjuster, and last update.
  tags:
  - insurance
  - claims
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: claims-ops
    port: 8080
    tools:
    - name: get-claim-status
      description: Look up claim status by number. Returns state, adjuster, last activity. Use for claim inquiries.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: AXA claim number.
      call: servicenow.get-case
      with:
        claim_number: '{{claim_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state
      - name: adjuster
        type: string
        mapping: $.assigned_to.display_value
      - name: last_activity
        type: string
        mapping: $.sys_updated_on
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-case
        method: GET
Open in Framework → View in Fleet → claims-status-inquiry.yml

Queries Snowflake for policy exposure in severe weather regions and refreshes Power BI.

naftiko: '0.5'
info:
  label: Weather Exposure Analysis Workflow
  description: Queries Snowflake for policy exposure in severe weather regions and refreshes Power BI.
  tags:
  - insurance
  - actuarial
  - catastrophe
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: exposure-ops
    port: 8080
    tools:
    - name: analyze-exposure
      description: Analyze weather exposure.
      inputParameters:
      - name: type
        in: body
        type: string
        description: Weather type.
      - name: zips
        in: body
        type: string
        description: Affected ZIPs.
      steps:
      - name: query
        type: call
        call: snowflake.query
        with:
          query: SELECT lob,COUNT(*),SUM(tiv) FROM POLICIES WHERE zip IN ('{{zips}}') GROUP BY lob
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_cat
          dataset_id: $secrets.pbi_exposure
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → weather-exposure-analysis-workflow.yml

When a new hire record 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 hire.

naftiko: '0.5'
info:
  label: New Employee Onboarding Orchestrator
  description: When a new hire record 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 hire.
  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, orchestrate the full onboarding sequence: provision Active Directory account via Microsoft Graph, create ServiceNow IT ticket, and send Teams welcome message.'
      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 start date in ISO 8601 format (YYYY-MM-DD).
      - name: department
        in: body
        type: string
        description: The department the new hire is joining, e.g. 'Claims Operations'.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: provision-ad-account
        type: call
        call: msgraph.create-user
        with:
          displayName: '{{get-worker.full_name}}'
          userPrincipalName: '{{get-worker.work_email}}'
          department: '{{department}}'
      - name: open-it-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'IT Onboarding: {{get-worker.full_name}} starting {{start_date}}'
          category: hr_onboarding
          assigned_to: IT_Onboarding_Group
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          message: 'Welcome to AXA, {{get-worker.first_name}}! Your IT setup is in progress. Ticket: {{open-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: /axa/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://axa.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-employee-onboarding-orchestrator.yml

Searches ServiceNow knowledge base for articles matching a query.

naftiko: '0.5'
info:
  label: ServiceNow Knowledge Article Search
  description: Searches ServiceNow knowledge base for articles matching a query.
  tags:
  - insurance
  - servicenow
  - knowledge-management
capability:
  exposes:
  - type: mcp
    namespace: kb-ops
    port: 8080
    tools:
    - name: search-kb
      description: Search knowledge base. Returns articles.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      - name: category
        in: body
        type: string
        description: Category.
      call: servicenow.search
      with:
        query: '{{query}}'
        category: '{{category}}'
      outputParameters:
      - name: articles
        type: array
        mapping: $.result
      - name: total
        type: integer
        mapping: $.totalResults
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: knowledge
      path: /table/kb_knowledge
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → servicenow-knowledge-article-search.yml

When a low NPS score is submitted through Salesforce Service Cloud, creates a HubSpot contact task for follow-up, and notifies the account manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer NPS Survey Follow-up Workflow
  description: When a low NPS score is submitted through Salesforce Service Cloud, creates a HubSpot contact task for follow-up, and notifies the account manager via Microsoft Teams.
  tags:
  - customer-service
  - nps
  - salesforce
  - hubspot
  - microsoft-teams
  - cx
capability:
  exposes:
  - type: mcp
    namespace: cx-nps
    port: 8080
    tools:
    - name: handle-low-nps-response
      description: Given a Salesforce case ID with a low NPS score (0-6), retrieve customer contact details, create a HubSpot follow-up task, and notify the responsible account manager in Teams.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: The Salesforce Service Cloud case ID linked to the NPS survey.
      - name: nps_score
        in: body
        type: integer
        description: The NPS score submitted by the customer (0-10). Triggers follow-up if 0-6.
      - name: customer_email
        in: body
        type: string
        description: The customer's email address from the survey submission.
      steps:
      - name: get-case
        type: call
        call: salesforce.get-case
        with:
          case_id: '{{case_id}}'
      - name: create-followup-task
        type: call
        call: hubspot.create-task
        with:
          subject: 'NPS Follow-up (score {{nps_score}}): {{customer_email}}'
          contact_email: '{{customer_email}}'
          due_date: 2d
          priority: HIGH
      - name: notify-account-manager
        type: call
        call: msteams.post-channel-message
        with:
          channel: cx-alerts
          message: 'Low NPS ({{nps_score}}/10) from {{customer_email}} | Case: {{get-case.case_number}} | HubSpot task created.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://axa.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: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: tasks
      path: /objects/tasks
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → customer-nps-survey-follow-up-workflow.yml

Retrieves complete claims history from Snowflake including dates, types, and outcomes.

naftiko: '0.5'
info:
  label: Policyholder Claims History Lookup
  description: Retrieves complete claims history from Snowflake including dates, types, and outcomes.
  tags:
  - insurance
  - claims
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: claims-hist
    port: 8080
    tools:
    - name: get-history
      description: Look up claims history. Returns all claims.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: AXA customer ID.
      call: snowflake.query-claims
      with:
        customer_id: '{{customer_id}}'
      outputParameters:
      - name: total
        type: integer
        mapping: $.totalClaims
      - name: claims
        type: array
        mapping: $.claims
      - name: paid
        type: number
        mapping: $.totalPaid
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-claims
        method: POST
Open in Framework → View in Fleet → policyholder-claims-history-lookup.yml

Triggers a Power BI dataset refresh for the AXA executive dashboard and notifies the Finance team via Microsoft Teams when the refresh completes or fails.

naftiko: '0.5'
info:
  label: Power BI Report Refresh Trigger
  description: Triggers a Power BI dataset refresh for the AXA executive dashboard and notifies the Finance team via Microsoft Teams when the refresh completes or fails.
  tags:
  - data
  - analytics
  - power-bi
  - microsoft-teams
  - reporting
  - finance
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: trigger-powerbi-refresh
      description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and post the refresh status to the Finance Teams channel when complete.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace (group) 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 dataset {{dataset_id}} refresh triggered. 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
Open in Framework → View in Fleet → power-bi-report-refresh-trigger.yml

Synchronizes HubSpot contact lifecycle stages with Salesforce opportunity stages for AXA's commercial insurance pipeline, ensuring CRM data consistency.

naftiko: '0.5'
info:
  label: HubSpot Contact Lifecycle Stage Sync
  description: Synchronizes HubSpot contact lifecycle stages with Salesforce opportunity stages for AXA's commercial insurance pipeline, ensuring CRM data consistency.
  tags:
  - crm
  - salesforce
  - hubspot
  - data-sync
  - sales
capability:
  exposes:
  - type: mcp
    namespace: crm-sync
    port: 8080
    tools:
    - name: sync-contact-lifecycle-stage
      description: Given a HubSpot contact email and new lifecycle stage, update the contact in HubSpot and sync the corresponding Salesforce contact record with the same stage.
      inputParameters:
      - name: contact_email
        in: body
        type: string
        description: The email address of the contact to update.
      - name: lifecycle_stage
        in: body
        type: string
        description: 'The new lifecycle stage: ''subscriber'', ''lead'', ''marketingqualifiedlead'', ''salesqualifiedlead'', ''opportunity'', ''customer''.'
      steps:
      - name: update-hubspot-contact
        type: call
        call: hubspot.update-contact
        with:
          email: '{{contact_email}}'
          lifecyclestage: '{{lifecycle_stage}}'
      - name: update-salesforce-contact
        type: call
        call: salesforce.update-contact
        with:
          email: '{{contact_email}}'
          lifecycle_stage: '{{lifecycle_stage}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts
      operations:
      - name: update-contact
        method: PATCH
  - type: http
    namespace: salesforce
    baseUri: https://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: update-contact
        method: PATCH
Open in Framework → View in Fleet → hubspot-contact-lifecycle-stage-sync.yml

Checks coverage, creates vendor auth, and updates claim in ServiceNow.

naftiko: '0.5'
info:
  label: Rental Car Authorization Workflow
  description: Checks coverage, creates vendor auth, and updates claim in ServiceNow.
  tags:
  - insurance
  - claims
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: rental-ops
    port: 8080
    tools:
    - name: auth-rental
      description: Authorize rental.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: days
        in: body
        type: integer
        description: Days.
      steps:
      - name: check
        type: call
        call: claims-api.check-rental
        with:
          claim_id: '{{claim_id}}'
      - name: auth
        type: call
        call: rental-api.create-auth
        with:
          claim_id: '{{claim_id}}'
          days: '{{days}}'
      - name: update
        type: call
        call: servicenow.update
        with:
          claim_id: '{{claim_id}}'
          rental: '{{auth.id}}'
  consumes:
  - type: http
    namespace: claims-api
    baseUri: https://api.axa.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: rental
      path: /claims/{{claim_id}}/rental
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: check-rental
        method: GET
  - type: http
    namespace: rental-api
    baseUri: https://api.axa.com/rental/v1
    authentication:
      type: bearer
      token: $secrets.rental_token
    resources:
    - name: auths
      path: /authorizations
      operations:
      - name: create-auth
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case/{{claim_id}}
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: update
        method: PATCH
Open in Framework → View in Fleet → rental-car-authorization-workflow.yml

Runs graph analytics in Snowflake to detect fraud rings, creates cases, and alerts SIU.

naftiko: '0.5'
info:
  label: Fraud Ring Detection Investigation
  description: Runs graph analytics in Snowflake to detect fraud rings, creates cases, and alerts SIU.
  tags:
  - insurance
  - fraud
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: fraud-ring
    port: 8080
    tools:
    - name: detect-rings
      description: Detect fraud rings.
      inputParameters:
      - name: start
        in: body
        type: string
        description: Start date.
      - name: end
        in: body
        type: string
        description: End date.
      steps:
      - name: detect
        type: call
        call: snowflake.query
        with:
          query: CALL DETECT_FRAUD_RINGS('{{start}}','{{end}}')
      - name: case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Fraud rings: {{start}} to {{end}}'
      - name: alert
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.siu_channel
          text: 'Rings detected. Case: {{case.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_si_incident
      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: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → fraud-ring-detection-investigation.yml

Generates profitability report from Snowflake and publishes to Power BI.

naftiko: '0.5'
info:
  label: Underwriting Profitability Report
  description: Generates profitability report from Snowflake and publishes to Power BI.
  tags:
  - insurance
  - underwriting
  - actuarial
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: uw-profit
    port: 8080
    tools:
    - name: gen-profitability
      description: Generate UW profitability.
      inputParameters:
      - name: product
        in: body
        type: string
        description: Product.
      - name: period
        in: body
        type: string
        description: YYYY-Q.
      steps:
      - name: query
        type: call
        call: snowflake.query
        with:
          query: SELECT state,combined_ratio FROM PROFITABILITY WHERE product='{{product}}'
      - name: refresh
        type: call
        call: powerbi.refresh
        with:
          group_id: $secrets.pbi_uw
          dataset_id: $secrets.pbi_profit
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: 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
        method: POST
Open in Framework → View in Fleet → underwriting-profitability-report.yml

Compiles actuarial data from Snowflake, generates filing documents, and logs submission.

naftiko: '0.5'
info:
  label: Regulatory Rate Filing Workflow
  description: Compiles actuarial data from Snowflake, generates filing documents, and logs submission.
  tags:
  - insurance
  - compliance
  - actuarial
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: rate-filing
    port: 8080
    tools:
    - name: submit-filing
      description: Submit rate filing.
      inputParameters:
      - name: product
        in: body
        type: string
        description: Product.
      - name: state
        in: body
        type: string
        description: State.
      - name: change
        in: body
        type: number
        description: Rate change %
      steps:
      - name: compile
        type: call
        call: snowflake.query
        with:
          query: CALL COMPILE_RATE_FILING('{{product}}','{{state}}')
      - name: gen
        type: call
        call: document-api.generate
        with:
          product: '{{product}}'
          state: '{{state}}'
      - name: log
        type: call
        call: compliance-api.log
        with:
          product: '{{product}}'
          state: '{{state}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: document-api
    baseUri: https://api.axa.com/documents/v1
    authentication:
      type: bearer
      token: $secrets.document_api_token
    resources:
    - name: filings
      path: /generate/rate-filing
      operations:
      - name: generate
        method: POST
  - type: http
    namespace: compliance-api
    baseUri: https://api.axa.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_api_token
    resources:
    - name: filings
      path: /filings
      operations:
      - name: log
        method: POST
Open in Framework → View in Fleet → regulatory-rate-filing-workflow.yml

Verifies glass coverage, schedules vendor repair, and confirms to policyholder.

naftiko: '0.5'
info:
  label: Glass Repair Fast Track Workflow
  description: Verifies glass coverage, schedules vendor repair, and confirms to policyholder.
  tags:
  - insurance
  - claims
  - auto
capability:
  exposes:
  - type: mcp
    namespace: glass-ops
    port: 8080
    tools:
    - name: fast-track
      description: Fast-track glass claim.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Policy.
      - name: damage
        in: body
        type: string
        description: Damage type.
      - name: zip
        in: body
        type: string
        description: ZIP.
      steps:
      - name: verify
        type: call
        call: claims-api.verify
        with:
          policy: '{{policy}}'
      - name: schedule
        type: call
        call: glass-vendor.schedule
        with:
          policy: '{{policy}}'
          damage: '{{damage}}'
      - name: confirm
        type: call
        call: notification-api.send
        with:
          policy: '{{policy}}'
          template: glass-scheduled
  consumes:
  - type: http
    namespace: claims-api
    baseUri: https://api.axa.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: glass
      path: /policies/{{policy}}/glass
      inputParameters:
      - name: policy
        in: path
      operations:
      - name: verify
        method: GET
  - type: http
    namespace: glass-vendor
    baseUri: https://api.axa.com/vendors/glass/v1
    authentication:
      type: bearer
      token: $secrets.glass_token
    resources:
    - name: repairs
      path: /schedule
      operations:
      - name: schedule
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://api.axa.com/notifications/v1
    authentication:
      type: bearer
      token: $secrets.notification_token
    resources:
    - name: notifications
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → glass-repair-fast-track-workflow.yml

Checks Snowflake for duplicate claims and flags matches in ServiceNow.

naftiko: '0.5'
info:
  label: Duplicate Claims Detection Workflow
  description: Checks Snowflake for duplicate claims and flags matches in ServiceNow.
  tags:
  - insurance
  - fraud
  - claims
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: dup-detect
    port: 8080
    tools:
    - name: detect-dupes
      description: Detect duplicates.
      inputParameters:
      - name: claimant
        in: body
        type: string
        description: Claimant.
      - name: loss_date
        in: body
        type: string
        description: Loss date.
      - name: loss_type
        in: body
        type: string
        description: Loss type.
      steps:
      - name: search
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM CLAIMS WHERE claimant='{{claimant}}' AND loss_date NEAR '{{loss_date}}'
      - name: flag
        type: call
        call: servicenow.create-record
        with:
          table: u_fraud_alert
          type: duplicate
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://axa.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://axa.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/u_fraud_alert
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → duplicate-claims-detection-workflow.yml

When a qualified insurance lead is flagged in Salesforce, enriches the contact record, converts it to an opportunity, and assigns the account manager via HubSpot.

naftiko: '0.5'
info:
  label: Salesforce Lead to Opportunity Conversion
  description: When a qualified insurance lead is flagged in Salesforce, enriches the contact record, converts it to an opportunity, and assigns the account manager via HubSpot.
  tags:
  - sales
  - crm
  - salesforce
  - hubspot
  - lead-management
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: sales-crm
    port: 8080
    tools:
    - name: convert-lead-to-opportunity
      description: Given a Salesforce lead ID and qualifying score, enrich the lead record, convert it to an opportunity, and create a corresponding HubSpot deal.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead ID to convert.
      - name: lead_score
        in: body
        type: integer
        description: Lead qualification score (0-100). Must be above 70 to convert.
      - name: product_interest
        in: body
        type: string
        description: The AXA product the lead is interested in, e.g. 'Life Insurance', 'Health'.
      steps:
      - name: get-lead
        type: call
        call: salesforce-lookup.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: convert-lead
        type: call
        call: salesforce-update.convert-lead
        with:
          lead_id: '{{lead_id}}'
          opportunity_name: '{{get-lead.company}} — {{product_interest}}'
      - name: create-hubspot-deal
        type: call
        call: hubspot.create-deal
        with:
          dealname: '{{get-lead.company}} — {{product_interest}}'
          email: '{{get-lead.email}}'
          dealstage: qualified
          amount: '{{get-lead.estimated_premium}}'
  consumes:
  - type: http
    namespace: salesforce-lookup
    baseUri: https://axa.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://axa.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: lead-convert
      path: /sobjects/Lead/{{lead_id}}/convert
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: convert-lead
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: deals
      path: /objects/deals
      operations:
      - name: create-deal
        method: POST
Open in Framework → View in Fleet → salesforce-lead-to-opportunity-conversion.yml

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
Open in Framework → View in Fleet → critical-it-incident-response-and-escalation.yml

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

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
Open in Framework → View in Fleet → bloomberg-security-price-lookup.yml

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
Open in Framework → View in Fleet → salesforce-relationship-manager-assignment-lookup.yml

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
Open in Framework → View in Fleet → wire-transfer-fraud-screening-workflow.yml

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
Open in Framework → View in Fleet → market-risk-daily-var-reporter.yml

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
Open in Framework → View in Fleet → regulatory-capital-adequacy-reporter.yml

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
Open in Framework → View in Fleet → linkedin-talent-acquisition-campaign-report.yml

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
Open in Framework → View in Fleet → market-risk-daily-var-report.yml

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

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
Open in Framework → View in Fleet → treasury-cash-position-daily-report.yml

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
Open in Framework → View in Fleet → github-actions-deployment-failure-handler.yml

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
Open in Framework → View in Fleet → aml-transaction-monitoring-workflow.yml

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
Open in Framework → View in Fleet → jira-engineering-sprint-velocity-report.yml

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
Open in Framework → View in Fleet → employee-offboarding-and-access-revocation.yml

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
Open in Framework → View in Fleet → github-pull-request-security-review-gate.yml

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
Open in Framework → View in Fleet → client-portfolio-review-preparation.yml

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
Open in Framework → View in Fleet → loan-origination-document-tracker.yml

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
Open in Framework → View in Fleet → payroll-headcount-and-cost-center-report.yml

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
Open in Framework → View in Fleet → loan-origination-document-collection.yml

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
Open in Framework → View in Fleet → sap-concur-expense-report-approval-reminder.yml

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
Open in Framework → View in Fleet → terraform-cloud-infrastructure-provisioning-trigger.yml

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
Open in Framework → View in Fleet → pagerduty-on-call-engineer-lookup.yml

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
Open in Framework → View in Fleet → kyc-customer-onboarding-workflow.yml

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

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

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
Open in Framework → View in Fleet → sanctions-screening-handler.yml

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
Open in Framework → View in Fleet → refinitiv-fx-rate-lookup.yml

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
Open in Framework → View in Fleet → aml-transaction-monitoring-alert.yml

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
Open in Framework → View in Fleet → snowflake-pipeline-job-status-lookup.yml

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
Open in Framework → View in Fleet → cloud-cost-anomaly-detection-and-response.yml

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
Open in Framework → View in Fleet → interest-rate-risk-sensitivity-analysis.yml

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
Open in Framework → View in Fleet → client-portfolio-review-preparer.yml

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
Open in Framework → View in Fleet → servicenow-it-change-advisory-board-request.yml

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

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
Open in Framework → View in Fleet → wire-transfer-fraud-screening.yml

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
Open in Framework → View in Fleet → trade-settlement-exception-workflow.yml

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
Open in Framework → View in Fleet → okta-access-certification-workflow.yml

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
Open in Framework → View in Fleet → ai-assisted-regulatory-document-summarization.yml

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
Open in Framework → View in Fleet → kyc-customer-onboarding-handler.yml

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
Open in Framework → View in Fleet → regulatory-capital-adequacy-check.yml

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
Open in Framework → View in Fleet → credit-risk-assessment-workflow.yml

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
Open in Framework → View in Fleet → credit-risk-assessment-handler.yml

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
Open in Framework → View in Fleet → workday-contractor-status-lookup.yml

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
Open in Framework → View in Fleet → trade-settlement-exception-handler.yml

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
Open in Framework → View in Fleet → treasury-cash-position-report.yml

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
Open in Framework → View in Fleet → snowflake-risk-data-warehouse-quality-check.yml

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
Open in Framework → View in Fleet → workday-performance-review-cycle-launch.yml

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

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
Open in Framework → View in Fleet → datadog-platform-slo-digest.yml

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
Open in Framework → View in Fleet → salesforce-client-opportunity-pipeline-digest.yml

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

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

naftiko: '0.5'
info:
  label: Security Incident Response Pipeline
  description: Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
  tags:
  - security
  - splunk
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: 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
Open in Framework → View in Fleet → security-incident-response-pipeline.yml

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

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

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

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

naftiko: '0.5'
info:
  label: Employee Onboarding Automation Pipeline
  description: Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
  tags:
  - hr
  - workday
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: 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
Open in Framework → View in Fleet → employee-onboarding-automation-pipeline.yml

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
Open in Framework → View in Fleet → counterparty-risk-assessment.yml

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
Open in Framework → View in Fleet → barclays-service-health-check.yml

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

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

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

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

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
Open in Framework → View in Fleet → sailpoint-access-certification-review.yml

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

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
Open in Framework → View in Fleet → real-time-payments-processing.yml

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

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

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
Open in Framework → View in Fleet → geneos-system-health-status.yml

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

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
Open in Framework → View in Fleet → bloomberg-economics-indicator-fetch.yml

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
Open in Framework → View in Fleet → sap-concur-expense-report-approval.yml

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

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

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

naftiko: '0.5'
info:
  label: SLA Compliance Monitoring Pipeline
  description: Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
  tags:
  - operations
  - datadog
  - servicenow
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: sla_compliance_monitoring_pipeline
      description: Orchestrate sla compliance monitoring pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-datadog
        type: call
        call: datadog.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-powerbi
        type: call
        call: powerbi.create-resource
        with:
          channel: '{{notification_channel}}'
          text: SLA Compliance Monitoring Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
      header: DD-API-KEY
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: datadog-op
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://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
Open in Framework → View in Fleet → sla-compliance-monitoring-pipeline.yml

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
Open in Framework → View in Fleet → factset-company-financials-lookup.yml

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
Open in Framework → View in Fleet → barclays-api-endpoint-status.yml

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

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

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
Open in Framework → View in Fleet → interest-rate-swap-lifecycle.yml

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

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

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
Open in Framework → View in Fleet → aml-transaction-alert-triage.yml

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

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

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

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
Open in Framework → View in Fleet → client-kyc-refresh-pipeline.yml

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

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
Open in Framework → View in Fleet → market-risk-var-calculation-pipeline.yml

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
Open in Framework → View in Fleet → barclays-cost-report-query.yml

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

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
Open in Framework → View in Fleet → bloomberg-market-data-lookup.yml

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

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
Open in Framework → View in Fleet → regulatory-report-generation.yml

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

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
Open in Framework → View in Fleet → trade-execution-post-trade-enrichment.yml

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
Open in Framework → View in Fleet → client-suitability-assessment.yml

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
Open in Framework → View in Fleet → mastercard-payment-gateway-status.yml

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

naftiko: '0.5'
info:
  label: API Deprecation Notice Pipeline
  description: Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
  tags:
  - engineering
  - datadog
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: api_deprecation_notice_pipeline
      description: Orchestrate api deprecation notice pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-datadog
        type: call
        call: datadog.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: API Deprecation Notice Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
      header: DD-API-KEY
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: datadog-op
        method: POST
  - type: http
    namespace: jira
    baseUri: https://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
Open in Framework → View in Fleet → api-deprecation-notice-pipeline.yml

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
Open in Framework → View in Fleet → fixed-income-order-execution.yml

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

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

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

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

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

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
Open in Framework → View in Fleet → payment-processing-swift-dispatch.yml

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

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
Open in Framework → View in Fleet → bloomberg-news-feed.yml

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

naftiko: '0.5'
info:
  label: Data Quality Monitoring Pipeline
  description: Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
  tags:
  - data-quality
  - snowflake
  - jira
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: data_quality_monitoring_pipeline
      description: Orchestrate data quality monitoring pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-snowflake
        type: call
        call: snowflake.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-snowflake.result}}'
      - name: create-grafana
        type: call
        call: grafana.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Data Quality Monitoring Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://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
Open in Framework → View in Fleet → data-quality-monitoring-pipeline.yml

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
Open in Framework → View in Fleet → datadog-service-health-dashboard.yml

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
Open in Framework → View in Fleet → capital-adequacy-report-pipeline.yml

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
Open in Framework → View in Fleet → bacs-payment-batch-submission.yml

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
Open in Framework → View in Fleet → trade-surveillance-alert-processing.yml

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

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

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

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
Open in Framework → View in Fleet → credit-risk-model-scoring.yml

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

naftiko: '0.5'
info:
  label: Performance Review Cycle Pipeline
  description: Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
  tags:
  - hr
  - workday
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: performance_review_cycle_pipeline
      description: Orchestrate performance review cycle pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-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
Open in Framework → View in Fleet → performance-review-cycle-pipeline.yml

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
Open in Framework → View in Fleet → sanctions-list-update-propagation.yml

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
Open in Framework → View in Fleet → amazon-s3-report-archive-retrieval.yml

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

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
Open in Framework → View in Fleet → barclays-database-query-runner.yml

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
Open in Framework → View in Fleet → kyc-customer-identity-verification.yml

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
Open in Framework → View in Fleet → kafka-trade-event-stream-publishing.yml

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

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
Open in Framework → View in Fleet → barclays-security-scan-results.yml

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

naftiko: '0.5'
info:
  label: Training Compliance Tracker Pipeline
  description: Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
  tags:
  - compliance
  - workday
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: training_compliance_tracker_pipeline
      description: Orchestrate training compliance tracker pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-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
Open in Framework → View in Fleet → training-compliance-tracker-pipeline.yml

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
Open in Framework → View in Fleet → wealth-management-portfolio-rebalancing.yml

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

naftiko: '0.5'
info:
  label: Third-Party Integration Health Pipeline
  description: Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
  tags:
  - integrations
  - datadog
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: integrations
    port: 8080
    tools:
    - name: third_party_integration_health_pipeline
      description: Orchestrate third-party integration health pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-datadog
        type: call
        call: datadog.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Third-Party Integration Health Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
      header: DD-API-KEY
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: datadog-op
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://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
Open in Framework → View in Fleet → third-party-integration-health-pipeline.yml

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
Open in Framework → View in Fleet → microsoft-sentinel-threat-investigation.yml

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

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
Open in Framework → View in Fleet → fx-trade-lifecycle.yml

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

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

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

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

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

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

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

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

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

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

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
Open in Framework → View in Fleet → end-of-day-pnl-aggregation.yml

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

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
Open in Framework → View in Fleet → jira-compliance-task-lookup.yml

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
Open in Framework → View in Fleet → operational-risk-event-capture.yml

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
Open in Framework → View in Fleet → avaloq-banking-core-account-inquiry.yml

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
Open in Framework → View in Fleet → liquidity-coverage-ratio-monitoring.yml

Creates a ServiceNow change request for infrastructure changes at Berkshire Hathaway subsidiaries, routes it to the CAB, and notifies stakeholders via Microsoft Teams.

naftiko: '0.5'
info:
  label: ServiceNow IT Change Advisory Board Submission
  description: Creates a ServiceNow change request for infrastructure changes at Berkshire Hathaway subsidiaries, routes it to the CAB, 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 change details, risk level, and planned date, create a ServiceNow change request and notify the Change Advisory Board via the Teams CAB channel.
      inputParameters:
      - name: change_title
        in: body
        type: string
        description: Short title of the proposed change.
      - name: change_description
        in: body
        type: string
        description: Full description including business justification, impact scope, and rollback plan.
      - name: risk_level
        in: body
        type: string
        description: 'Risk level: ''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 submission: {{change_title}} | Risk: {{risk_level}} | Planned: {{planned_date}} | SNOW: {{create-change.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://berkshirehathaway.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
Open in Framework → View in Fleet → servicenow-it-change-advisory-board-submission.yml

Monitors recovery, updates Snowflake, and generates Confluence reports.

naftiko: '0.5'
info:
  label: Subrogation Recovery Tracker Workflow
  description: Monitors recovery, updates Snowflake, and generates Confluence reports.
  tags:
  - insurance
  - claims
  - subrogation
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: subro-ops
    port: 8080
    tools:
    - name: track-recovery
      description: Track subrogation.
      inputParameters:
      - name: start
        in: body
        type: string
        description: Start.
      - name: end
        in: body
        type: string
        description: End.
      steps:
      - name: data
        type: call
        call: claims-api.get-subro
        with:
          start: '{{start}}'
          end: '{{end}}'
      - name: update
        type: call
        call: snowflake.query
        with:
          query: CALL UPDATE_SUBROGATION('{{start}}','{{end}}')
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space_key: CLAIMS
          title: Subrogation {{start}} to {{end}}
  consumes:
  - type: http
    namespace: claims-api
    baseUri: https://api.berkshirehathaway.com/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_api_token
    resources:
    - name: subrogation
      path: /subrogation/summary
      operations:
      - name: get-subro
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://berkshire.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://berkshirehathaway.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → subrogation-recovery-tracker-workflow.yml

Exports headcount and cost center data from ADP for a given Berkshire Hathaway subsidiary, uploads the report to SharePoint, and sends a digest to the HR Finance Teams channel.

naftiko: '0.5'
info:
  label: Payroll Headcount Snapshot by Subsidiary
  description: Exports headcount and cost center data from ADP for a given Berkshire Hathaway subsidiary, uploads the report to SharePoint, and sends a digest to the HR Finance Teams channel.
  tags:
  - hr
  - finance
  - payroll
  - headcount
  - adp
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-finance
    port: 8080
    tools:
    - name: get-subsidiary-headcount-snapshot
      description: Export headcount data from ADP for a subsidiary and report month, upload to SharePoint, and post a summary to the HR Finance Teams channel.
      inputParameters:
      - name: report_month
        in: body
        type: string
        description: Report month in YYYY-MM format, e.g. '2026-03'.
      - name: subsidiary
        in: body
        type: string
        description: Berkshire subsidiary code, e.g. 'GEICO', 'BNSF', 'BHE', 'BHRG'.
      steps:
      - name: export-headcount
        type: call
        call: adp.export-workers
        with:
          asOfDate: '{{report_month}}'
          companyCode: '{{subsidiary}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: hr-finance-reports
          folder: Headcount/{{subsidiary}}/{{report_month}}
          filename: headcount-{{subsidiary}}-{{report_month}}.csv
          content: '{{export-headcount.csv_data}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel: hr-finance-reporting
          message: '{{subsidiary}} headcount ({{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
Open in Framework → View in Fleet → payroll-headcount-snapshot-by-subsidiary.yml

When a GitHub Actions deployment workflow fails on a production branch, creates a Jira incident ticket and posts a failure alert to the DevOps Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub Deployment Failure Handler
  description: When a GitHub Actions deployment workflow fails on a production branch, creates a Jira incident ticket and posts a failure alert to the DevOps Microsoft Teams channel.
  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 workflow run ID and repository, retrieve failure details, create a Jira incident, and alert the DevOps Teams channel.
      inputParameters:
      - name: repo_full_name
        in: body
        type: string
        description: GitHub repository full name, e.g. 'berkshire-hathaway/geico-claims-service'.
      - name: run_id
        in: body
        type: integer
        description: The GitHub Actions workflow run ID that failed.
      - name: branch
        in: body
        type: string
        description: The target branch name, typically 'main' or 'release'.
      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 ID: {{run_id}} | Status: {{get-run.conclusion}} | URL: {{get-run.html_url}}'
      - name: alert-devops
        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://berkshirehathaway.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-deployment-failure-handler.yml

Retrieves a consolidated policy portfolio summary for a Berkshire Hathaway subsidiary from Snowflake, returning policy counts, premium volumes, and loss ratios by line of business.

naftiko: '0.5'
info:
  label: Subsidiary Policy Portfolio Lookup
  description: Retrieves a consolidated policy portfolio summary for a Berkshire Hathaway subsidiary from Snowflake, returning policy counts, premium volumes, and loss ratios by line of business.
  tags:
  - insurance
  - policy
  - snowflake
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: portfolio-ops
    port: 8080
    tools:
    - name: get-subsidiary-portfolio
      description: Look up policy portfolio for a subsidiary. Returns counts, premiums, and loss ratios by LOB. Use for subsidiary performance reviews.
      inputParameters:
      - name: subsidiary_code
        in: body
        type: string
        description: The subsidiary code (e.g., GEICO, BHSI, GenRe).
      call: snowflake.query-portfolio
      with:
        subsidiary_code: '{{subsidiary_code}}'
      outputParameters:
      - name: total_policies
        type: integer
        mapping: $.totalPolicies
      - name: total_premium
        type: number
        mapping: $.totalPremium
      - name: overall_loss_ratio
        type: number
        mapping: $.overallLossRatio
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://berkshire.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-portfolio
        method: POST
Open in Framework → View in Fleet → subsidiary-policy-portfolio-lookup.yml

Executes data quality checks on Berkshire Hathaway's Snowflake insurance data warehouse, detecting anomalies and data integrity issues, and posts results to the Data Engineering Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Insurance Data Quality Monitoring
  description: Executes data quality checks on Berkshire Hathaway's Snowflake insurance data warehouse, detecting anomalies and data integrity issues, and posts results to the Data Engineering Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - data-quality
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: insurance-data-ops
    port: 8080
    tools:
    - name: run-insurance-data-quality-check
      description: Given a Snowflake table name and check date, run data quality validation SQL against insurance data, then post pass/fail results to the Data Engineering Teams channel.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table, e.g. 'BH_INSURANCE_PROD.GEICO.POLICIES'.
      - name: check_date
        in: body
        type: string
        description: 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(premium_amount IS NULL) as null_premium, COUNT_IF(policy_status NOT IN ('ACTIVE','LAPSED','CANCELLED')) as invalid_status FROM {{table_name}} WHERE effective_date = '{{check_date}}'
      - name: post-dq-results
        type: call
        call: msteams.post-channel-message
        with:
          channel: data-engineering
          message: 'DQ check {{table_name}} for {{check_date}}: {{run-dq-check.total}} records | Null premiums: {{run-dq-check.null_premium}} | Invalid statuses: {{run-dq-check.invalid_status}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://berkshirehathaway.snowflakecomputing.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
Open in Framework → View in Fleet → snowflake-insurance-data-quality-monitoring.yml

Fetches LinkedIn follower growth and engagement metrics for Berkshire Hathaway's corporate and subsidiary brand pages and posts a weekly brand performance digest to the Marketing Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Digest
  description: Fetches LinkedIn follower growth and engagement metrics for Berkshire Hathaway's corporate and subsidiary brand pages and posts a weekly brand performance digest to the Marketing Teams channel.
  tags:
  - marketing
  - social
  - linkedin
  - microsoft-teams
  - reporting
  - employer-brand
capability:
  exposes:
  - type: mcp
    namespace: brand-marketing
    port: 8080
    tools:
    - name: digest-linkedin-brand-metrics
      description: Given a LinkedIn organization URN and date range, fetch follower statistics and post a weekly employer brand performance digest to the Marketing Teams channel.
      inputParameters:
      - name: org_urn
        in: body
        type: string
        description: The LinkedIn organization URN for Berkshire Hathaway.
      - 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-follower-stats
        type: call
        call: linkedin.get-follower-statistics
        with:
          organizationalEntity: '{{org_urn}}'
      - name: post-brand-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel: marketing-brand
          message: 'LinkedIn brand digest ({{start_date}} to {{end_date}}): Total followers {{get-follower-stats.followerCount}} | New followers {{get-follower-stats.newFollowers}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: follower-statistics
      path: /organizationalEntityFollowerStatistics
      operations:
      - name: get-follower-statistics
        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
Open in Framework → View in Fleet → linkedin-employer-brand-digest.yml

Tracks reinsurance cessions across Berkshire Hathaway subsidiaries by querying ceded premium data from Snowflake, validating treaty limits, and publishing a consolidated report to Confluence.

naftiko: '0.5'
info:
  label: Reinsurance Cession Tracking Workflow
  description: Tracks reinsurance cessions across Berkshire Hathaway subsidiaries by querying ceded premium data from Snowflake, validating treaty limits, and publishing a consolidated report to Confluence.
  tags:
  - insurance
  - actuarial
  - compliance
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: cession-ops
    port: 8080
    tools:
    - name: track-cessions
      description: Track reinsurance cessions across subsidiaries. Queries data, validates limits, and publishes report. Use for quarterly reinsurance reviews.
      inputParameters:
      - name: treaty_id
        in: body
        type: string
        description: Reinsurance treaty identifier.
      - name: period
        in: body
        type: string
        description: Reporting period YYYY-Q.
      steps:
      - name: query-cessions
        type: call
        call: snowflake.query
        with:
          query: SELECT subsidiary, SUM(ceded_premium), SUM(ceded_losses) FROM REINSURANCE_DB.CESSIONS WHERE treaty='{{treaty_id}}' AND period='{{period}}' GROUP BY subsidiary
      - name: validate-limits
        type: call
        call: reinsurance-api.validate
        with:
          treaty_id: '{{treaty_id}}'
          period: '{{period}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: REINSURANCE
          title: 'Cession Tracking: Treaty {{treaty_id}} - {{period}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://berkshire.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: reinsurance-api
    baseUri: https://api.berkshirehathaway.com/reinsurance/v1
    authentication:
      type: bearer
      token: $secrets.reinsurance_token
    resources:
    - name: validation
      path: /treaties/validate
      operations:
      - name: validate
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://berkshirehathaway.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → reinsurance-cession-tracking-workflow.yml

Retrieves investment portfolio performance metrics from Snowflake for a subsidiary, returning total assets, returns, and asset allocation breakdown.

naftiko: '0.5'
info:
  label: Investment Portfolio Performance Lookup
  description: Retrieves investment portfolio performance metrics from Snowflake for a subsidiary, returning total assets, returns, and asset allocation breakdown.
  tags:
  - insurance
  - finance
  - snowflake
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: investment-ops
    port: 8080
    tools:
    - name: get-portfolio-performance
      description: Look up investment portfolio performance for a subsidiary. Returns total assets, returns, and allocation. Use for investment committee reviews.
      inputParameters:
      - name: subsidiary_code
        in: body
        type: string
        description: Subsidiary code.
      - name: as_of_date
        in: body
        type: string
        description: Performance as-of date in ISO 8601 format.
      call: snowflake.query-performance
      with:
        subsidiary_code: '{{subsidiary_code}}'
        as_of_date: '{{as_of_date}}'
      outputParameters:
      - name: total_assets
        type: number
        mapping: $.totalAssets
      - name: ytd_return
        type: number
        mapping: $.ytdReturn
      - name: allocation
        type: object
        mapping: $.assetAllocation
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://berkshire.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-performance
        method: POST
Open in Framework → View in Fleet → investment-portfolio-performance-lookup.yml

Retrieves all Okta application assignments and group memberships for a user and posts a formatted access certification report to the Cybersecurity Microsoft Teams channel for quarterly review.

naftiko: '0.5'
info:
  label: Okta User Access Certification
  description: Retrieves all Okta application assignments and group memberships for a user and posts a formatted access certification report to the Cybersecurity Microsoft Teams channel for quarterly 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, then post a structured access report to the Cybersecurity Teams channel for quarterly certification.
      inputParameters:
      - name: user_login
        in: body
        type: string
        description: The Okta user login (email) to certify.
      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://berkshirehathaway.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
Open in Framework → View in Fleet → okta-user-access-certification.yml

Validates address, updates policy, and recalculates premium.

naftiko: '0.5'
info:
  label: Address Change Workflow
  description: Validates address, updates policy, and recalculates premium.
  tags:
  - insurance
  - policy
  - salesforce
  - underwriting
capability:
  exposes:
  - type: mcp
    namespace: addr-ops
    port: 8080
    tools:
    - name: change-address
      description: Process address change.
      inputParameters:
      - name: policy
        in: body
        type: string
        description: Policy.
      - name: address
        in: body
        type: string
        description: Address.
      - name: zip
        in: body
        type: string
        description: ZIP.
      steps:
      - name: validate
        type: call
        call: address-api.validate
        with:
          address: '{{address}}'
          zip: '{{zip}}'
      - name: update
        type: call
        call: salesforce.update
        with:
          policy: '{{policy}}'
          address: '{{validate.standardized}}'
      - name: recalc
        type: call
        call: rating.recalc
        with:
          policy: '{{policy}}'
  consumes:
  - type: http
    namespace: address-api
    baseUri: https://api.berkshirehathaway.com/address/v1
    authentication:
      type: bearer
      token: $secrets.address_token
    resources:
    - name: validation
      path: /validate
      operations:
      - name: validate
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://berkshire.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c
      operations:
      - name: update
        method: PATCH
  - type: http
    namespace: rating
    baseUri: https://api.berkshirehathaway.com/rating/v2
    authentication:
      type: bearer
      token: $secrets.rating_token
    resources:
    - name: recalc
      path: /recalculate
      operations:
      - name: recalc
        method: POST
Open in Framework → View in Fleet → address-change-workflow.yml

Retrieves an insurance policy document from SharePoint and uses OpenAI to generate a structured executive summary of coverage terms, exclusions, and key dates for GEICO or other Berkshire insurance subsidiaries.

naftiko: '0.5'
info:
  label: AI-Assisted Insurance Policy Document Summarization
  description: Retrieves an insurance policy document from SharePoint and uses OpenAI to generate a structured executive summary of coverage terms, exclusions, and key dates for GEICO or other Berkshire insurance subsidiaries.
  tags:
  - ai
  - insurance
  - openai
  - sharepoint
  - document-processing
  - geico
capability:
  exposes:
  - type: mcp
    namespace: policy-ai
    port: 8080
    tools:
    - name: summarize-policy-document
      description: Given a SharePoint site ID and document item ID for an insurance policy or endorsement, retrieve the document and generate a 5-point executive summary using OpenAI. Use for rapid advisor review or customer service.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID where the policy document is stored.
      - name: item_id
        in: body
        type: string
        description: The SharePoint drive item ID for the policy document.
      - name: document_type
        in: body
        type: string
        description: 'Document type: ''auto policy'', ''homeowners policy'', ''commercial policy'', ''reinsurance treaty'', ''endorsement''.'
      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 an expert insurance analyst. Summarize this {{document_type}} document in 5 bullet points covering coverage limits, exclusions, deductibles, key dates, and any notable conditions.
          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
Open in Framework → View in Fleet → ai-assisted-insurance-policy-document-summarization.yml

When a critical Datadog alert fires for a Berkshire Hathaway technology platform, creates a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts a war-room notification in Microsoft Teams.

naftiko: '0.5'
info:
  label: Critical IT Incident Response Workflow
  description: When a critical Datadog alert fires for a Berkshire Hathaway technology platform, creates a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts a war-room notification in Microsoft Teams.
  tags:
  - itsm
  - incident-response
  - datadog
  - servicenow
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: handle-critical-incident
      description: Given a Datadog monitor ID, severity, and affected service, create a ServiceNow P1 incident, page PagerDuty on-call, and open a Teams war-room thread.
      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: Affected platform name, e.g. 'GEICO Claims Portal', 'BNSF Operations System'.
      - name: alert_message
        in: body
        type: string
        description: The Datadog alert message describing the failure.
      - name: subsidiary
        in: body
        type: string
        description: The Berkshire subsidiary owning the impacted system.
      steps:
      - name: create-p1-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'P1: {{affected_service}} [{{subsidiary}}] — {{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_service_id
          severity: critical
          body: 'Monitor: {{monitor_id}} | SNOW: {{create-p1-incident.number}} | Subsidiary: {{subsidiary}}'
      - name: open-war-room
        type: call
        call: msteams.post-channel-message
        with:
          channel: incident-war-room
          message: 'P1 INCIDENT: {{affected_service}} [{{subsidiary}}] | {{alert_message}} | SNOW: {{create-p1-incident.number}} | PD: {{page-oncall.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://berkshirehathaway.service-now.com/api/now
    authentication:
      type: 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
Open in Framework → View in Fleet → critical-it-incident-response-workflow.yml

Queries Salesforce for open client opportunities by Berkshire Hathaway subsidiary and posts a quarterly pipeline digest to the Sales Leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Subsidiary Client Pipeline Digest
  description: Queries Salesforce for open client opportunities by Berkshire Hathaway subsidiary and posts a quarterly pipeline digest to the Sales Leadership Microsoft Teams channel.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - reporting
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: sales-pipeline
    port: 8080
    tools:
    - name: digest-subsidiary-pipeline
      description: Query Salesforce for open opportunities by subsidiary closing this quarter, then post a pipeline summary to the Sales Leadership Teams channel.
      inputParameters:
      - name: subsidiary
        in: body
        type: string
        description: Berkshire subsidiary to report on, e.g. 'GEICO', 'General Re', 'Berkshire Hathaway Reinsurance'.
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter in YYYY-QX format, e.g. '2026-Q1'.
      steps:
      - name: query-pipeline
        type: call
        call: salesforce.query-opportunities
        with:
          quarter: '{{fiscal_quarter}}'
          subsidiary: '{{subsidiary}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel: sales-leadership
          message: '{{subsidiary}} pipeline Q{{fiscal_quarter}}: {{query-pipeline.count}} opportunities | Total: ${{query-pipeline.total_value}} | Weighted: ${{query-pipeline.weighted_value}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://berkshirehathaway.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
Open in Framework → View in Fleet → salesforce-subsidiary-client-pipeline-digest.yml

Generates a compliance scorecard for a Berkshire Hathaway subsidiary by querying audit, regulatory, and training data from Snowflake and publishing to Confluence.

naftiko: '0.5'
info:
  label: Subsidiary Compliance Scorecard Workflow
  description: Generates a compliance scorecard for a Berkshire Hathaway subsidiary by querying audit, regulatory, and training data from Snowflake and publishing to Confluence.
  tags:
  - insurance
  - compliance
  - snowflake
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance-score
    port: 8080
    tools:
    - name: generate-compliance-scorecard
      description: Generate compliance scorecard for a subsidiary. Queries data and publishes report. Use for quarterly compliance reviews.
      inputParameters:
      - name: subsidiary_code
        in: body
        type: string
        description: Subsidiary code.
      - name: period
        in: body
        type: string
        description: Period YYYY-Q.
      steps:
      - name: query-compliance-data
        type: call
        call: snowflake.query
        with:
          query: CALL COMPLIANCE_DB.GENERATE_SCORECARD('{{subsidiary_code}}', '{{period}}')
      - name: publish-scorecard
        type: call
        call: confluence.create-page
        with:
          space_key: COMPLIANCE
          title: 'Compliance Scorecard: {{subsidiary_code}} - {{period}}'
      - name: notify-leadership
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.compliance_channel
          text: Compliance scorecard published for {{subsidiary_code}} ({{period}}).
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://berkshire.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://berkshirehathaway.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: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → subsidiary-compliance-scorecard-workflow.yml

Dispatches appraiser, creates work order, and notifies adjuster.

naftiko: '0.5'
info:
  label: Appraisal Vendor Dispatch Workflow
  description: Dispatches appraiser, creates work order, and notifies adjuster.
  tags:
  - insurance
  - claims
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: appraisal-ops
    port: 8080
    tools:
    - name: dispatch
      description: Dispatch appraiser.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: Claim.
      - name: address
        in: body
        type: string
        description: Address.
      - name: loss
        in: body
        type: string
        description: Loss type.
      steps:
      - name: find
        type: call
        call: vendor-api.find
        with:
          location: '{{address}}'
          specialty: '{{loss}}'
      - name: wo
        type: call
        call: servicenow.create-wo
        with:
          short_description: 'Appraisal: {{claim_id}}'
      - name: notify
        type: call
        call: msteams.post
        with:
          channel_id: $secrets.claims_channel
          text: 'Appraiser: {{claim_id}}'
  consumes:
  - type: http
    namespace: vendor-api
    baseUri: https://api.berkshirehathaway.com/vendors/v1
    authentication:
      type: bearer
      token: $secrets.vendor_token
    resources:
    - name: appraisers
      path: /appraisers/search
      operations:
      - name: find
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://berkshire.snowflakecomputing.com/api/v2
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: work-orders
      path: /table/wm_order
      operations:
      - name: create-wo
        method: POST
  - type: http
    namespace: msteams
    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: channel_id
        in: path
      operations:
      - name: post
        method: POST
Open in Framework → View in Fleet → appraisal-vendor-dispatch-workflow.yml

Triggers a Power BI dataset refresh for the Berkshire Hathaway investment portfolio and subsidiary performance dashboard, and posts the refresh status to the Finance Teams channel.

naftiko: '0.5'
info:
  label: Power BI Portfolio Dashboard Refresh
  description: Triggers a Power BI dataset refresh for the Berkshire Hathaway investment portfolio and subsidiary performance dashboard, and posts the refresh status to the Finance Teams channel.
  tags:
  - analytics
  - power-bi
  - microsoft-teams
  - reporting
  - finance
  - investment
capability:
  exposes:
  - type: mcp
    namespace: portfolio-bi
    port: 8080
    tools:
    - name: trigger-portfolio-dashboard-refresh
      description: Given a Power BI workspace ID and dataset ID, trigger a portfolio performance dataset refresh and notify the Finance Teams channel with the status.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace ID containing the portfolio 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: 'Portfolio Power BI dataset {{dataset_id}} refresh triggered. 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
Open in Framework → View in Fleet → power-bi-portfolio-dashboard-refresh.yml

Retrieves Confluence page content by ID returning title, body, and last modified.

naftiko: '0.5'
info:
  label: Confluence Page Content Lookup
  description: Retrieves Confluence page content by ID returning title, body, and last modified.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: content-ops
    port: 8080
    tools:
    - name: get-page
      description: Look up Confluence page.
      inputParameters:
      - name: page_id
        in: body
        type: string
        description: 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: modified
        type: string
        mapping: $.version.when
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://berkshirehathaway.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content/{{page_id}}
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-page-content-lookup.yml

Retrieves the most recent execution status of a named Snowflake pipeline task in the Berkshire Hathaway data warehouse, including run state, timestamps, and error details.

naftiko: '0.5'
info:
  label: Snowflake Pipeline Task Status Lookup
  description: Retrieves the most recent execution status of a named Snowflake pipeline task in the Berkshire Hathaway data warehouse, including run state, timestamps, and error details.
  tags:
  - data
  - analytics
  - snowflake
  - monitoring
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: pipeline-status
    port: 8080
    tools:
    - name: get-pipeline-task-status
      description: Given a Snowflake database and task name, return the most recent run state, scheduled time, completion time, and error message.
      inputParameters:
      - name: database_name
        in: body
        type: string
        description: The Snowflake database name, e.g. 'BH_INSURANCE_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://berkshirehathaway.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
Open in Framework → View in Fleet → snowflake-pipeline-task-status-lookup.yml

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

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
Open in Framework → View in Fleet → aladdin-rebalance-and-notification-workflow.yml

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
Open in Framework → View in Fleet → prometheus-alert-to-pagerduty-escalation.yml

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
Open in Framework → View in Fleet → bloomberg-market-data-snapshot.yml

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

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

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
Open in Framework → View in Fleet → morningstar-fund-data-lookup.yml

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

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
Open in Framework → View in Fleet → datadog-infrastructure-alert-check.yml

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
Open in Framework → View in Fleet → daily-nav-calculation-pipeline.yml

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

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
Open in Framework → View in Fleet → portfolio-rebalancing-execution-pipeline.yml

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
Open in Framework → View in Fleet → esg-score-enrichment-pipeline.yml

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
Open in Framework → View in Fleet → bloomberg-aim-order-routing.yml

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
Open in Framework → View in Fleet → client-portfolio-review-generator.yml

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

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
Open in Framework → View in Fleet → morningstar-category-performance.yml

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
Open in Framework → View in Fleet → twilio-sms-notification.yml

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
Open in Framework → View in Fleet → kubernetes-deployment-scaler.yml

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
Open in Framework → View in Fleet → oracle-hyperion-budget-consolidation.yml

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
Open in Framework → View in Fleet → azure-databricks-notebook-execution.yml

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
Open in Framework → View in Fleet → investment-research-distribution-pipeline.yml

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
Open in Framework → View in Fleet → quarterly-attribution-report-pipeline.yml

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
Open in Framework → View in Fleet → google-cloud-dataflow-job-launcher.yml

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
Open in Framework → View in Fleet → terraform-infrastructure-plan-review.yml

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
Open in Framework → View in Fleet → risk-factor-stress-test-pipeline.yml

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
Open in Framework → View in Fleet → etf-creation-redemption-pipeline.yml

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
Open in Framework → View in Fleet → openai-powered-investment-memo-drafter.yml

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
Open in Framework → View in Fleet → client-quarterly-review-orchestrator.yml

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
Open in Framework → View in Fleet → fx-hedging-execution-pipeline.yml

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
Open in Framework → View in Fleet → opsgenie-alert-creation.yml

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
Open in Framework → View in Fleet → docker-image-vulnerability-scan.yml

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
Open in Framework → View in Fleet → simcorp-dimension-nav-reconciliation.yml

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
Open in Framework → View in Fleet → github-actions-ci-pipeline-status.yml

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

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
Open in Framework → View in Fleet → sap-concur-expense-status-check.yml

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
Open in Framework → View in Fleet → hashicorp-vault-secret-rotation.yml

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
Open in Framework → View in Fleet → aws-lambda-function-invocation.yml

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

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

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

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

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
Open in Framework → View in Fleet → infrastructure-cost-optimization-workflow.yml

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
Open in Framework → View in Fleet → aml-transaction-screening-pipeline.yml

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
Open in Framework → View in Fleet → multi-asset-portfolio-attribution-report.yml

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
Open in Framework → View in Fleet → refinitiv-eikon-security-lookup.yml

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

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
Open in Framework → View in Fleet → redis-cache-market-data-lookup.yml

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

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

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
Open in Framework → View in Fleet → market-data-anomaly-detection-pipeline.yml

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

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
Open in Framework → View in Fleet → refinitiv-credit-spread-lookup.yml

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
Open in Framework → View in Fleet → redis-cache-warm-up-for-market-data.yml

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
Open in Framework → View in Fleet → azure-data-factory-pipeline-monitor.yml

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
Open in Framework → View in Fleet → docker-container-image-scan-and-deploy.yml

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
Open in Framework → View in Fleet → fixed-income-pricing-and-analytics-pipeline.yml

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
Open in Framework → View in Fleet → azure-blob-storage-upload.yml

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
Open in Framework → View in Fleet → alteryx-analytics-workflow-trigger.yml

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
Open in Framework → View in Fleet → api-gateway-health-and-scaling-pipeline.yml

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

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
Open in Framework → View in Fleet → esg-engagement-tracking-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-to-aladdin-pipeline.yml

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
Open in Framework → View in Fleet → aladdin-exposure-limit-breach-handler.yml

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

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
Open in Framework → View in Fleet → regulatory-filing-preparation-workflow.yml

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
Open in Framework → View in Fleet → bloomberg-emsx-trade-submission.yml

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
Open in Framework → View in Fleet → databricks-ml-model-performance-monitor.yml

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
Open in Framework → View in Fleet → portfolio-risk-report-generator.yml

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
Open in Framework → View in Fleet → box-document-download.yml

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

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

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
Open in Framework → View in Fleet → sap-concur-expense-report-sync.yml

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
Open in Framework → View in Fleet → factset-company-fundamentals-lookup.yml

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

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
Open in Framework → View in Fleet → tableau-risk-dashboard-refresh.yml

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
Open in Framework → View in Fleet → trade-compliance-pre-check-and-emsx-submission.yml

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
Open in Framework → View in Fleet → microsoft-teams-channel-notification.yml

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
Open in Framework → View in Fleet → private-markets-deal-tracking-pipeline.yml

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
Open in Framework → View in Fleet → fx-trade-execution-and-settlement.yml

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

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
Open in Framework → View in Fleet → workday-recruiting-candidate-pipeline.yml

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

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
Open in Framework → View in Fleet → aladdin-portfolio-holdings-retrieval.yml

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

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
Open in Framework → View in Fleet → incident-triggered-runbook-executor.yml

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
Open in Framework → View in Fleet → compliance-breach-remediation-workflow.yml

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

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
Open in Framework → View in Fleet → tradeweb-fixed-income-rfq.yml

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
Open in Framework → View in Fleet → apache-airflow-dag-trigger-and-monitor.yml

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
Open in Framework → View in Fleet → etf-daily-reconciliation-pipeline.yml

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
Open in Framework → View in Fleet → msci-index-data-retrieval.yml

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
Open in Framework → View in Fleet → spark-etl-job-orchestration.yml

Queries Datadog for API endpoint latency percentiles for a given service, returning p50, p95, and p99 values.

naftiko: '0.5'
info:
  label: Datadog API Latency Check
  description: Queries Datadog for API endpoint latency percentiles for a given service, returning p50, p95, and p99 values.
  tags:
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: datadog-latency
    port: 8080
    tools:
    - name: get-latency
      description: Retrieve API latency percentiles for a service from Datadog.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The service name tag in Datadog.
      call: datadog-latency.query-metrics
      with:
        query: p99:trace.http.request{service:{{service_name}}}
  consumes:
  - type: http
    namespace: datadog-latency
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      name: DD-API-KEY
      in: header
      value: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-api-latency-check.yml

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

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
Open in Framework → View in Fleet → simcorp-dimension-position-lookup.yml

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
Open in Framework → View in Fleet → jira-project-backlog-summary.yml

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

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
Open in Framework → View in Fleet → salesforce-client-opportunity-lookup.yml

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

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
Open in Framework → View in Fleet → fx-hedging-execution-workflow.yml

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
Open in Framework → View in Fleet → kyc-client-onboarding-pipeline.yml

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
Open in Framework → View in Fleet → payment-sanctions-screening-pipeline.yml

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
Open in Framework → View in Fleet → infrastructure-security-scan-pipeline.yml

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
Open in Framework → View in Fleet → regulatory-filing-submission-pipeline.yml

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
Open in Framework → View in Fleet → corporate-action-processing-orchestrator.yml

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
Open in Framework → View in Fleet → factset-portfolio-holdings.yml

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

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
Open in Framework → View in Fleet → cross-border-payment-processing-pipeline.yml

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
Open in Framework → View in Fleet → azure-devops-pipeline-status.yml

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
Open in Framework → View in Fleet → qlik-sense-report-distribution.yml

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
Open in Framework → View in Fleet → terraform-cloud-provisioning-pipeline.yml

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
Open in Framework → View in Fleet → api-gateway-traffic-analysis-pipeline.yml

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
Open in Framework → View in Fleet → collateral-call-processing-workflow.yml

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
Open in Framework → View in Fleet → moody-credit-rating-lookup.yml

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
Open in Framework → View in Fleet → employee-access-review-workflow.yml

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
Open in Framework → View in Fleet → market-risk-var-computation-pipeline.yml

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
Open in Framework → View in Fleet → kubernetes-namespace-provisioning.yml

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
Open in Framework → View in Fleet → fund-accounting-nav-calculation-pipeline.yml

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
Open in Framework → View in Fleet → azure-machine-learning-model-deployment.yml

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

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
Open in Framework → View in Fleet → credit-limit-approval-orchestrator.yml

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
Open in Framework → View in Fleet → infrastructure-incident-response-orchestrator.yml

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
Open in Framework → View in Fleet → bloomberg-fx-rate-lookup.yml

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
Open in Framework → View in Fleet → swift-gpi-payment-tracking-pipeline.yml

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
Open in Framework → View in Fleet → kubernetes-cluster-upgrade-pipeline.yml

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
Open in Framework → View in Fleet → kafka-topic-offset-check.yml

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

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

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

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

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

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
Open in Framework → View in Fleet → regulatory-capital-report-pipeline.yml

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
Open in Framework → View in Fleet → market-risk-var-report-pipeline.yml

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
Open in Framework → View in Fleet → keycloak-identity-provisioning-pipeline.yml

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
Open in Framework → View in Fleet → qlik-sense-report-export.yml

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
Open in Framework → View in Fleet → swift-payment-message-tracking.yml

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
Open in Framework → View in Fleet → oracle-gl-balance-inquiry.yml

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
Open in Framework → View in Fleet → regulatory-report-generation-pipeline.yml

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
Open in Framework → View in Fleet → nostro-account-reconciliation-workflow.yml

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

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

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

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

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
Open in Framework → View in Fleet → trade-surveillance-alert-pipeline.yml

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
Open in Framework → View in Fleet → temenos-core-banking-account-balance.yml

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
Open in Framework → View in Fleet → tradeweb-rfq-submission.yml

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
Open in Framework → View in Fleet → alteryx-data-preparation-workflow.yml

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
Open in Framework → View in Fleet → derivatives-trade-confirmation-workflow.yml

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
Open in Framework → View in Fleet → fund-nav-publication-workflow.yml

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
Open in Framework → View in Fleet → aml-case-investigation-workflow.yml

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

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
Open in Framework → View in Fleet → tyk-api-gateway-health-check.yml

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
Open in Framework → View in Fleet → wealth-management-client-review-orchestrator.yml

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
Open in Framework → View in Fleet → credit-risk-counterparty-assessment.yml

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
Open in Framework → View in Fleet → interest-rate-swap-booking-pipeline.yml

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
Open in Framework → View in Fleet → rabbitmq-dead-letter-queue-processor.yml

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

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
Open in Framework → View in Fleet → azure-key-vault-certificate-retrieval.yml

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
Open in Framework → View in Fleet → azure-active-directory-user-lookup.yml

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

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
Open in Framework → View in Fleet → docker-container-security-scan-pipeline.yml

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

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
Open in Framework → View in Fleet → vmware-vm-provisioning-pipeline.yml

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

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
Open in Framework → View in Fleet → kafka-event-stream-health-monitor.yml

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
Open in Framework → View in Fleet → datadog-apm-service-health.yml

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
Open in Framework → View in Fleet → workday-employee-directory-search.yml

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
Open in Framework → View in Fleet → sap-payment-instruction-status.yml

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
Open in Framework → View in Fleet → database-failover-test-pipeline.yml

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
Open in Framework → View in Fleet → n8n-workflow-automation-monitor.yml

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
Open in Framework → View in Fleet → treasury-cash-pooling-pipeline.yml

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

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

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
Open in Framework → View in Fleet → vendor-risk-assessment-orchestrator.yml

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
Open in Framework → View in Fleet → terraform-infrastructure-provisioning-with-approval.yml

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

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
Open in Framework → View in Fleet → trade-surveillance-investigation-pipeline.yml

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
Open in Framework → View in Fleet → oracle-database-health-check.yml

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
Open in Framework → View in Fleet → corporate-event-notification-pipeline.yml

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
Open in Framework → View in Fleet → sap-concur-travel-request-lookup.yml

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
Open in Framework → View in Fleet → customer-complaint-routing-orchestrator.yml

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
Open in Framework → View in Fleet → regulatory-reporting-submission-orchestrator.yml

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
Open in Framework → View in Fleet → vendor-security-assessment-orchestrator.yml

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
Open in Framework → View in Fleet → anti-money-laundering-alert-orchestrator.yml

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

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
Open in Framework → View in Fleet → branch-network-performance-orchestrator.yml

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
Open in Framework → View in Fleet → bloomberg-market-data-feed-to-snowflake.yml

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
Open in Framework → View in Fleet → coupa-purchase-requisition-approval.yml

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
Open in Framework → View in Fleet → oracle-hyperion-budget-variance-report.yml

Processes card disputes by gathering transaction data from Snowflake, creating Jira tickets, and notifying customers.

naftiko: '0.5'
info:
  label: Merchant Dispute Resolution Orchestrator
  description: Processes card disputes by gathering transaction data from Snowflake, creating Jira tickets, and notifying customers.
  tags:
  - banking
  - snowflake
  - jira
  - email
capability:
  exposes:
  - type: mcp
    namespace: merchant-dispute-resolution
    port: 8080
    tools:
    - name: merchant-dispute-resolution
      description: Processes card disputes by gathering transaction 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: create-issue
        type: call
        call: jira.create-issue
        with:
          project: OPS
          summary: Merchant Dispute Resolution - {{entity_id}}
      - name: send-email
        type: call
        call: email.send-message
        with:
          to: team@capitalone.com
          subject: Merchant Dispute Resolution
  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: 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
Open in Framework → View in Fleet → merchant-dispute-resolution-orchestrator.yml

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
Open in Framework → View in Fleet → data-lake-cost-optimization-orchestrator.yml

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
Open in Framework → View in Fleet → workday-benefits-enrollment-lookup.yml

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

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
Open in Framework → View in Fleet → credit-limit-adjustment-orchestrator.yml

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
Open in Framework → View in Fleet → servicenow-change-management-approval.yml

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

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
Open in Framework → View in Fleet → servicenow-cmdb-ci-lookup.yml

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
Open in Framework → View in Fleet → card-reward-program-analysis-orchestrator.yml

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
Open in Framework → View in Fleet → palo-alto-firewall-rule-lookup.yml

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
Open in Framework → View in Fleet → azure-ad-access-recertification.yml

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
Open in Framework → View in Fleet → aws-security-group-audit-orchestrator.yml

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
Open in Framework → View in Fleet → loan-origination-pipeline-orchestrator.yml

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
Open in Framework → View in Fleet → credit-card-fraud-investigation-orchestrator.yml

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

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
Open in Framework → View in Fleet → open-banking-api-monitoring-orchestrator.yml

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
Open in Framework → View in Fleet → cloud-infrastructure-drift-detection-orchestrator.yml

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
Open in Framework → View in Fleet → aws-lambda-function-status-lookup.yml

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
Open in Framework → View in Fleet → looker-embedded-report-refresh.yml

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
Open in Framework → View in Fleet → cloudflare-ddos-alert-to-soc.yml

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
Open in Framework → View in Fleet → adp-payroll-summary-lookup.yml

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
Open in Framework → View in Fleet → real-time-payment-fraud-detection-orchestrator.yml

Triggers a Tableau Server workbook extract refresh for a given datasource and notifies the analytics team via Slack when the refresh completes.

naftiko: '0.5'
info:
  label: Tableau Dashboard Refresh Trigger
  description: Triggers a Tableau Server workbook extract refresh for a given datasource and notifies the analytics team via Slack when the refresh completes.
  tags:
  - data
  - tableau
  - slack
  - analytics
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: analytics-ops
    port: 8080
    tools:
    - name: trigger-tableau-refresh
      description: Given a Tableau datasource ID, trigger an extract refresh job and post a Slack notification when complete. Use before scheduled analytics meetings or after data pipeline updates.
      inputParameters:
      - name: datasource_id
        in: body
        type: string
        description: The Tableau Server datasource LUID to refresh.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to notify on completion.
      steps:
      - name: trigger-refresh
        type: call
        call: tableau.trigger-extract-refresh
        with:
          datasourceId: '{{datasource_id}}'
      - name: notify-slack
        type: call
        call: slack-analytics.post-message
        with:
          channel: '{{slack_channel}}'
          text: Tableau datasource {{datasource_id}} refresh job {{trigger-refresh.jobId}} has been triggered.
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://capitalone-tableau.example.com/api/2.8
    authentication:
      type: apikey
      key: X-Tableau-Auth
      value: $secrets.tableau_token
      placement: header
    resources:
    - name: extract-refresh
      path: /sites/{siteId}/datasources/{datasourceId}/refresh
      inputParameters:
      - name: siteId
        in: path
      - name: datasourceId
        in: path
      operations:
      - name: trigger-extract-refresh
        method: POST
  - type: http
    namespace: slack-analytics
    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
Open in Framework → View in Fleet → tableau-dashboard-refresh-trigger.yml

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
Open in Framework → View in Fleet → data-quality-remediation-orchestrator.yml

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
Open in Framework → View in Fleet → github-security-scan-to-jira.yml

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
Open in Framework → View in Fleet → customer-account-closure-orchestrator.yml

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
Open in Framework → View in Fleet → palo-alto-firewall-policy-audit.yml

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
Open in Framework → View in Fleet → splunk-fraud-event-lookup.yml

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
Open in Framework → View in Fleet → microservice-health-dashboard-orchestrator.yml

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
Open in Framework → View in Fleet → disaster-recovery-test-orchestrator.yml

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
Open in Framework → View in Fleet → snowflake-credit-risk-score-lookup.yml

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
Open in Framework → View in Fleet → recruiting-pipeline-to-linkedin-job-post.yml

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
Open in Framework → View in Fleet → regulatory-compliance-document-summarizer.yml

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

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

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
Open in Framework → View in Fleet → customer-communication-preference-orchestrator.yml

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
Open in Framework → View in Fleet → informatica-data-pipeline-health-check.yml

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
Open in Framework → View in Fleet → boomi-integration-health-check.yml

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
Open in Framework → View in Fleet → digital-banking-feature-flag-orchestrator.yml

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
Open in Framework → View in Fleet → third-party-risk-assessment-orchestrator.yml

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
Open in Framework → View in Fleet → aws-cloud-cost-anomaly-responder.yml

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
Open in Framework → View in Fleet → customer-onboarding-kyc-orchestrator.yml

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
Open in Framework → View in Fleet → real-time-transaction-monitoring-orchestrator.yml

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
Open in Framework → View in Fleet → customer-360-enrichment-orchestrator.yml

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
Open in Framework → View in Fleet → soc2-evidence-collection-orchestrator.yml

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
Open in Framework → View in Fleet → aws-cost-allocation-orchestrator.yml

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
Open in Framework → View in Fleet → marketing-campaign-performance-orchestrator.yml

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
Open in Framework → View in Fleet → quarterly-business-review-orchestrator.yml

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
Open in Framework → View in Fleet → new-relic-browser-performance-lookup.yml

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

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
Open in Framework → View in Fleet → application-dependency-mapping-orchestrator.yml

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
Open in Framework → View in Fleet → oracle-hyperion-budget-lookup.yml

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
Open in Framework → View in Fleet → credit-risk-model-audit-log-to-confluence.yml

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

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
Open in Framework → View in Fleet → compliance-training-tracking-orchestrator.yml

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
Open in Framework → View in Fleet → informatica-data-pipeline-status-lookup.yml

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

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

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
Open in Framework → View in Fleet → openai-customer-support-response-drafter.yml

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

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
Open in Framework → View in Fleet → pci-compliance-scan-orchestrator.yml

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
Open in Framework → View in Fleet → adp-payroll-headcount-snapshot.yml

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
Open in Framework → View in Fleet → databricks-model-serving-health-lookup.yml

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
Open in Framework → View in Fleet → splunk-security-incident-triage.yml

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
Open in Framework → View in Fleet → expense-report-approval-via-sap-concur.yml

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
Open in Framework → View in Fleet → power-bi-revenue-dashboard-lookup.yml

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
Open in Framework → View in Fleet → amazon-redshift-query-status-lookup.yml

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
Open in Framework → View in Fleet → customer-identity-verification-orchestrator.yml

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
Open in Framework → View in Fleet → database-schema-migration-orchestrator.yml

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
Open in Framework → View in Fleet → mobile-app-crash-response-orchestrator.yml

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

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

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
Open in Framework → View in Fleet → fraud-alert-triage-with-anthropic-ai.yml

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

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
Open in Framework → View in Fleet → new-relic-apm-performance-digest.yml

Provisions IT resources for new hires by creating Okta accounts, ServiceNow requests, and Slack welcome messages.

naftiko: '0.5'
info:
  label: New Hire IT Provisioning Orchestrator
  description: Provisions IT resources for new hires by creating Okta accounts, ServiceNow requests, and Slack welcome messages.
  tags:
  - hr
  - okta
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: new-hire-it-provisioning
    port: 8080
    tools:
    - name: new-hire-it-provisioning
      description: Provisions IT resources for new hires by creating Okta accounts.
      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: New Hire IT Provisioning for {{entity_id}}
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#ops'
          text: New Hire IT Provisioning processed 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: slack
    baseUri: 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
    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
Open in Framework → View in Fleet → new-hire-it-provisioning-orchestrator.yml

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
Open in Framework → View in Fleet → workforce-planning-forecast-orchestrator.yml

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
Open in Framework → View in Fleet → automated-pen-test-findings-orchestrator.yml

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
Open in Framework → View in Fleet → payment-processing-latency-orchestrator.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-pipeline-digest.yml

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
Open in Framework → View in Fleet → customer-churn-prediction-orchestrator.yml

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
Open in Framework → View in Fleet → api-gateway-rate-limit-orchestrator.yml

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
Open in Framework → View in Fleet → quarterly-stress-test-orchestrator.yml

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
Open in Framework → View in Fleet → employee-access-review-orchestrator.yml

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
Open in Framework → View in Fleet → market-data-feed-failover-orchestrator.yml

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
Open in Framework → View in Fleet → factset-earnings-calendar-retriever.yml

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
Open in Framework → View in Fleet → splunk-security-event-analyzer.yml

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
Open in Framework → View in Fleet → twilio-client-sms-notification-sender.yml

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
Open in Framework → View in Fleet → mutual-fund-prospectus-delivery-pipeline.yml

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
Open in Framework → View in Fleet → etf-prospectus-update-orchestrator.yml

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
Open in Framework → View in Fleet → crystal-reports-client-statement-generator.yml

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
Open in Framework → View in Fleet → platform-incident-response-orchestrator.yml

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
Open in Framework → View in Fleet → amazon-s3-trade-data-archiver.yml

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
Open in Framework → View in Fleet → azure-devops-ci-cd-pipeline-status.yml

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

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
Open in Framework → View in Fleet → quarterly-client-statement-pipeline.yml

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
Open in Framework → View in Fleet → advisor-client-review-prep-orchestrator.yml

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

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
Open in Framework → View in Fleet → client-portfolio-rebalance-orchestrator.yml

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
Open in Framework → View in Fleet → informatica-client-data-quality-pipeline.yml

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
Open in Framework → View in Fleet → client-document-digitization-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-client-relationship-dashboard.yml

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
Open in Framework → View in Fleet → power-bi-client-portfolio-dashboard.yml

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
Open in Framework → View in Fleet → new-relic-application-performance-monitor.yml

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
Open in Framework → View in Fleet → confluence-investment-research-publisher.yml

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
Open in Framework → View in Fleet → jira-development-sprint-tracker.yml

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

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
Open in Framework → View in Fleet → f5-networks-trading-gateway-health.yml

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
Open in Framework → View in Fleet → factset-research-data-retriever.yml

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

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
Open in Framework → View in Fleet → schwab-mobile-app-crash-reporter.yml

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

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
Open in Framework → View in Fleet → anti-money-laundering-alert-processor.yml

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

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
Open in Framework → View in Fleet → cloudflare-ddos-protection-monitor.yml

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

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
Open in Framework → View in Fleet → hashicorp-vault-secret-rotation-status.yml

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
Open in Framework → View in Fleet → client-account-onboarding-orchestrator.yml

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
Open in Framework → View in Fleet → databricks-risk-analytics-model.yml

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

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
Open in Framework → View in Fleet → dynatrace-trading-latency-detector.yml

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
Open in Framework → View in Fleet → compliance-training-deadline-enforcer.yml

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

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
Open in Framework → View in Fleet → quarterly-earnings-report-orchestrator.yml

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
Open in Framework → View in Fleet → suspicious-activity-report-pipeline.yml

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

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
Open in Framework → View in Fleet → alteryx-client-segmentation-workflow.yml

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
Open in Framework → View in Fleet → bloomberg-market-data-feed.yml

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
Open in Framework → View in Fleet → redis-session-cache-lookup.yml

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
Open in Framework → View in Fleet → advisor-compensation-calculation-pipeline.yml

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
Open in Framework → View in Fleet → mongodb-client-preferences-lookup.yml

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
Open in Framework → View in Fleet → sap-concur-expense-report-processor.yml

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
Open in Framework → View in Fleet → aws-cloudwatch-trading-alarms.yml

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

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
Open in Framework → View in Fleet → intuit-tax-document-generator.yml

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

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

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
Open in Framework → View in Fleet → adp-payroll-data-retriever.yml

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
Open in Framework → View in Fleet → margin-call-alert-pipeline.yml

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
Open in Framework → View in Fleet → microsoft-graph-client-communication-logger.yml

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

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
Open in Framework → View in Fleet → client-tax-document-generation-pipeline.yml

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
Open in Framework → View in Fleet → tableau-investment-analytics-embed.yml

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
Open in Framework → View in Fleet → fixed-income-trade-matching-orchestrator.yml

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
Open in Framework → View in Fleet → ira-rollover-processing-orchestrator.yml

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
Open in Framework → View in Fleet → snowflake-client-activity-report.yml

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
Open in Framework → View in Fleet → prometheus-trading-latency-metrics.yml

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
Open in Framework → View in Fleet → google-sheets-financial-planning-exporter.yml

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
Open in Framework → View in Fleet → mailchimp-client-newsletter-sender.yml

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
Open in Framework → View in Fleet → sec-regulatory-filing-generator.yml

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
Open in Framework → View in Fleet → workday-employee-directory.yml

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
Open in Framework → View in Fleet → new-advisor-provisioning-orchestrator.yml

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
Open in Framework → View in Fleet → zoom-client-consultation-scheduler.yml

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
Open in Framework → View in Fleet → github-actions-platform-deployment.yml

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
Open in Framework → View in Fleet → azure-data-factory-market-data-etl.yml

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
Open in Framework → View in Fleet → kafka-trade-event-stream-monitor.yml

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
Open in Framework → View in Fleet → microsoft-intune-device-compliance-checker.yml

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
Open in Framework → View in Fleet → regulatory-exam-preparation-orchestrator.yml

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
Open in Framework → View in Fleet → qlik-sense-revenue-analytics-dashboard.yml

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
Open in Framework → View in Fleet → postman-trading-api-test-suite.yml

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
Open in Framework → View in Fleet → solarwinds-data-center-monitoring.yml

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
Open in Framework → View in Fleet → bloomberg-terminal-analytics-feed.yml

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
Open in Framework → View in Fleet → client-address-change-orchestrator.yml

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
Open in Framework → View in Fleet → websphere-legacy-account-system-monitor.yml

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
Open in Framework → View in Fleet → cost-basis-reconciliation-orchestrator.yml

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
Open in Framework → View in Fleet → client-risk-profile-update-orchestrator.yml

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
Open in Framework → View in Fleet → docusign-account-agreement-sender.yml

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
Open in Framework → View in Fleet → box-compliance-document-manager.yml

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
Open in Framework → View in Fleet → palo-alto-networks-firewall-auditor.yml

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
Open in Framework → View in Fleet → ach-transfer-processing-orchestrator.yml

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
Open in Framework → View in Fleet → pluralsight-financial-advisor-training.yml

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
Open in Framework → View in Fleet → google-drive-client-document-organizer.yml

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

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
Open in Framework → View in Fleet → options-expiration-notification-pipeline.yml

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
Open in Framework → View in Fleet → wire-transfer-approval-orchestrator.yml

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
Open in Framework → View in Fleet → linkedin-investor-relations-publisher.yml

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
Open in Framework → View in Fleet → aws-lambda-trade-settlement-monitor.yml

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
Open in Framework → View in Fleet → calypso-trade-lifecycle-manager.yml

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
Open in Framework → View in Fleet → rmd-distribution-reminder-pipeline.yml

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
Open in Framework → View in Fleet → jira-backlog-sprint-planning-digest.yml

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
Open in Framework → View in Fleet → confluence-incident-post-mortem-publisher.yml

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
Open in Framework → View in Fleet → workday-benefits-enrollment-status-reminder.yml

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
Open in Framework → View in Fleet → workday-payroll-headcount-snapshot.yml

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

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
Open in Framework → View in Fleet → sap-general-ledger-period-close-orchestrator.yml

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
Open in Framework → View in Fleet → workday-talent-acquisition-job-posting-sync.yml

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
Open in Framework → View in Fleet → vendor-invoice-processing-and-po-match.yml

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
Open in Framework → View in Fleet → github-devsecops-vulnerability-triage.yml

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
Open in Framework → View in Fleet → regulatory-compliance-incident-reporter.yml

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
Open in Framework → View in Fleet → datadog-apm-latency-anomaly-digest.yml

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
Open in Framework → View in Fleet → snowflake-trading-data-quality-check.yml

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
Open in Framework → View in Fleet → servicenow-it-change-request-approval-digest.yml

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
Open in Framework → View in Fleet → salesforce-corporate-banking-crm-lead-routing.yml

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
Open in Framework → View in Fleet → salesforce-client-relationship-renewal-alert.yml

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
Open in Framework → View in Fleet → workday-compensation-review-cycle-trigger.yml

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
Open in Framework → View in Fleet → hubspot-marketing-lead-nurture-to-salesforce-sync.yml

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
Open in Framework → View in Fleet → terraform-cloud-network-provisioning-request.yml

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
Open in Framework → View in Fleet → ai-assisted-regulatory-document-summarizer.yml

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
Open in Framework → View in Fleet → datadog-application-performance-alert-handler.yml

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
Open in Framework → View in Fleet → sap-concur-expense-policy-violation-audit.yml

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
Open in Framework → View in Fleet → home-loan-application-pipeline.yml

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

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
Open in Framework → View in Fleet → dynatrace-application-performance-lookup.yml

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

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
Open in Framework → View in Fleet → open-banking-data-sharing-pipeline.yml

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

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
Open in Framework → View in Fleet → cba-property-valuation-lookup.yml

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
Open in Framework → View in Fleet → teradata-data-quality-check.yml

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
Open in Framework → View in Fleet → personal-loan-top-up-pipeline.yml

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
Open in Framework → View in Fleet → loan-origination-document-pipeline.yml

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
Open in Framework → View in Fleet → debit-card-dispute-pipeline.yml

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
Open in Framework → View in Fleet → regulatory-breach-notification-pipeline.yml

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

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
Open in Framework → View in Fleet → x15-ventures-portfolio-lookup.yml

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
Open in Framework → View in Fleet → sap-payment-order-status.yml

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
Open in Framework → View in Fleet → home-loan-rate-lookup.yml

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
Open in Framework → View in Fleet → transaction-fraud-alert-lookup.yml

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
Open in Framework → View in Fleet → staff-access-certification-pipeline.yml

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

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
Open in Framework → View in Fleet → wealth-portfolio-review-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → business-account-opening-pipeline.yml

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
Open in Framework → View in Fleet → osko-instant-payment-status.yml

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
Open in Framework → View in Fleet → colonial-first-state-fund-lookup.yml

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
Open in Framework → View in Fleet → grafana-alert-rule-lookup.yml

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
Open in Framework → View in Fleet → real-time-fx-rate-lookup.yml

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
Open in Framework → View in Fleet → institutional-trade-execution-pipeline.yml

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
Open in Framework → View in Fleet → atm-cash-forecasting-pipeline.yml

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
Open in Framework → View in Fleet → netbank-account-balance-lookup.yml

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
Open in Framework → View in Fleet → azure-devops-release-pipeline-trigger.yml

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
Open in Framework → View in Fleet → apra-prudential-data-lookup.yml

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
Open in Framework → View in Fleet → workday-compensation-review-pipeline.yml

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
Open in Framework → View in Fleet → anti-money-laundering-investigation-pipeline.yml

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
Open in Framework → View in Fleet → albert-pos-terminal-status.yml

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
Open in Framework → View in Fleet → credit-card-dispute-resolution-pipeline.yml

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

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
Open in Framework → View in Fleet → austrac-ctt-report-lookup.yml

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
Open in Framework → View in Fleet → qlik-sense-dashboard-reload.yml

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
Open in Framework → View in Fleet → climate-risk-assessment-pipeline.yml

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
Open in Framework → View in Fleet → fx-advisory-quote-pipeline.yml

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

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

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
Open in Framework → View in Fleet → cybersecurity-incident-response-pipeline.yml

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
Open in Framework → View in Fleet → commbank-app-session-lookup.yml

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
Open in Framework → View in Fleet → hubspot-marketing-campaign-status.yml

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

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

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
Open in Framework → View in Fleet → mobile-banking-feature-toggle-pipeline.yml

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
Open in Framework → View in Fleet → tradeweb-bond-trade-execution-pipeline.yml

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

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

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
Open in Framework → View in Fleet → cloud-cost-optimization-pipeline.yml

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
Open in Framework → View in Fleet → alteryx-data-workflow-status.yml

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

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
Open in Framework → View in Fleet → github-actions-build-status.yml

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
Open in Framework → View in Fleet → vulnerability-scan-report-pipeline.yml

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

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
Open in Framework → View in Fleet → treasury-daily-cash-position-pipeline.yml

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

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

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
Open in Framework → View in Fleet → commbank-rewards-points-lookup.yml

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

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
Open in Framework → View in Fleet → azure-kubernetes-deployment-status.yml

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

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
Open in Framework → View in Fleet → digital-banking-api-health-pipeline.yml

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
Open in Framework → View in Fleet → kafka-consumer-lag-monitor.yml

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
Open in Framework → View in Fleet → commbank-yello-offer-lookup.yml

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

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

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
Open in Framework → View in Fleet → credit-card-application-pipeline.yml

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
Open in Framework → View in Fleet → api-developer-onboarding-pipeline.yml

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
Open in Framework → View in Fleet → npp-real-time-payment-processing-pipeline.yml

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
Open in Framework → View in Fleet → first-home-buyer-assessment-pipeline.yml

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
Open in Framework → View in Fleet → sme-cash-flow-lending-pipeline.yml

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

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
Open in Framework → View in Fleet → fraud-transaction-investigation-pipeline.yml

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
Open in Framework → View in Fleet → customer-360-view-builder.yml

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
Open in Framework → View in Fleet → open-banking-consent-management-pipeline.yml

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
Open in Framework → View in Fleet → international-money-transfer-pipeline.yml

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
Open in Framework → View in Fleet → npp-payment-reconciliation-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → wealth-management-portfolio-rebalance-pipeline.yml

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
Open in Framework → View in Fleet → business-lending-assessment-pipeline.yml

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
Open in Framework → View in Fleet → snowflake-regulatory-reporting-data-load.yml

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
Open in Framework → View in Fleet → snowflake-data-quality-validation.yml

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

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
Open in Framework → View in Fleet → it-infrastructure-incident-p1-response.yml

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

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
Open in Framework → View in Fleet → sap-s-4hana-purchase-order-status-lookup.yml

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

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

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
Open in Framework → View in Fleet → snowflake-risk-analytics-daily-snapshot.yml

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
Open in Framework → View in Fleet → azure-resource-health-lookup.yml

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
Open in Framework → View in Fleet → workday-employee-offboarding-access-revocation.yml

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
Open in Framework → View in Fleet → servicenow-it-change-request-for-trading-systems.yml

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
Open in Framework → View in Fleet → refinitiv-market-data-lookup.yml

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

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
Open in Framework → View in Fleet → new-employee-onboarding-orchestration.yml

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
Open in Framework → View in Fleet → servicenow-sla-breach-escalation.yml

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
Open in Framework → View in Fleet → jira-platform-engineering-sprint-digest.yml

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
Open in Framework → View in Fleet → azure-cloud-cost-anomaly-response.yml

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
Open in Framework → View in Fleet → terraform-workspace-status-lookup.yml

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
Open in Framework → View in Fleet → sap-vendor-master-lookup.yml

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
Open in Framework → View in Fleet → microsoft-365-access-provisioning-on-role-change.yml

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

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
Open in Framework → View in Fleet → pagerduty-on-call-roster-lookup.yml

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
Open in Framework → View in Fleet → workday-position-approval-for-recruiting.yml

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
Open in Framework → View in Fleet → sap-general-ledger-balance-lookup.yml

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
Open in Framework → View in Fleet → salesforce-client-relationship-enrichment.yml

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

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

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

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
Open in Framework → View in Fleet → salesforce-pipeline-revenue-forecast-digest.yml

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

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
Open in Framework → View in Fleet → docusign-envelope-status-lookup.yml

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

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

Pulls client risk profile from Salesforce, retrieves model portfolio allocations from FactSet, generates an IPS document, stores it in SharePoint, and emails the client via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Investment Policy Statement Generator
  description: Pulls client risk profile from Salesforce, retrieves model portfolio allocations from FactSet, generates an IPS document, stores it in SharePoint, and emails the client via Microsoft Outlook.
  tags:
  - wealth-management
  - compliance
  - salesforce
  - factset
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: ips-generation
    port: 8080
    tools:
    - name: generate-ips
      description: Generate an Investment Policy Statement for a client based on risk profile and model portfolio.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      - name: model_portfolio
        in: body
        type: string
        description: Model portfolio name (conservative, moderate, aggressive).
      steps:
      - name: get-client-profile
        type: call
        call: salesforce.get-account-detail
        with:
          account_id: '{{account_id}}'
      - name: get-model-allocation
        type: call
        call: factset.get-model-portfolio
        with:
          model: '{{model_portfolio}}'
      - name: store-ips
        type: call
        call: sharepoint.upload-file
        with:
          site_id: wealth-mgmt-clients
          file_path: Clients/{{get-client-profile.Name}}/IPS/ips_{{model_portfolio}}.pdf
          content: '{"client": "{{get-client-profile}}", "allocation": "{{get-model-allocation}}", "risk_category": "{{get-client-profile.risk_category}}"}'
      - name: email-client
        type: call
        call: outlook.send-email
        with:
          to: '{{get-client-profile.owner_email}}'
          subject: Your Fidelity Investment Policy Statement
          body: 'Dear {{get-client-profile.Name}}, your Investment Policy Statement based on your {{get-client-profile.risk_category}} risk profile is ready for review: {{store-ips.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.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-detail
        method: GET
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/portfolio/v1
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_password
    resources:
    - name: models
      path: /models/{{model}}/allocation
      inputParameters:
      - name: model
        in: path
      operations:
      - name: get-model-portfolio
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → investment-policy-statement-generator.yml

Processes an account transfer (ACAT) by creating the transfer request in Salesforce, submitting to the clearing system via Snowflake, notifying the receiving advisor via Microsoft Teams, and logging the transfer in ServiceNow.

naftiko: '0.5'
info:
  label: Wealth Transfer Request Pipeline
  description: Processes an account transfer (ACAT) by creating the transfer request in Salesforce, submitting to the clearing system via Snowflake, notifying the receiving advisor via Microsoft Teams, and logging the transfer in ServiceNow.
  tags:
  - wealth-management
  - operations
  - salesforce
  - snowflake
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: wealth-transfer
    port: 8080
    tools:
    - name: process-account-transfer
      description: Orchestrate an ACAT account transfer across CRM, clearing, notification, and audit systems.
      inputParameters:
      - name: source_account
        in: body
        type: string
        description: Source account number.
      - name: destination_account
        in: body
        type: string
        description: Destination account number.
      - name: transfer_type
        in: body
        type: string
        description: Transfer type (full, partial).
      - name: receiving_advisor_email
        in: body
        type: string
        description: Receiving advisor email.
      steps:
      - name: create-transfer-request
        type: call
        call: salesforce.create-transfer
        with:
          source: '{{source_account}}'
          destination: '{{destination_account}}'
          type: '{{transfer_type}}'
      - name: submit-to-clearing
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL submit_acat_transfer('{{source_account}}', '{{destination_account}}', '{{transfer_type}}', '{{create-transfer-request.transfer_id}}')
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{receiving_advisor_email}}'
          text: 'ACAT Transfer initiated: {{transfer_type}} transfer from {{source_account}} to {{destination_account}}. Transfer ID: {{create-transfer-request.transfer_id}}. Estimated completion: {{submit-to-clearing.estimated_date}}'
      - name: log-transfer
        type: call
        call: servicenow.create-record
        with:
          table: u_account_transfers
          short_description: 'ACAT Transfer: {{source_account}} to {{destination_account}}'
          transfer_id: '{{create-transfer-request.transfer_id}}'
          status: submitted
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: transfers
      path: /sobjects/Account_Transfer__c
      operations:
      - name: create-transfer
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tables
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → wealth-transfer-request-pipeline.yml

Executes a parameterized query against a Snowflake warehouse to retrieve aggregate trade volumes by date range and instrument type.

naftiko: '0.5'
info:
  label: Snowflake Trade Volume Query
  description: Executes a parameterized query against a Snowflake warehouse to retrieve aggregate trade volumes by date range and instrument type.
  tags:
  - trading
  - data
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: trade-analytics
    port: 8080
    tools:
    - name: query-trade-volumes
      description: Run a trade volume query on Snowflake by date range and instrument type.
      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.
      - name: instrument_type
        in: body
        type: string
        description: Instrument type (equity, fixed_income, options, etf).
      call: snowflake.execute-query
      with:
        statement: SELECT instrument_type, COUNT(*) as trade_count, SUM(notional) as total_notional FROM trades WHERE trade_date BETWEEN '{{start_date}}' AND '{{end_date}}' AND instrument_type = '{{instrument_type}}' GROUP BY instrument_type
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-trade-volume-query.yml

Generates KPI digest at Fidelity from Snowflake, Oracle, Power BI, and email.

naftiko: '0.5'
info:
  label: Weekly KPI Digest Pipeline
  description: Generates KPI digest at Fidelity 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 Fidelity.
      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://fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → weekly-kpi-digest-pipeline.yml

Checks Okta user at Fidelity.

naftiko: '0.5'
info:
  label: Okta User Check
  description: Checks Okta user at Fidelity.
  tags:
  - identity
  - okta
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: okta-user
    port: 8080
    tools:
    - name: check-user
      description: Check user at Fidelity.
      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://fidelity.com.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{email}}
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → okta-user-check.yml

Routes changes at Fidelity through ServiceNow and CAB approval.

naftiko: '0.5'
info:
  label: Change Management Pipeline
  description: Routes changes at Fidelity 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 Fidelity.
      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://fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → change-management-pipeline.yml

Retrieves SharePoint metadata at Fidelity.

naftiko: '0.5'
info:
  label: SharePoint File Metadata
  description: Retrieves SharePoint metadata at Fidelity.
  tags:
  - document-management
  - sharepoint
  - collaboration
capability:
  exposes:
  - type: mcp
    namespace: sp-docs
    port: 8080
    tools:
    - name: get-file
      description: Look up file at Fidelity.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: Site ID.
      - name: file_path
        in: body
        type: string
        description: Path.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        path: '{{file_path}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: size
        type: number
        mapping: $.size
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: files
      path: /sites/{{site_id}}/drive/root:/{{path}}
      inputParameters:
      - name: site_id
        in: path
      - name: path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-file-metadata.yml

Analyzes feedback at Fidelity via surveys, AI sentiment, and Power BI.

naftiko: '0.5'
info:
  label: Customer Feedback Pipeline
  description: Analyzes feedback at Fidelity 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 Fidelity.
      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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.survey_token
    resources:
    - name: responses
      path: /surveys/{{id}}/responses
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get
        method: GET
  - type: http
    namespace: ai
    baseUri: https://api.openai.com/v1
    authentication:
      type: bearer
      token: $secrets.openai_api_key
    resources:
    - name: completions
      path: /chat/completions
      operations:
      - name: analyze
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
Open in Framework → View in Fleet → customer-feedback-pipeline.yml

Checks license compliance at Fidelity via scanning, entitlements, and procurement.

naftiko: '0.5'
info:
  label: License Compliance Pipeline
  description: Checks license compliance at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
Open in Framework → View in Fleet → license-compliance-pipeline.yml

Plans capacity at Fidelity by collecting utilization and forecasting.

naftiko: '0.5'
info:
  label: Capacity Planning Pipeline
  description: Plans capacity at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
Open in Framework → View in Fleet → capacity-planning-pipeline.yml

Queries Kubernetes cluster for trading application pod health, correlates with Grafana metrics, and creates a Jira issue if degradation is detected.

naftiko: '0.5'
info:
  label: Kubernetes Trading Pod Health Check
  description: Queries Kubernetes cluster for trading application pod health, correlates with Grafana metrics, and creates a Jira issue if degradation is detected.
  tags:
  - operations
  - trading
  - grafana
  - jira
capability:
  exposes:
  - type: mcp
    namespace: k8s-health
    port: 8080
    tools:
    - name: check-trading-pods
      description: Check health of trading application pods and escalate degradation to Jira.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: Kubernetes namespace for trading pods.
      - name: grafana_dashboard_uid
        in: body
        type: string
        description: Grafana dashboard UID for trading metrics.
      steps:
      - name: get-metrics
        type: call
        call: grafana.query-dashboard
        with:
          dashboard_uid: '{{grafana_dashboard_uid}}'
          from: now-1h
          to: now
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project: TRADEOPS
          summary: Trading pod degradation in {{namespace}}
          description: 'Grafana metrics indicate degradation in namespace {{namespace}}. Dashboard: {{grafana_dashboard_uid}}. Error rate: {{get-metrics.error_rate}}. P99 latency: {{get-metrics.p99_latency}}ms'
          issue_type: Bug
          priority: High
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.fidelity.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: dashboards
      path: /dashboards/uid/{{dashboard_uid}}
      inputParameters:
      - name: dashboard_uid
        in: path
      operations:
      - name: query-dashboard
        method: GET
  - type: http
    namespace: jira
    baseUri: https://fidelity.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → kubernetes-trading-pod-health-check.yml

Checks SAP PO at Fidelity.

naftiko: '0.5'
info:
  label: SAP PO Check
  description: Checks SAP PO at Fidelity.
  tags:
  - procurement
  - sap
  - purchase-orders
capability:
  exposes:
  - type: mcp
    namespace: sap-po
    port: 8080
    tools:
    - name: get-po
      description: Check PO at Fidelity.
      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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: purchase-orders
      path: /purchase-orders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-po-check.yml

Pulls payroll summary data from ADP for a given pay period and loads it into Snowflake for compensation analytics.

naftiko: '0.5'
info:
  label: ADP Payroll Data Sync
  description: Pulls payroll summary data from ADP for a given pay period and loads it into Snowflake for compensation analytics.
  tags:
  - hr
  - payroll
  - adp
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: payroll-sync
    port: 8080
    tools:
    - name: sync-payroll-data
      description: Extract payroll data from ADP and load into Snowflake for analytics.
      inputParameters:
      - name: pay_period_end
        in: body
        type: string
        description: Pay period end date in YYYY-MM-DD format.
      steps:
      - name: extract-payroll
        type: call
        call: adp.get-payroll-summary
        with:
          pay_period_end: '{{pay_period_end}}'
      - name: load-to-snowflake
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL load_payroll_data('{{pay_period_end}}', '{{extract-payroll.output_path}}')
  consumes:
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /payroll-summaries?payPeriodEndDate={{pay_period_end}}
      inputParameters:
      - name: pay_period_end
        in: query
      operations:
      - name: get-payroll-summary
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → adp-payroll-data-sync.yml

Checks Power BI refresh at Fidelity.

naftiko: '0.5'
info:
  label: Power BI Refresh Check
  description: Checks Power BI refresh at Fidelity.
  tags:
  - analytics
  - power-bi
  - dashboards
capability:
  exposes:
  - type: mcp
    namespace: pbi-refresh
    port: 8080
    tools:
    - name: check-refresh
      description: Check refresh at Fidelity.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Dataset ID.
      call: power-bi.get-refresh
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].status
  consumes:
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: get-refresh
        method: GET
Open in Framework → View in Fleet → power-bi-refresh-check.yml

Checks release readiness at Fidelity.

naftiko: '0.5'
info:
  label: Release Readiness Pipeline
  description: Checks release readiness at Fidelity.
  tags:
  - release-management
  - devops
  - quality
capability:
  exposes:
  - type: mcp
    namespace: release-ready
    port: 8080
    tools:
    - name: check-release
      description: Check release at Fidelity.
      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/fidelity.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.fidelity.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.fidelity.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://fidelity.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → release-readiness-pipeline.yml

Checks GitHub repo at Fidelity.

naftiko: '0.5'
info:
  label: GitHub Repo Check
  description: Checks GitHub repo at Fidelity.
  tags:
  - devops
  - github
  - version-control
capability:
  exposes:
  - type: mcp
    namespace: gh-repo
    port: 8080
    tools:
    - name: get-branch
      description: Check branch at Fidelity.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repo.
      - name: branch
        in: body
        type: string
        description: Branch.
      call: github.get-branch
      with:
        repo: '{{repo}}'
        branch: '{{branch}}'
      outputParameters:
      - name: sha
        type: string
        mapping: $.commit.sha
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: branches
      path: /repos/org/{{repo}}/branches/{{branch}}
      inputParameters:
      - name: repo
        in: path
      - name: branch
        in: path
      operations:
      - name: get-branch
        method: GET
Open in Framework → View in Fleet → github-repo-check.yml

When a Zendesk ticket is created, enriches it with Salesforce client data, classifies the inquiry type, and routes to the appropriate team in ServiceNow.

naftiko: '0.5'
info:
  label: Zendesk Customer Inquiry Router
  description: When a Zendesk ticket is created, enriches it with Salesforce client data, classifies the inquiry type, and routes to the appropriate team in ServiceNow.
  tags:
  - customer-service
  - zendesk
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: inquiry-routing
    port: 8080
    tools:
    - name: route-customer-inquiry
      description: Enrich and route a customer inquiry from Zendesk through Salesforce and ServiceNow.
      inputParameters:
      - name: zendesk_ticket_id
        in: body
        type: string
        description: Zendesk ticket ID.
      steps:
      - name: get-ticket
        type: call
        call: zendesk.get-ticket
        with:
          ticket_id: '{{zendesk_ticket_id}}'
      - name: enrich-client
        type: call
        call: salesforce.find-contact
        with:
          email: '{{get-ticket.requester_email}}'
      - name: create-service-request
        type: call
        call: servicenow.create-record
        with:
          table: sc_request
          short_description: '{{get-ticket.subject}}'
          description: 'Client: {{enrich-client.Name}} ({{enrich-client.AccountType}}). Inquiry: {{get-ticket.description}}'
          assigned_group: '{{get-ticket.category}}_team'
          priority: '{{enrich-client.tier}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://fidelity.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}.json
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /query/?q=SELECT+Id,Name,Account.Name,Account.Type+FROM+Contact+WHERE+Email='{{email}}'
      inputParameters:
      - name: email
        in: query
      operations:
      - name: find-contact
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tables
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → zendesk-customer-inquiry-router.yml

Audits expenses at Fidelity via Concur, compliance checks, and email.

naftiko: '0.5'
info:
  label: Expense Audit Pipeline
  description: Audits expenses at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → expense-audit-pipeline.yml

Monitors SLAs at Fidelity via Datadog and Slack.

naftiko: '0.5'
info:
  label: SLA Monitoring Pipeline
  description: Monitors SLAs at Fidelity 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 Fidelity.
      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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → sla-monitoring-pipeline.yml

Submits a Spark job to Azure Databricks for large-scale portfolio risk calculations, returning the run ID and cluster information.

naftiko: '0.5'
info:
  label: Azure Databricks Spark Job Runner
  description: Submits a Spark job to Azure Databricks for large-scale portfolio risk calculations, returning the run ID and cluster information.
  tags:
  - data-engineering
  - risk-management
  - azure-databricks
capability:
  exposes:
  - type: mcp
    namespace: spark-compute
    port: 8080
    tools:
    - name: submit-risk-calc-job
      description: Submit a Spark job to Azure Databricks for portfolio risk calculation.
      inputParameters:
      - name: notebook_path
        in: body
        type: string
        description: Databricks notebook path.
      - name: parameters
        in: body
        type: string
        description: JSON parameters for the notebook.
      call: databricks.submit-run
      with:
        notebook_path: '{{notebook_path}}'
        parameters: '{{parameters}}'
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://adb-fidelity.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: jobs
      path: /jobs/runs/submit
      operations:
      - name: submit-run
        method: POST
Open in Framework → View in Fleet → azure-databricks-spark-job-runner.yml

Reviews vendors at Fidelity.

naftiko: '0.5'
info:
  label: Quarterly Vendor Review Pipeline
  description: Reviews vendors at Fidelity.
  tags:
  - procurement
  - vendor-management
  - review
capability:
  exposes:
  - type: mcp
    namespace: vendor-review
    port: 8080
    tools:
    - name: review-vendor
      description: Review vendors at Fidelity.
      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.fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/proc/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → quarterly-vendor-review-pipeline.yml

When a new wealth management client is created in Salesforce, provisions a SharePoint document library, creates a Jira onboarding task, and sends a Microsoft Teams notification to the assigned advisor.

naftiko: '0.5'
info:
  label: New Client Onboarding Orchestrator
  description: When a new wealth management client is created in Salesforce, provisions a SharePoint document library, creates a Jira onboarding task, and sends a Microsoft Teams notification to the assigned advisor.
  tags:
  - wealth-management
  - onboarding
  - salesforce
  - sharepoint
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: client-onboarding
    port: 8080
    tools:
    - name: onboard-new-client
      description: Orchestrate the full onboarding workflow for a new wealth management client across Salesforce, SharePoint, Jira, and Teams.
      inputParameters:
      - name: salesforce_account_id
        in: body
        type: string
        description: Salesforce Account ID for the new client.
      - name: advisor_email
        in: body
        type: string
        description: Email of the assigned financial advisor.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{salesforce_account_id}}'
      - name: create-doc-library
        type: call
        call: sharepoint.create-folder
        with:
          site_id: wealth-mgmt-clients
          folder_path: Clients/{{get-client.Name}}
      - name: create-onboarding-task
        type: call
        call: jira.create-issue
        with:
          project: WMONB
          summary: 'Client onboarding: {{get-client.Name}}'
          description: 'Complete KYC, risk profile, and IPS for new client {{get-client.Name}}. Documents: {{create-doc-library.url}}'
          issue_type: Task
          assignee: '{{advisor_email}}'
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{advisor_email}}'
          text: 'New client onboarding started for {{get-client.Name}}. Jira task: {{create-onboarding-task.key}}. Document folder: {{create-doc-library.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.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: 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: jira
    baseUri: https://fidelity.atlassian.net/rest/api/3
    authentication:
      type: 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: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-client-onboarding-orchestrator.yml

Fetches advisor AUM and revenue data from Salesforce, pulls benchmark returns from FactSet, combines them in Snowflake, and triggers a Power BI refresh for the advisor scorecard.

naftiko: '0.5'
info:
  label: Advisor Performance Dashboard Update
  description: Fetches advisor AUM and revenue data from Salesforce, pulls benchmark returns from FactSet, combines them in Snowflake, and triggers a Power BI refresh for the advisor scorecard.
  tags:
  - wealth-management
  - reporting
  - salesforce
  - factset
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: advisor-dashboard
    port: 8080
    tools:
    - name: update-advisor-scorecard
      description: Refresh advisor performance data from CRM, benchmarks, and analytics for the Power BI scorecard.
      inputParameters:
      - name: advisor_id
        in: body
        type: string
        description: Salesforce advisor user ID.
      - name: reporting_period
        in: body
        type: string
        description: Reporting period (e.g., 2026-Q1).
      steps:
      - name: get-advisor-metrics
        type: call
        call: salesforce.query-advisor-metrics
        with:
          advisor_id: '{{advisor_id}}'
          period: '{{reporting_period}}'
      - name: get-benchmarks
        type: call
        call: factset.get-benchmark-returns
        with:
          benchmark: SP500
          period: '{{reporting_period}}'
      - name: load-combined-data
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL update_advisor_scorecard('{{advisor_id}}', '{{reporting_period}}', '{{get-advisor-metrics.total_aum}}', '{{get-benchmarks.return_pct}}')
      - name: refresh-dashboard
        type: call
        call: powerbi.trigger-refresh
        with:
          workspace_id: advisor-scorecards-ws
          dataset_id: advisor-performance-ds
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: advisor-query
      path: /query/?q=SELECT+SUM(AUM__c),COUNT(Id)+FROM+Account+WHERE+OwnerId='{{advisor_id}}'
      inputParameters:
      - name: advisor_id
        in: query
      operations:
      - name: query-advisor-metrics
        method: GET
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/portfolio/v1
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_password
    resources:
    - name: benchmarks
      path: /benchmarks/{{benchmark}}/returns?period={{period}}
      inputParameters:
      - name: benchmark
        in: path
      - name: period
        in: query
      operations:
      - name: get-benchmark-returns
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: workspace_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → advisor-performance-dashboard-update.yml

Checks K8s pod health at Fidelity.

naftiko: '0.5'
info:
  label: K8s Pod Health
  description: Checks K8s pod health at Fidelity.
  tags:
  - containers
  - kubernetes
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: k8s-pod
    port: 8080
    tools:
    - name: check-pod
      description: Check pod at Fidelity.
      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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.k8s_token
    resources:
    - name: pods
      path: /namespaces/{{namespace}}/pods/{{pod}}
      inputParameters:
      - name: namespace
        in: path
      - name: pod
        in: path
      operations:
      - name: get-pod
        method: GET
Open in Framework → View in Fleet → k8s-pod-health.yml

Executes a Bloomberg Query Language expression to retrieve risk metrics such as VaR, beta, and Sharpe ratio for a given portfolio.

naftiko: '0.5'
info:
  label: Bloomberg BQL Risk Metrics
  description: Executes a Bloomberg Query Language expression to retrieve risk metrics such as VaR, beta, and Sharpe ratio for a given portfolio.
  tags:
  - risk-management
  - analytics
  - bloomberg-query-language
capability:
  exposes:
  - type: mcp
    namespace: risk-analytics
    port: 8080
    tools:
    - name: run-bql-risk-query
      description: Execute a BQL query against Bloomberg for portfolio risk metrics.
      inputParameters:
      - name: bql_expression
        in: body
        type: string
        description: A valid Bloomberg BQL expression.
      call: bql.execute-query
      with:
        expression: '{{bql_expression}}'
  consumes:
  - type: http
    namespace: bql
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: bql-queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → bloomberg-bql-risk-metrics.yml

Searches Confluence at Fidelity.

naftiko: '0.5'
info:
  label: Confluence Article Search
  description: Searches Confluence at Fidelity.
  tags:
  - knowledge-management
  - confluence
  - documentation
capability:
  exposes:
  - type: mcp
    namespace: confluence-search
    port: 8080
    tools:
    - name: search-articles
      description: Search Confluence at Fidelity.
      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://fidelity.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: content
      path: /content/search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-article-search.yml

When a compliance violation is detected in Snowflake surveillance data, creates a Salesforce compliance case, uploads evidence to Box, notifies the compliance officer via Microsoft Teams, and logs in ServiceNow.

naftiko: '0.5'
info:
  label: Compliance Alert Escalation Pipeline
  description: When a compliance violation is detected in Snowflake surveillance data, creates a Salesforce compliance case, uploads evidence to Box, notifies the compliance officer via Microsoft Teams, and logs in ServiceNow.
  tags:
  - compliance
  - surveillance
  - snowflake
  - salesforce
  - box
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: compliance-escalation
    port: 8080
    tools:
    - name: escalate-violation
      description: Escalate a compliance violation with case creation, evidence storage, notification, and audit logging.
      inputParameters:
      - name: violation_id
        in: body
        type: string
        description: Snowflake violation record ID.
      - name: compliance_officer_email
        in: body
        type: string
        description: Compliance officer email address.
      steps:
      - name: get-violation
        type: call
        call: snowflake.get-violation
        with:
          statement: SELECT * FROM compliance.violations WHERE violation_id = '{{violation_id}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Compliance Violation: {{get-violation.violation_type}} - {{get-violation.account_number}}'
          type: Compliance
          priority: High
          description: '{{get-violation.description}}'
      - name: store-evidence
        type: call
        call: box.upload-file
        with:
          parent_id: compliance_evidence
          name: violation_{{violation_id}}_evidence.json
          content: '{{get-violation.evidence_payload}}'
      - name: notify-officer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{compliance_officer_email}}'
          text: 'COMPLIANCE ALERT: {{get-violation.violation_type}} detected for account {{get-violation.account_number}}. Case: {{create-case.CaseNumber}}. Evidence: {{store-evidence.shared_link}}'
      - name: log-incident
        type: call
        call: servicenow.create-record
        with:
          table: u_compliance_incident
          short_description: Compliance violation {{violation_id}}
          case_number: '{{create-case.CaseNumber}}'
          severity: '{{get-violation.severity}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-violation
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tables
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → compliance-alert-escalation-pipeline.yml

Checks New Relic APM at Fidelity.

naftiko: '0.5'
info:
  label: New Relic APM Check
  description: Checks New Relic APM at Fidelity.
  tags:
  - monitoring
  - new-relic
  - apm
capability:
  exposes:
  - type: mcp
    namespace: nr-apm
    port: 8080
    tools:
    - name: check-apm
      description: Check APM at Fidelity.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: App ID.
      call: newrelic.get-app
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: health
        type: string
        mapping: $.application.health_status
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.new_relic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app
        method: GET
Open in Framework → View in Fleet → new-relic-apm-check.yml

Maintains KB at Fidelity by finding stale articles and notifying owners.

naftiko: '0.5'
info:
  label: Knowledge Base Maintenance Pipeline
  description: Maintains KB at Fidelity 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 Fidelity.
      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://fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: batch
      path: /send-batch
      operations:
      - name: batch
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → knowledge-base-maintenance-pipeline.yml

Retrieves a Salesforce client account record by account number, returning contact details, account type, and assigned advisor.

naftiko: '0.5'
info:
  label: Client Account Lookup
  description: Retrieves a Salesforce client account record by account number, returning contact details, account type, and assigned advisor.
  tags:
  - wealth-management
  - client-services
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: client-lookup
    port: 8080
    tools:
    - name: get-client-account
      description: Look up a client account in Salesforce by account number. Returns contact info, account type, AUM, and assigned advisor.
      inputParameters:
      - name: account_number
        in: body
        type: string
        description: The Fidelity client account number.
      call: salesforce.get-account
      with:
        account_number: '{{account_number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query/?q=SELECT+Id,Name,AccountNumber,Type,OwnerId+FROM+Account+WHERE+AccountNumber='{{account_number}}'
      inputParameters:
      - name: account_number
        in: query
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → client-account-lookup.yml

Reviews access at Fidelity via Okta, IAM, and Jira.

naftiko: '0.5'
info:
  label: Access Review Pipeline
  description: Reviews access at Fidelity 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 Fidelity.
      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://fidelity.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.fidelity.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://fidelity.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → access-review-pipeline.yml

Checks IBM MQ queue depth and message age for trade messaging queues, returning current depth, oldest message age, and consumer count.

naftiko: '0.5'
info:
  label: IBM MQ Message Queue Monitor
  description: Checks IBM MQ queue depth and message age for trade messaging queues, returning current depth, oldest message age, and consumer count.
  tags:
  - operations
  - messaging
  - ibm-mq
capability:
  exposes:
  - type: mcp
    namespace: mq-monitoring
    port: 8080
    tools:
    - name: check-queue-health
      description: Get IBM MQ queue depth and health metrics for a trade messaging queue.
      inputParameters:
      - name: queue_manager
        in: body
        type: string
        description: Queue manager name.
      - name: queue_name
        in: body
        type: string
        description: Queue name.
      call: ibmmq.get-queue-status
      with:
        queue_manager: '{{queue_manager}}'
        queue_name: '{{queue_name}}'
  consumes:
  - type: http
    namespace: ibmmq
    baseUri: https://ibmmq.fidelity.com/ibmmq/rest/v2
    authentication:
      type: basic
      username: $secrets.ibmmq_user
      password: $secrets.ibmmq_password
    resources:
    - name: queues
      path: /messaging/qmgr/{{queue_manager}}/queue/{{queue_name}}
      inputParameters:
      - name: queue_manager
        in: path
      - name: queue_name
        in: path
      operations:
      - name: get-queue-status
        method: GET
Open in Framework → View in Fleet → ibm-mq-message-queue-monitor.yml

Monitors cert expiry at Fidelity.

naftiko: '0.5'
info:
  label: Certificate Expiry Pipeline
  description: Monitors cert expiry at Fidelity.
  tags:
  - security
  - certificates
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: cert-monitor
    port: 8080
    tools:
    - name: check-certs
      description: Monitor certs at Fidelity.
      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.fidelity.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://fidelity.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → certificate-expiry-pipeline.yml

Analyzes budget variance at Fidelity via Oracle, Workday, and Slack.

naftiko: '0.5'
info:
  label: Budget Variance Pipeline
  description: Analyzes budget variance at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: var
      path: /compute
      operations:
      - name: variance
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → budget-variance-pipeline.yml

Queries Prometheus for trading system latency metrics and returns P50, P95, and P99 percentiles for a given service.

naftiko: '0.5'
info:
  label: Prometheus Trading Latency Alert
  description: Queries Prometheus for trading system latency metrics and returns P50, P95, and P99 percentiles for a given service.
  tags:
  - monitoring
  - trading
  - prometheus
capability:
  exposes:
  - type: mcp
    namespace: latency-monitoring
    port: 8080
    tools:
    - name: get-trading-latency
      description: Query Prometheus for trading service latency percentiles.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Trading service name.
      - name: time_range
        in: body
        type: string
        description: Time range for query (e.g., 5m, 1h).
      call: prometheus.query-range
      with:
        query: histogram_quantile(0.99, rate(trade_execution_duration_seconds_bucket{service="{{service_name}}"}[{{time_range}}]))
  consumes:
  - type: http
    namespace: prometheus
    baseUri: https://prometheus.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.prometheus_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-range
        method: POST
Open in Framework → View in Fleet → prometheus-trading-latency-alert.yml

When a Datadog alert fires for trading infrastructure, creates a ServiceNow P1 incident, pages the on-call engineer via Microsoft Teams, and captures a Splunk log snapshot for investigation.

naftiko: '0.5'
info:
  label: Trading Platform Incident Response
  description: When a Datadog alert fires for trading infrastructure, creates a ServiceNow P1 incident, pages the on-call engineer via Microsoft Teams, and captures a Splunk log snapshot for investigation.
  tags:
  - operations
  - incident-response
  - datadog
  - servicenow
  - microsoft-teams
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: trading-incident
    port: 8080
    tools:
    - name: handle-trading-alert
      description: Orchestrate incident response for a trading platform alert across monitoring, ITSM, and communication systems.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: service_name
        in: body
        type: string
        description: Affected trading service name.
      - name: oncall_email
        in: body
        type: string
        description: On-call engineer email.
      steps:
      - name: get-alert-details
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{alert_id}}'
      - name: create-p1-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'P1 Trading Alert: {{service_name}} - {{get-alert-details.name}}'
          urgency: '1'
          impact: '1'
          category: trading_infrastructure
          description: 'Datadog alert {{alert_id}} triggered for {{service_name}}. Message: {{get-alert-details.message}}'
      - name: capture-logs
        type: call
        call: splunk.create-search
        with:
          search: index=trading service={{service_name}} level=ERROR earliest=-15m
      - name: page-oncall
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{oncall_email}}'
          text: 'P1 ALERT: {{service_name}} is degraded. Incident: {{create-p1-incident.number}}. Datadog: {{get-alert-details.name}}. Splunk job: {{capture-logs.sid}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: splunk
    baseUri: https://splunk.fidelity.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search-jobs
      path: /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: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → trading-platform-incident-response.yml

Checks ES index at Fidelity.

naftiko: '0.5'
info:
  label: ES Index Health
  description: Checks ES index at Fidelity.
  tags:
  - search
  - elasticsearch
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: es-health
    port: 8080
    tools:
    - name: check-index
      description: Check ES index at Fidelity.
      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.fidelity.com:9200
    authentication:
      type: bearer
      token: $secrets.es_token
    resources:
    - name: indices
      path: /{{index}}/_stats
      inputParameters:
      - name: index
        in: path
      operations:
      - name: get-health
        method: GET
Open in Framework → View in Fleet → es-index-health.yml

Detects infrastructure drift at Fidelity via Terraform, Slack, and Jira.

naftiko: '0.5'
info:
  label: Drift Detection Pipeline
  description: Detects infrastructure drift at Fidelity 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 Fidelity.
      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://fidelity.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → drift-detection-pipeline.yml

Monitors data pipelines at Fidelity via Databricks, Snowflake, Slack, and ServiceNow.

naftiko: '0.5'
info:
  label: Data Pipeline Monitor Pipeline
  description: Monitors data pipelines at Fidelity 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 Fidelity.
      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://fidelity.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://fidelity.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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → data-pipeline-monitor-pipeline.yml

Collects KYC documents for a new client by creating a Salesforce case, provisioning a secure Box folder for uploads, and sending document request emails via Microsoft Outlook.

naftiko: '0.5'
info:
  label: KYC Document Collection Pipeline
  description: Collects KYC documents for a new client by creating a Salesforce case, provisioning a secure Box folder for uploads, and sending document request emails via Microsoft Outlook.
  tags:
  - compliance
  - onboarding
  - salesforce
  - box
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: kyc-workflow
    port: 8080
    tools:
    - name: initiate-kyc-collection
      description: Start the KYC document collection process for a new client.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Client full name.
      - name: client_email
        in: body
        type: string
        description: Client email address.
      - name: account_type
        in: body
        type: string
        description: Account type (individual, joint, trust, corporate).
      steps:
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'KYC Collection: {{client_name}}'
          type: KYC
          account_type: '{{account_type}}'
          contact_email: '{{client_email}}'
      - name: create-secure-folder
        type: call
        call: box.create-folder
        with:
          parent_id: kyc_uploads
          name: KYC_{{client_name}}_{{create-case.CaseNumber}}
      - name: send-request
        type: call
        call: outlook.send-email
        with:
          to: '{{client_email}}'
          subject: Fidelity - Document Upload Required for Account Opening
          body: 'Dear {{client_name}}, please upload your identification documents to the secure folder: {{create-secure-folder.shared_link}}. Required: government ID, proof of address, and tax forms. Case reference: {{create-case.CaseNumber}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: 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: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → kyc-document-collection-pipeline.yml

Checks Terraform workspace at Fidelity.

naftiko: '0.5'
info:
  label: Terraform Workspace Check
  description: Checks Terraform workspace at Fidelity.
  tags:
  - infrastructure
  - terraform
  - iac
capability:
  exposes:
  - type: mcp
    namespace: tf-ws
    port: 8080
    tools:
    - name: check-ws
      description: Check workspace at Fidelity.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Workspace ID.
      call: terraform.get-ws
      with:
        workspace_id: '{{workspace_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.data.attributes.name
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /workspaces/{{workspace_id}}
      inputParameters:
      - name: workspace_id
        in: path
      operations:
      - name: get-ws
        method: GET
Open in Framework → View in Fleet → terraform-workspace-check.yml

Retrieves a real-time quote for a fixed income security from Tradeweb, returning price, yield, spread, and dealer count.

naftiko: '0.5'
info:
  label: Tradeweb Fixed Income Quote
  description: Retrieves a real-time quote for a fixed income security from Tradeweb, returning price, yield, spread, and dealer count.
  tags:
  - trading
  - fixed-income
  - tradeweb
capability:
  exposes:
  - type: mcp
    namespace: fi-trading
    port: 8080
    tools:
    - name: get-fi-quote
      description: Fetch a real-time fixed income quote from Tradeweb by CUSIP.
      inputParameters:
      - name: cusip
        in: body
        type: string
        description: CUSIP identifier for the bond.
      call: tradeweb.get-quote
      with:
        cusip: '{{cusip}}'
  consumes:
  - type: http
    namespace: tradeweb
    baseUri: https://api.tradeweb.com/v2
    authentication:
      type: bearer
      token: $secrets.tradeweb_token
    resources:
    - name: quotes
      path: /quotes/{{cusip}}
      inputParameters:
      - name: cusip
        in: path
      operations:
      - name: get-quote
        method: GET
Open in Framework → View in Fleet → tradeweb-fixed-income-quote.yml

Retrieves the latest net asset value for a fund from SimCorp Dimension, returning NAV, shares outstanding, and valuation date.

naftiko: '0.5'
info:
  label: SimCorp Dimension NAV Lookup
  description: Retrieves the latest net asset value for a fund from SimCorp Dimension, returning NAV, shares outstanding, and valuation date.
  tags:
  - fund-accounting
  - portfolio-management
  - simcorp-dimension
capability:
  exposes:
  - type: mcp
    namespace: fund-valuation
    port: 8080
    tools:
    - name: get-fund-nav
      description: Get current NAV for a fund from SimCorp Dimension by fund code.
      inputParameters:
      - name: fund_code
        in: body
        type: string
        description: The SimCorp fund identifier.
      call: simcorp.get-nav
      with:
        fund_code: '{{fund_code}}'
  consumes:
  - type: http
    namespace: simcorp
    baseUri: https://simcorp.fidelity.com/api/v2
    authentication:
      type: bearer
      token: $secrets.simcorp_token
    resources:
    - name: funds
      path: /funds/{{fund_code}}/nav
      inputParameters:
      - name: fund_code
        in: path
      operations:
      - name: get-nav
        method: GET
Open in Framework → View in Fleet → simcorp-dimension-nav-lookup.yml

Checks Datadog monitor at Fidelity.

naftiko: '0.5'
info:
  label: Datadog Monitor Check
  description: Checks Datadog monitor at Fidelity.
  tags:
  - monitoring
  - datadog
  - observability
capability:
  exposes:
  - type: mcp
    namespace: dd-monitor
    port: 8080
    tools:
    - name: check-monitor
      description: Check monitor at Fidelity.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Monitor ID.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.overall_state
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-monitor-check.yml

Checks on-call at Fidelity.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Check
  description: Checks on-call at Fidelity.
  tags:
  - incident-management
  - pagerduty
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: pd-oncall
    port: 8080
    tools:
    - name: get-oncall
      description: Check on-call at Fidelity.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: Schedule ID.
      call: pagerduty.get-oncall
      with:
        schedule_id: '{{schedule_id}}'
      outputParameters:
      - name: user
        type: string
        mapping: $.oncalls[0].user.summary
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: oncalls
      path: /oncalls
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-check.yml

Retrieves client survey responses from Salesforce, scores risk tolerance using a Snowflake model, updates the client profile in Salesforce, and archives the assessment in Box.

naftiko: '0.5'
info:
  label: Client Risk Profile Assessment
  description: Retrieves client survey responses from Salesforce, scores risk tolerance using a Snowflake model, updates the client profile in Salesforce, and archives the assessment in Box.
  tags:
  - wealth-management
  - risk-management
  - salesforce
  - snowflake
  - box
capability:
  exposes:
  - type: mcp
    namespace: risk-profiling
    port: 8080
    tools:
    - name: assess-risk-profile
      description: Score a client risk profile from survey data and update their CRM record.
      inputParameters:
      - name: client_account_id
        in: body
        type: string
        description: Salesforce client account ID.
      steps:
      - name: get-survey
        type: call
        call: salesforce.get-survey-responses
        with:
          account_id: '{{client_account_id}}'
      - name: score-risk
        type: call
        call: snowflake.run-risk-model
        with:
          statement: SELECT score_risk_tolerance('{{get-survey.responses_json}}') as risk_score, classify_risk_tolerance('{{get-survey.responses_json}}') as risk_category
      - name: update-profile
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{client_account_id}}'
          risk_score: '{{score-risk.risk_score}}'
          risk_category: '{{score-risk.risk_category}}'
      - name: archive-assessment
        type: call
        call: box.upload-file
        with:
          parent_id: risk_assessments
          name: risk_assessment_{{client_account_id}}_{{score-risk.assessment_date}}.json
          content: '{{score-risk}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: survey-responses
      path: /query/?q=SELECT+Response_Data__c+FROM+Survey_Response__c+WHERE+Account__c='{{account_id}}'+ORDER+BY+CreatedDate+DESC+LIMIT+1
      inputParameters:
      - name: account_id
        in: query
      operations:
      - name: get-survey-responses
        method: GET
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: update-account
        method: PATCH
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-risk-model
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → client-risk-profile-assessment.yml

Checks Redis at Fidelity.

naftiko: '0.5'
info:
  label: Redis Cache Status
  description: Checks Redis at Fidelity.
  tags:
  - caching
  - redis
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: redis
    port: 8080
    tools:
    - name: check-cache
      description: Check Redis at Fidelity.
      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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.redis_token
    resources:
    - name: instances
      path: /instances/{{instance}}/info
      inputParameters:
      - name: instance
        in: path
      operations:
      - name: get-info
        method: GET
Open in Framework → View in Fleet → redis-cache-status.yml

Checks IT incident in ServiceNow for Fidelity.

naftiko: '0.5'
info:
  label: ServiceNow Incident Detail Check
  description: Checks IT incident in ServiceNow for Fidelity.
  tags:
  - it-service
  - servicenow
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: snow-incident
    port: 8080
    tools:
    - name: check-incident
      description: Check incident at Fidelity.
      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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-incident-detail-check.yml

Pulls real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and change metrics.

naftiko: '0.5'
info:
  label: Bloomberg Market Data Fetch
  description: Pulls real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and change metrics.
  tags:
  - trading
  - market-data
  - bloomberg-enterprise-data
capability:
  exposes:
  - type: mcp
    namespace: market-data
    port: 8080
    tools:
    - name: get-security-quote
      description: Fetch real-time quote data for a security ticker from Bloomberg Enterprise Data.
      inputParameters:
      - name: ticker
        in: body
        type: string
        description: Bloomberg ticker symbol (e.g., AAPL US Equity).
      call: bloomberg.get-quote
      with:
        ticker: '{{ticker}}'
  consumes:
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: quotes
      path: /quotes/{{ticker}}
      inputParameters:
      - name: ticker
        in: path
      operations:
      - name: get-quote
        method: GET
Open in Framework → View in Fleet → bloomberg-market-data-fetch.yml

Tracks contract renewals at Fidelity via contracts system, email, Jira, and Salesforce.

naftiko: '0.5'
info:
  label: Contract Renewal Pipeline
  description: Tracks contract renewals at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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://fidelity.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://fidelity.com.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opps
      path: /sobjects/Opportunity
      operations:
      - name: update
        method: PATCH
Open in Framework → View in Fleet → contract-renewal-pipeline.yml

Onboards employees at Fidelity with Okta, ServiceNow, Slack, and calendar.

naftiko: '0.5'
info:
  label: New Employee IT Onboarding Pipeline
  description: Onboards employees at Fidelity 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 Fidelity.
      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://fidelity.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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: users
      path: /users.admin.invite
      operations:
      - name: invite
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/hr/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → new-employee-it-onboarding-pipeline.yml

Pulls portfolio drift data from FactSet, generates a rebalance proposal, stores it in SharePoint, and notifies the portfolio manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Portfolio Rebalance Notification Pipeline
  description: Pulls portfolio drift data from FactSet, generates a rebalance proposal, stores it in SharePoint, and notifies the portfolio manager via Microsoft Teams.
  tags:
  - portfolio-management
  - rebalancing
  - factset
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: portfolio-rebalance
    port: 8080
    tools:
    - name: trigger-rebalance-review
      description: Detect portfolio drift in FactSet, store a rebalance proposal, and notify the portfolio manager.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: FactSet portfolio identifier.
      - name: drift_threshold
        in: body
        type: number
        description: Maximum allowable drift percentage.
      - name: pm_email
        in: body
        type: string
        description: Portfolio manager email address.
      steps:
      - name: get-drift
        type: call
        call: factset.get-drift-analysis
        with:
          portfolio_id: '{{portfolio_id}}'
          threshold: '{{drift_threshold}}'
      - name: store-proposal
        type: call
        call: sharepoint.upload-file
        with:
          site_id: portfolio-management
          file_path: Rebalance/{{portfolio_id}}/proposal_{{get-drift.analysis_date}}.json
          content: '{{get-drift.rebalance_proposal}}'
      - name: notify-pm
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{pm_email}}'
          text: 'Portfolio {{portfolio_id}} has drifted beyond {{drift_threshold}}% threshold. Rebalance proposal ready: {{store-proposal.url}}'
  consumes:
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/portfolio/v1
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_password
    resources:
    - name: drift-analysis
      path: /portfolios/{{portfolio_id}}/drift?threshold={{threshold}}
      inputParameters:
      - name: portfolio_id
        in: path
      - name: threshold
        in: query
      operations:
      - name: get-drift-analysis
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → portfolio-rebalance-notification-pipeline.yml

Verifies backups at Fidelity.

naftiko: '0.5'
info:
  label: Backup Verification Pipeline
  description: Verifies backups at Fidelity.
  tags:
  - database
  - backup
  - operations
capability:
  exposes:
  - type: mcp
    namespace: backup-verify
    port: 8080
    tools:
    - name: verify-backups
      description: Verify backups at Fidelity.
      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.fidelity.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://fidelity.com.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → backup-verification-pipeline.yml

Reallocates costs at Fidelity.

naftiko: '0.5'
info:
  label: Cost Reallocation Pipeline
  description: Reallocates costs at Fidelity.
  tags:
  - finance
  - cost-allocation
  - oracle
capability:
  exposes:
  - type: mcp
    namespace: cost-realloc
    port: 8080
    tools:
    - name: reallocate
      description: Reallocate costs at Fidelity.
      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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: realloc
      path: /compute
      operations:
      - name: realloc
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cost-reallocation-pipeline.yml

Assembles a client meeting brief by pulling account data from Salesforce, portfolio performance from FactSet, recent interactions from Gong, and compiles the document in SharePoint.

naftiko: '0.5'
info:
  label: Client Meeting Prep Assembler
  description: Assembles a client meeting brief by pulling account data from Salesforce, portfolio performance from FactSet, recent interactions from Gong, and compiles the document in SharePoint.
  tags:
  - wealth-management
  - client-services
  - salesforce
  - factset
  - gong
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: meeting-prep
    port: 8080
    tools:
    - name: prepare-client-brief
      description: Compile a comprehensive client meeting brief from CRM, portfolio, and interaction data.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      - name: advisor_email
        in: body
        type: string
        description: Advisor email for document access.
      steps:
      - name: get-account-data
        type: call
        call: salesforce.get-account-detail
        with:
          account_id: '{{account_id}}'
      - name: get-performance
        type: call
        call: factset.get-portfolio-performance
        with:
          portfolio_id: '{{get-account-data.portfolio_id}}'
      - name: get-interactions
        type: call
        call: gong.get-recent-calls
        with:
          account_name: '{{get-account-data.Name}}'
      - name: save-brief
        type: call
        call: sharepoint.upload-file
        with:
          site_id: advisor-workspace
          file_path: MeetingBriefs/{{get-account-data.Name}}/brief_{{get-account-data.next_meeting_date}}.docx
          content: '{"account": "{{get-account-data}}", "performance": "{{get-performance}}", "interactions": "{{get-interactions}}"}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.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-detail
        method: GET
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/portfolio/v1
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_password
    resources:
    - name: performance
      path: /portfolios/{{portfolio_id}}/performance
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-portfolio-performance
        method: GET
  - type: http
    namespace: gong
    baseUri: https://api.gong.io/v2
    authentication:
      type: bearer
      token: $secrets.gong_token
    resources:
    - name: calls
      path: /calls?filter.accountName={{account_name}}&filter.fromDateTime=-30d
      inputParameters:
      - name: account_name
        in: query
      operations:
      - name: get-recent-calls
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → client-meeting-prep-assembler.yml

Pulls AWS cost data via CloudWatch, Azure spend from Azure Synapse Analytics, combines in Snowflake, and generates a Tableau dashboard refresh for FinOps review.

naftiko: '0.5'
info:
  label: Infrastructure Cost Optimization Report
  description: Pulls AWS cost data via CloudWatch, Azure spend from Azure Synapse Analytics, combines in Snowflake, and generates a Tableau dashboard refresh for FinOps review.
  tags:
  - finops
  - infrastructure
  - cloudwatch
  - azure-synapse-analytics
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: finops-reporting
    port: 8080
    tools:
    - name: generate-cost-report
      description: Aggregate multi-cloud cost data and refresh the FinOps dashboard.
      inputParameters:
      - name: month
        in: body
        type: string
        description: Reporting month in YYYY-MM format.
      steps:
      - name: get-aws-costs
        type: call
        call: cloudwatch.get-metric-data
        with:
          namespace: AWS/Billing
          metric: EstimatedCharges
          period: '{{month}}'
      - name: get-azure-costs
        type: call
        call: synapse.execute-query
        with:
          query: SELECT service_name, SUM(cost) as total_cost FROM azure_billing WHERE billing_month = '{{month}}' GROUP BY service_name
      - name: load-combined
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL merge_cloud_costs('{{month}}', '{{get-aws-costs.datapoints}}', '{{get-azure-costs.results}}')
      - name: refresh-tableau
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: cloud-cost-analysis
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      key: $secrets.aws_access_key
    resources:
    - name: metric-data
      path: /
      operations:
      - name: get-metric-data
        method: POST
  - type: http
    namespace: synapse
    baseUri: https://fidelity-synapse.sql.azuresynapse.net
    authentication:
      type: bearer
      token: $secrets.synapse_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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.fidelity.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-extract
        method: POST
Open in Framework → View in Fleet → infrastructure-cost-optimization-report.yml

Runs end-of-day reconciliation by comparing positions in SimCorp Dimension with custodian records in Snowflake, generating break reports in SharePoint, creating Jira tickets for unresolved breaks, and sending a summary to operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: End-of-Day Reconciliation Orchestrator
  description: Runs end-of-day reconciliation by comparing positions in SimCorp Dimension with custodian records in Snowflake, generating break reports in SharePoint, creating Jira tickets for unresolved breaks, and sending a summary to operations via Microsoft Teams.
  tags:
  - operations
  - reconciliation
  - simcorp-dimension
  - snowflake
  - sharepoint
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: eod-recon
    port: 8080
    tools:
    - name: run-eod-reconciliation
      description: Execute end-of-day position reconciliation with break reporting and escalation.
      inputParameters:
      - name: business_date
        in: body
        type: string
        description: Business date in YYYY-MM-DD format.
      - name: ops_channel
        in: body
        type: string
        description: Microsoft Teams operations channel ID.
      steps:
      - name: get-internal-positions
        type: call
        call: simcorp.get-eod-positions
        with:
          date: '{{business_date}}'
      - name: run-recon-query
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL run_eod_position_recon('{{business_date}}')
      - name: store-break-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: operations
          file_path: Reconciliation/EOD/{{business_date}}_break_report.json
          content: '{{run-recon-query.break_details}}'
      - name: create-break-tickets
        type: call
        call: jira.create-issue
        with:
          project: OPSRECON
          summary: 'EOD Position Breaks: {{business_date}} - {{run-recon-query.break_count}} items'
          description: 'Break report: {{store-break-report.url}}. Total breaks: {{run-recon-query.break_count}}. Net break value: ${{run-recon-query.net_break_value}}'
          issue_type: Task
          priority: High
      - name: notify-ops-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: '{{ops_channel}}'
          text: 'EOD Recon Complete ({{business_date}}): {{run-recon-query.matched_count}} matched, {{run-recon-query.break_count}} breaks. Report: {{store-break-report.url}}. Jira: {{create-break-tickets.key}}'
  consumes:
  - type: http
    namespace: simcorp
    baseUri: https://simcorp.fidelity.com/api/v2
    authentication:
      type: bearer
      token: $secrets.simcorp_token
    resources:
    - name: positions
      path: /positions/eod?date={{date}}
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-eod-positions
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: jira
    baseUri: https://fidelity.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → end-of-day-reconciliation-orchestrator.yml

When a new hire completes onboarding in Workday, creates their 401k enrollment record in Salesforce, sends plan documents via Microsoft Outlook, and tracks enrollment status in ServiceNow.

naftiko: '0.5'
info:
  label: 401k Plan Enrollment Workflow
  description: When a new hire completes onboarding in Workday, creates their 401k enrollment record in Salesforce, sends plan documents via Microsoft Outlook, and tracks enrollment status in ServiceNow.
  tags:
  - retirement
  - onboarding
  - workday
  - salesforce
  - microsoft-outlook
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: retirement-enrollment
    port: 8080
    tools:
    - name: enroll-401k
      description: Orchestrate 401k enrollment for a new hire across HR, CRM, email, and tracking systems.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID.
      - name: contribution_pct
        in: body
        type: number
        description: Default contribution percentage.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: create-enrollment
        type: call
        call: salesforce.create-enrollment
        with:
          employee_name: '{{get-employee.full_name}}'
          employee_email: '{{get-employee.work_email}}'
          contribution_pct: '{{contribution_pct}}'
          plan_type: 401k
      - name: send-documents
        type: call
        call: outlook.send-email
        with:
          to: '{{get-employee.work_email}}'
          subject: Your Fidelity 401(k) Enrollment Confirmation
          body: 'Welcome {{get-employee.first_name}}, your 401(k) enrollment is confirmed at {{contribution_pct}}% contribution. Enrollment ID: {{create-enrollment.enrollment_id}}. Review your plan details at NetBenefits.'
      - name: create-tracking-ticket
        type: call
        call: servicenow.create-record
        with:
          table: u_retirement_enrollment
          short_description: '401k enrollment: {{get-employee.full_name}}'
          enrollment_id: '{{create-enrollment.enrollment_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/fidelity
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: enrollments
      path: /sobjects/Enrollment__c
      operations:
      - name: create-enrollment
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tables
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → 401k-plan-enrollment-workflow.yml

Invalidates Redis cache keys for trading reference data, then reloads fresh data from Snowflake to ensure downstream trading systems have current reference data.

naftiko: '0.5'
info:
  label: Redis Cache Invalidation and Reload
  description: Invalidates Redis cache keys for trading reference data, then reloads fresh data from Snowflake to ensure downstream trading systems have current reference data.
  tags:
  - operations
  - caching
  - redis
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: cache-mgmt
    port: 8080
    tools:
    - name: invalidate-and-reload-cache
      description: Delete cache keys from Redis and reload fresh reference data from Snowflake.
      inputParameters:
      - name: key_pattern
        in: body
        type: string
        description: Redis key pattern to invalidate (e.g., refdata:equity:*).
      - name: data_source_table
        in: body
        type: string
        description: Snowflake table to reload from.
      steps:
      - name: invalidate-keys
        type: call
        call: redis.delete-keys
        with:
          pattern: '{{key_pattern}}'
      - name: reload-data
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL reload_cache_data('{{data_source_table}}', '{{key_pattern}}')
  consumes:
  - type: http
    namespace: redis
    baseUri: https://redis.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.redis_token
    resources:
    - name: keys
      path: /keys/delete
      operations:
      - name: delete-keys
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → redis-cache-invalidation-and-reload.yml

Publishes a trade event message to an Apache Kafka topic for downstream consumers such as risk engines and settlement systems.

naftiko: '0.5'
info:
  label: Apache Kafka Trade Event Publisher
  description: Publishes a trade event message to an Apache Kafka topic for downstream consumers such as risk engines and settlement systems.
  tags:
  - trading
  - messaging
  - apache-kafka
capability:
  exposes:
  - type: mcp
    namespace: trade-events
    port: 8080
    tools:
    - name: publish-trade-event
      description: Publish a trade execution event to a Kafka topic.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Kafka topic name.
      - name: trade_id
        in: body
        type: string
        description: Unique trade identifier.
      - name: payload
        in: body
        type: string
        description: JSON trade event payload.
      call: kafka.publish-event
      with:
        topic: '{{topic}}'
        key: '{{trade_id}}'
        value: '{{payload}}'
  consumes:
  - type: http
    namespace: kafka
    baseUri: https://kafka-rest.fidelity.com/v3
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: records
      path: /clusters/fidelity-prod/topics/{{topic}}/records
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-event
        method: POST
Open in Framework → View in Fleet → apache-kafka-trade-event-publisher.yml

Retrieves sprint progress at Fidelity.

naftiko: '0.5'
info:
  label: Jira Sprint Progress Lookup
  description: Retrieves sprint progress at Fidelity.
  tags:
  - project-management
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: jira-sprint
    port: 8080
    tools:
    - name: get-sprint
      description: Look up sprint at Fidelity.
      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://fidelity.com.atlassian.net/rest/agile/1.0
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: sprints
      path: /board/1/sprint
      operations:
      - name: get-sprints
        method: GET
Open in Framework → View in Fleet → jira-sprint-progress-lookup.yml

Pulls end-of-day pricing from Bloomberg Enterprise Data, validates against FactSet, loads into Snowflake, and publishes a completion event to Apache Kafka for downstream consumers.

naftiko: '0.5'
info:
  label: Market Data Ingestion Pipeline
  description: Pulls end-of-day pricing from Bloomberg Enterprise Data, validates against FactSet, loads into Snowflake, and publishes a completion event to Apache Kafka for downstream consumers.
  tags:
  - market-data
  - data-engineering
  - bloomberg-enterprise-data
  - factset
  - snowflake
  - apache-kafka
capability:
  exposes:
  - type: mcp
    namespace: market-data-pipeline
    port: 8080
    tools:
    - name: run-eod-pricing-load
      description: Execute the end-of-day market data ingestion pipeline across Bloomberg, FactSet, Snowflake, and Kafka.
      inputParameters:
      - name: pricing_date
        in: body
        type: string
        description: Pricing date in YYYY-MM-DD format.
      - name: asset_class
        in: body
        type: string
        description: Asset class (equity, fixed_income, derivatives).
      steps:
      - name: fetch-bloomberg-prices
        type: call
        call: bloomberg.get-eod-prices
        with:
          date: '{{pricing_date}}'
          asset_class: '{{asset_class}}'
      - name: fetch-factset-prices
        type: call
        call: factset.get-eod-prices
        with:
          date: '{{pricing_date}}'
          asset_class: '{{asset_class}}'
      - name: load-validated-prices
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL load_validated_eod_prices('{{pricing_date}}', '{{asset_class}}', '{{fetch-bloomberg-prices.output_path}}', '{{fetch-factset-prices.output_path}}')
      - name: publish-completion
        type: call
        call: kafka.publish-event
        with:
          topic: market-data-events
          key: eod-pricing-{{pricing_date}}
          value: '{"status": "complete", "date": "{{pricing_date}}", "asset_class": "{{asset_class}}", "record_count": "{{load-validated-prices.rows_loaded}}"}'
  consumes:
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: eod-prices
      path: /pricing/eod
      operations:
      - name: get-eod-prices
        method: POST
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/content/v1
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_password
    resources:
    - name: prices
      path: /prices/eod
      operations:
      - name: get-eod-prices
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: kafka
    baseUri: https://kafka-rest.fidelity.com/v3
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: records
      path: /clusters/fidelity-prod/topics/{{topic}}/records
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-event
        method: POST
Open in Framework → View in Fleet → market-data-ingestion-pipeline.yml

Archives a compliance document to Amazon S3 with appropriate retention tagging and encryption.

naftiko: '0.5'
info:
  label: AWS S3 Document Archive
  description: Archives a compliance document to Amazon S3 with appropriate retention tagging and encryption.
  tags:
  - compliance
  - storage
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: document-archive
    port: 8080
    tools:
    - name: archive-document
      description: Upload a document to S3 with compliance retention tags.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: S3 bucket name.
      - name: key
        in: body
        type: string
        description: S3 object key path.
      - name: retention_years
        in: body
        type: integer
        description: Retention period in years.
      call: s3.put-object
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
        retention_years: '{{retention_years}}'
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      key: $secrets.aws_access_key
    resources:
    - name: objects
      path: /{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
Open in Framework → View in Fleet → aws-s3-document-archive.yml

Routes a multi-asset trade order by checking Bloomberg AIM for best execution venue, submitting to Tradeweb for fixed income or Bloomberg AIM for equity, logging in Snowflake, and notifying the trader via Microsoft Teams.

naftiko: '0.5'
info:
  label: Multi-Asset Order Routing Pipeline
  description: Routes a multi-asset trade order by checking Bloomberg AIM for best execution venue, submitting to Tradeweb for fixed income or Bloomberg AIM for equity, logging in Snowflake, and notifying the trader via Microsoft Teams.
  tags:
  - trading
  - order-management
  - bloomberg-aim
  - tradeweb
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: order-routing
    port: 8080
    tools:
    - name: route-multi-asset-order
      description: Route a trade order to the appropriate execution venue based on asset class.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Internal order identifier.
      - name: asset_class
        in: body
        type: string
        description: Asset class (equity, fixed_income).
      - name: ticker
        in: body
        type: string
        description: Security identifier.
      - name: side
        in: body
        type: string
        description: BUY or SELL.
      - name: quantity
        in: body
        type: integer
        description: Order quantity.
      - name: trader_email
        in: body
        type: string
        description: Trader email for notification.
      steps:
      - name: get-venue
        type: call
        call: aim.get-best-venue
        with:
          ticker: '{{ticker}}'
          asset_class: '{{asset_class}}'
      - name: submit-order
        type: call
        call: aim.submit-order
        with:
          order_id: '{{order_id}}'
          venue: '{{get-venue.recommended_venue}}'
          ticker: '{{ticker}}'
          side: '{{side}}'
          quantity: '{{quantity}}'
      - name: log-execution
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO order_routing_log (order_id, asset_class, venue, ticker, side, quantity, status) VALUES ('{{order_id}}', '{{asset_class}}', '{{get-venue.recommended_venue}}', '{{ticker}}', '{{side}}', {{quantity}}, '{{submit-order.status}}')
      - name: notify-trader
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{trader_email}}'
          text: 'Order {{order_id}} routed to {{get-venue.recommended_venue}}: {{side}} {{quantity}} {{ticker}}. Status: {{submit-order.status}}. Fill price: {{submit-order.fill_price}}'
  consumes:
  - type: http
    namespace: aim
    baseUri: https://aim.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: venues
      path: /venues/best?ticker={{ticker}}&asset_class={{asset_class}}
      inputParameters:
      - name: ticker
        in: query
      - name: asset_class
        in: query
      operations:
      - name: get-best-venue
        method: GET
    - name: orders
      path: /orders
      operations:
      - name: submit-order
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → multi-asset-order-routing-pipeline.yml

Triggers an Azure Data Factory pipeline for ETL processing of financial data and sends a Microsoft Teams notification with the run status to the data engineering team.

naftiko: '0.5'
info:
  label: Azure Data Factory ETL with Notification
  description: Triggers an Azure Data Factory pipeline for ETL processing of financial data and sends a Microsoft Teams notification with the run status to the data engineering team.
  tags:
  - data-engineering
  - azure-data-factory
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: etl-pipelines
    port: 8080
    tools:
    - name: trigger-adf-pipeline-with-notify
      description: Trigger an ADF pipeline and notify the team via Microsoft Teams.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: ADF pipeline name.
      - name: parameters
        in: body
        type: string
        description: JSON string of pipeline parameters.
      - name: notify_email
        in: body
        type: string
        description: Team member email for notification.
      steps:
      - name: trigger-pipeline
        type: call
        call: adf.create-pipeline-run
        with:
          pipeline_name: '{{pipeline_name}}'
          parameters: '{{parameters}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{notify_email}}'
          text: 'ADF pipeline {{pipeline_name}} triggered. Run ID: {{trigger-pipeline.run_id}}. Status: {{trigger-pipeline.status}}'
  consumes:
  - type: http
    namespace: adf
    baseUri: https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/fidelity-data-rg/providers/Microsoft.DataFactory/factories/fidelity-adf
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: pipelines
      path: /pipelines/{{pipeline_name}}/createRun?api-version=2018-06-01
      inputParameters:
      - name: pipeline_name
        in: path
      operations:
      - name: create-pipeline-run
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → azure-data-factory-etl-with-notification.yml

Escalates IT incidents at Fidelity via ServiceNow, PagerDuty, and Slack.

naftiko: '0.5'
info:
  label: IT Incident Escalation Pipeline
  description: Escalates IT incidents at Fidelity 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 Fidelity.
      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://fidelity.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident/{{incident_id}}
      inputParameters:
      - name: incident_id
        in: path
      operations:
      - name: get-incident
        method: GET
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: channels
      path: /conversations.create
      operations:
      - name: create-channel
        method: POST
Open in Framework → View in Fleet → it-incident-escalation-pipeline.yml

Checks Vault secret at Fidelity.

naftiko: '0.5'
info:
  label: Vault Secret Metadata
  description: Checks Vault secret at Fidelity.
  tags:
  - security
  - vault
  - secrets-management
capability:
  exposes:
  - type: mcp
    namespace: vault
    port: 8080
    tools:
    - name: check-secret
      description: Check secret at Fidelity.
      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.fidelity.com/v1
    authentication:
      type: bearer
      token: $secrets.vault_token
    resources:
    - name: secrets
      path: /secret/metadata/{{path}}
      inputParameters:
      - name: path
        in: path
      operations:
      - name: get-metadata
        method: GET
Open in Framework → View in Fleet → vault-secret-metadata.yml

Generates compliance reports at Fidelity from Snowflake, Power BI, and email.

naftiko: '0.5'
info:
  label: Quarterly Compliance Report Pipeline
  description: Generates compliance reports at Fidelity 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 Fidelity.
      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://fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → quarterly-compliance-report-pipeline.yml

Tests disaster recovery at Fidelity via failover, health checks, and reporting.

naftiko: '0.5'
info:
  label: DR Test Pipeline
  description: Tests disaster recovery at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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://fidelity.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → dr-test-pipeline.yml

When a new lead is created in HubSpot, enriches with ZoomInfo firmographic data, scores the lead in Snowflake, and creates a Salesforce opportunity if qualified.

naftiko: '0.5'
info:
  label: HubSpot Lead Qualification Pipeline
  description: When a new lead is created in HubSpot, enriches with ZoomInfo firmographic data, scores the lead in Snowflake, and creates a Salesforce opportunity if qualified.
  tags:
  - sales
  - marketing
  - hubspot
  - zoominfo
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: lead-qualification
    port: 8080
    tools:
    - name: qualify-lead
      description: Enrich, score, and qualify a new lead from HubSpot to Salesforce.
      inputParameters:
      - name: hubspot_contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-lead
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{hubspot_contact_id}}'
      - name: enrich-firmographics
        type: call
        call: zoominfo.get-company
        with:
          company_name: '{{get-lead.company}}'
      - name: score-lead
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT score_institutional_lead('{{get-lead.company}}', '{{enrich-firmographics.revenue}}', '{{enrich-firmographics.employee_count}}', '{{enrich-firmographics.industry}}') as lead_score
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          name: '{{get-lead.company}} - Institutional Services'
          contact_email: '{{get-lead.email}}'
          lead_score: '{{score-lead.lead_score}}'
          company_revenue: '{{enrich-firmographics.revenue}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /company
      operations:
      - name: get-company
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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://fidelity.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
Open in Framework → View in Fleet → hubspot-lead-qualification-pipeline.yml

Searches Splunk at Fidelity.

naftiko: '0.5'
info:
  label: Splunk Log Search
  description: Searches Splunk at Fidelity.
  tags:
  - security
  - splunk
  - logging
capability:
  exposes:
  - type: mcp
    namespace: splunk-search
    port: 8080
    tools:
    - name: search-logs
      description: Search logs at Fidelity.
      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.fidelity.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-log-search.yml

Processes a retirement account distribution by validating eligibility in Salesforce, calculating tax withholding in Snowflake, creating the distribution record, and sending confirmation via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Retirement Account Distribution Processor
  description: Processes a retirement account distribution by validating eligibility in Salesforce, calculating tax withholding in Snowflake, creating the distribution record, and sending confirmation via Microsoft Outlook.
  tags:
  - retirement
  - compliance
  - salesforce
  - snowflake
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: retirement-ops
    port: 8080
    tools:
    - name: process-distribution
      description: Process a retirement account distribution with eligibility validation, tax calculation, and email confirmation.
      inputParameters:
      - name: account_number
        in: body
        type: string
        description: Retirement account number.
      - name: distribution_amount
        in: body
        type: number
        description: Requested distribution amount in USD.
      - name: distribution_type
        in: body
        type: string
        description: Type of distribution (normal, hardship, rmd).
      steps:
      - name: validate-account
        type: call
        call: salesforce.get-retirement-account
        with:
          account_number: '{{account_number}}'
      - name: calculate-withholding
        type: call
        call: snowflake.run-tax-calc
        with:
          statement: SELECT calculate_withholding('{{account_number}}', {{distribution_amount}}, '{{distribution_type}}', '{{validate-account.state_of_residence}}') as withholding
      - name: create-distribution
        type: call
        call: salesforce.create-distribution
        with:
          account_id: '{{validate-account.Id}}'
          amount: '{{distribution_amount}}'
          withholding: '{{calculate-withholding.withholding}}'
          type: '{{distribution_type}}'
      - name: send-confirmation
        type: call
        call: outlook.send-email
        with:
          to: '{{validate-account.owner_email}}'
          subject: Distribution Confirmation - Account {{account_number}}
          body: 'Your {{distribution_type}} distribution of ${{distribution_amount}} has been processed. Federal withholding: ${{calculate-withholding.withholding}}. Confirmation: {{create-distribution.confirmation_number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: retirement-accounts
      path: /query/?q=SELECT+Id,Name,OwnerId,State__c+FROM+Retirement_Account__c+WHERE+AccountNumber__c='{{account_number}}'
      inputParameters:
      - name: account_number
        in: query
      operations:
      - name: get-retirement-account
        method: GET
    - name: distributions
      path: /sobjects/Distribution__c
      operations:
      - name: create-distribution
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-tax-calc
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → retirement-account-distribution-processor.yml

Searches Splunk for compliance-related log events within a time window, then archives the results to Amazon S3 for long-term regulatory retention.

naftiko: '0.5'
info:
  label: Splunk Compliance Log Search and Archive
  description: Searches Splunk for compliance-related log events within a time window, then archives the results to Amazon S3 for long-term regulatory retention.
  tags:
  - compliance
  - security
  - splunk
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: compliance-search
    port: 8080
    tools:
    - name: search-and-archive-compliance-logs
      description: Search Splunk for compliance log events and archive results to S3.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Splunk search query string.
      - name: earliest_time
        in: body
        type: string
        description: Earliest time for search (e.g., -24h).
      - name: archive_bucket
        in: body
        type: string
        description: S3 bucket for archiving results.
      steps:
      - name: run-search
        type: call
        call: splunk.create-search
        with:
          search: '{{search_query}}'
          earliest_time: '{{earliest_time}}'
      - name: archive-results
        type: call
        call: s3.put-object
        with:
          bucket: '{{archive_bucket}}'
          key: compliance-logs/{{run-search.sid}}/results.json
          content: '{{run-search.results}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.fidelity.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search-jobs
      path: /search/jobs
      operations:
      - name: create-search
        method: POST
  - type: http
    namespace: s3
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      key: $secrets.aws_access_key
    resources:
    - name: objects
      path: /{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
Open in Framework → View in Fleet → splunk-compliance-log-search-and-archive.yml

Checks Grafana dashboard at Fidelity.

naftiko: '0.5'
info:
  label: Grafana Dashboard Status
  description: Checks Grafana dashboard at Fidelity.
  tags:
  - monitoring
  - grafana
  - dashboards
capability:
  exposes:
  - type: mcp
    namespace: grafana
    port: 8080
    tools:
    - name: check-dash
      description: Check dashboard at Fidelity.
      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.fidelity.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: dashboards
      path: /dashboards/uid/{{uid}}
      inputParameters:
      - name: uid
        in: path
      operations:
      - name: get-dash
        method: GET
Open in Framework → View in Fleet → grafana-dashboard-status.yml

Queries Salesforce for wealth management opportunity pipeline data, transforms in Snowflake, and refreshes the Tableau sales dashboard.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Pipeline Report
  description: Queries Salesforce for wealth management opportunity pipeline data, transforms in Snowflake, and refreshes the Tableau sales dashboard.
  tags:
  - sales
  - reporting
  - salesforce
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: sales-pipeline
    port: 8080
    tools:
    - name: refresh-pipeline-report
      description: Extract opportunity data from Salesforce, load to Snowflake, and refresh the Tableau dashboard.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter (e.g., FY2026-Q1).
      steps:
      - name: extract-opportunities
        type: call
        call: salesforce.query-opportunities
        with:
          fiscal_quarter: '{{fiscal_quarter}}'
      - name: load-data
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL load_opportunity_pipeline('{{fiscal_quarter}}', '{{extract-opportunities.records}}')
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: wealth-pipeline-ds
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query/?q=SELECT+Id,Name,Amount,StageName,CloseDate,OwnerId+FROM+Opportunity+WHERE+FiscalQuarter='{{fiscal_quarter}}'
      inputParameters:
      - name: fiscal_quarter
        in: query
      operations:
      - name: query-opportunities
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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.fidelity.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-extract
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-pipeline-report.yml

Calculates final NAV in SimCorp Dimension, validates against Bloomberg pricing, publishes to Snowflake for distribution, and sends confirmation to fund operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Mutual Fund NAV Publication
  description: Calculates final NAV in SimCorp Dimension, validates against Bloomberg pricing, publishes to Snowflake for distribution, and sends confirmation to fund operations via Microsoft Teams.
  tags:
  - fund-accounting
  - operations
  - simcorp-dimension
  - bloomberg-enterprise-data
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nav-publication
    port: 8080
    tools:
    - name: publish-fund-nav
      description: Calculate, validate, and publish mutual fund NAV with operations notification.
      inputParameters:
      - name: fund_code
        in: body
        type: string
        description: Fund identifier.
      - name: valuation_date
        in: body
        type: string
        description: Valuation date in YYYY-MM-DD format.
      - name: ops_email
        in: body
        type: string
        description: Fund operations team email.
      steps:
      - name: calculate-nav
        type: call
        call: simcorp.calculate-nav
        with:
          fund_code: '{{fund_code}}'
          date: '{{valuation_date}}'
      - name: validate-prices
        type: call
        call: bloomberg.validate-fund-prices
        with:
          fund_code: '{{fund_code}}'
          expected_nav: '{{calculate-nav.nav_per_share}}'
      - name: publish-nav
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO fund_nav (fund_code, valuation_date, nav_per_share, shares_outstanding, total_net_assets) VALUES ('{{fund_code}}', '{{valuation_date}}', {{calculate-nav.nav_per_share}}, {{calculate-nav.shares_outstanding}}, {{calculate-nav.total_net_assets}})
      - name: confirm-ops
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{ops_email}}'
          text: 'NAV published for {{fund_code}} as of {{valuation_date}}: ${{calculate-nav.nav_per_share}}/share. Validation status: {{validate-prices.status}}. TNA: ${{calculate-nav.total_net_assets}}'
  consumes:
  - type: http
    namespace: simcorp
    baseUri: https://simcorp.fidelity.com/api/v2
    authentication:
      type: bearer
      token: $secrets.simcorp_token
    resources:
    - name: nav-calculation
      path: /funds/{{fund_code}}/nav/calculate?date={{date}}
      inputParameters:
      - name: fund_code
        in: path
      - name: date
        in: query
      operations:
      - name: calculate-nav
        method: POST
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: fund-validation
      path: /pricing/validate
      operations:
      - name: validate-fund-prices
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → mutual-fund-nav-publication.yml

Generates monthly security reports at Fidelity from Splunk and Qualys.

naftiko: '0.5'
info:
  label: Monthly Security Report Pipeline
  description: Generates monthly security reports at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → monthly-security-report-pipeline.yml

Retrieves Teams activity at Fidelity.

naftiko: '0.5'
info:
  label: Teams Channel Activity
  description: Retrieves Teams activity at Fidelity.
  tags:
  - communications
  - microsoft-teams
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: teams-activity
    port: 8080
    tools:
    - name: get-activity
      description: Check Teams activity at Fidelity.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: Team ID.
      - name: channel_id
        in: body
        type: string
        description: Channel ID.
      call: teams.get-messages
      with:
        team_id: '{{team_id}}'
        channel_id: '{{channel_id}}'
      outputParameters:
      - name: count
        type: number
        mapping: $.value.length
  consumes:
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: get-messages
        method: GET
Open in Framework → View in Fleet → teams-channel-activity.yml

Queries FactSet for current holdings of a portfolio, returning security identifiers, weights, and market values.

naftiko: '0.5'
info:
  label: FactSet Holdings Snapshot
  description: Queries FactSet for current holdings of a portfolio, returning security identifiers, weights, and market values.
  tags:
  - portfolio-management
  - analytics
  - factset
capability:
  exposes:
  - type: mcp
    namespace: portfolio-analytics
    port: 8080
    tools:
    - name: get-portfolio-holdings
      description: Retrieve current holdings for a portfolio from FactSet by portfolio ID.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The FactSet portfolio identifier.
      call: factset.get-holdings
      with:
        portfolio_id: '{{portfolio_id}}'
  consumes:
  - type: http
    namespace: factset
    baseUri: https://api.factset.com/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
Open in Framework → View in Fleet → factset-holdings-snapshot.yml

When a compliance training deadline approaches, queries Pluralsight for completion status, updates Workday learning records, and sends reminder emails via Microsoft Outlook to incomplete employees.

naftiko: '0.5'
info:
  label: Compliance Training Enrollment Tracker
  description: When a compliance training deadline approaches, queries Pluralsight for completion status, updates Workday learning records, and sends reminder emails via Microsoft Outlook to incomplete employees.
  tags:
  - compliance
  - training
  - pluralsight
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: track-compliance-training
      description: Track compliance training completion across learning platform and HR system with email reminders.
      inputParameters:
      - name: course_id
        in: body
        type: string
        description: Pluralsight course ID.
      - name: deadline
        in: body
        type: string
        description: Training deadline in YYYY-MM-DD format.
      - name: department
        in: body
        type: string
        description: Department to check.
      steps:
      - name: get-completions
        type: call
        call: pluralsight.get-course-completions
        with:
          course_id: '{{course_id}}'
      - name: get-department-staff
        type: call
        call: workday.get-department-workers
        with:
          department: '{{department}}'
      - name: update-records
        type: call
        call: workday.update-learning-records
        with:
          completions: '{{get-completions.users}}'
          course_id: '{{course_id}}'
      - name: send-reminders
        type: call
        call: outlook.send-email
        with:
          to: '{{get-department-staff.incomplete_emails}}'
          subject: Compliance Training Reminder - Due {{deadline}}
          body: You have not yet completed the required compliance training. Please complete the course by {{deadline}} to remain in compliance. Access the course at Pluralsight.
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: courses
      path: /courses/{{course_id}}/completions
      inputParameters:
      - name: course_id
        in: path
      operations:
      - name: get-course-completions
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/fidelity
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: departments
      path: /workers?department={{department}}
      inputParameters:
      - name: department
        in: query
      operations:
      - name: get-department-workers
        method: GET
    - name: learning
      path: /learning/records
      operations:
      - name: update-learning-records
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → compliance-training-enrollment-tracker.yml

Manages API deprecation at Fidelity via consumer identification, notices, and tracking.

naftiko: '0.5'
info:
  label: API Deprecation Pipeline
  description: Manages API deprecation at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.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://fidelity.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → api-deprecation-pipeline.yml

Submits a trade order via Bloomberg AIM, runs a pre-trade compliance check against internal rules in Snowflake, and logs the result in ServiceNow for audit.

naftiko: '0.5'
info:
  label: Trade Execution and Compliance Check
  description: Submits a trade order via Bloomberg AIM, runs a pre-trade compliance check against internal rules in Snowflake, and logs the result in ServiceNow for audit.
  tags:
  - trading
  - compliance
  - bloomberg-aim
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: trade-compliance
    port: 8080
    tools:
    - name: execute-compliant-trade
      description: Submit a trade through Bloomberg AIM with pre-trade compliance validation and audit logging.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: 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_id
        in: body
        type: string
        description: Trader employee ID.
      steps:
      - name: compliance-check
        type: call
        call: snowflake.run-compliance-query
        with:
          statement: SELECT check_trade_limits('{{portfolio_id}}', '{{ticker}}', '{{side}}', {{quantity}}) as compliant
      - name: submit-order
        type: call
        call: aim.create-order
        with:
          portfolio: '{{portfolio_id}}'
          security: '{{ticker}}'
          side: '{{side}}'
          quantity: '{{quantity}}'
      - name: log-audit
        type: call
        call: servicenow.create-record
        with:
          table: u_trade_audit
          short_description: Trade {{side}} {{quantity}} {{ticker}} for portfolio {{portfolio_id}}
          trader: '{{trader_id}}'
          compliance_result: '{{compliance-check.compliant}}'
          order_id: '{{submit-order.order_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-compliance-query
        method: POST
  - type: http
    namespace: 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: servicenow
    baseUri: https://fidelity.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tables
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → trade-execution-and-compliance-check.yml

Checks build at Fidelity.

naftiko: '0.5'
info:
  label: Azure DevOps Build Check
  description: Checks build at Fidelity.
  tags:
  - devops
  - azure-devops
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: azdo-build
    port: 8080
    tools:
    - name: check-build
      description: Check build at Fidelity.
      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/fidelity.com
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds/{{build_id}}
      inputParameters:
      - name: project
        in: path
      - name: build_id
        in: path
      operations:
      - name: get-build
        method: GET
Open in Framework → View in Fleet → azure-devops-build-check.yml

Fetches approved sales content from Seismic for a given product category, personalizes the delivery via Salesforce contact data, and sends via Microsoft Outlook to the prospect.

naftiko: '0.5'
info:
  label: Seismic Sales Content Delivery
  description: Fetches approved sales content from Seismic for a given product category, personalizes the delivery via Salesforce contact data, and sends via Microsoft Outlook to the prospect.
  tags:
  - sales
  - marketing
  - seismic
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: sales-content
    port: 8080
    tools:
    - name: deliver-sales-content
      description: Find and deliver personalized sales content from Seismic to a prospect.
      inputParameters:
      - name: product_category
        in: body
        type: string
        description: Product category (retirement, wealth, brokerage).
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID.
      steps:
      - name: get-content
        type: call
        call: seismic.search-content
        with:
          category: '{{product_category}}'
          status: approved
      - name: get-contact
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: send-content
        type: call
        call: outlook.send-email
        with:
          to: '{{get-contact.Email}}'
          subject: Fidelity {{product_category}} Solutions for {{get-contact.Account.Name}}
          body: 'Dear {{get-contact.FirstName}}, please find our latest {{product_category}} materials: {{get-content.content_link}}'
  consumes:
  - type: http
    namespace: seismic
    baseUri: https://api.seismic.com/v2
    authentication:
      type: bearer
      token: $secrets.seismic_token
    resources:
    - name: content
      path: /content?category={{category}}&status={{status}}
      inputParameters:
      - name: category
        in: query
      - name: status
        in: query
      operations:
      - name: search-content
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://fidelity.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: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → seismic-sales-content-delivery.yml

Fetches application performance metrics from New Relic for a given trading service, returning response time, throughput, and error rate.

naftiko: '0.5'
info:
  label: New Relic APM Performance Report
  description: Fetches application performance metrics from New Relic for a given trading service, returning response time, throughput, and error rate.
  tags:
  - monitoring
  - operations
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: apm-metrics
    port: 8080
    tools:
    - name: get-app-performance
      description: Retrieve New Relic APM metrics for a trading application.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic application ID.
      - name: time_range
        in: body
        type: string
        description: Time range (e.g., last_hour, last_24h).
      call: newrelic.get-app-metrics
      with:
        app_id: '{{app_id}}'
        time_range: '{{time_range}}'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}/metrics/data.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-apm-performance-report.yml

Creates postmortems at Fidelity.

naftiko: '0.5'
info:
  label: Incident Postmortem Pipeline
  description: Creates postmortems at Fidelity.
  tags:
  - incident-management
  - postmortem
  - pagerduty
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: postmortem
    port: 8080
    tools:
    - name: create-postmortem
      description: Create postmortem at Fidelity.
      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://fidelity.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/sre/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → incident-postmortem-pipeline.yml

Offboards employees at Fidelity via Okta, Slack, ServiceNow, and storage.

naftiko: '0.5'
info:
  label: Employee Offboarding Pipeline
  description: Offboards employees at Fidelity 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 Fidelity.
      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://fidelity.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://fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.storage_token
    resources:
    - name: archives
      path: /archive
      operations:
      - name: archive
        method: POST
Open in Framework → View in Fleet → employee-offboarding-pipeline.yml

Pulls model output from Azure Machine Learning, validates against historical data in Snowflake, generates a validation report in SharePoint, and creates a Jira ticket for model governance review.

naftiko: '0.5'
info:
  label: Model Risk Validation Pipeline
  description: Pulls model output from Azure Machine Learning, validates against historical data in Snowflake, generates a validation report in SharePoint, and creates a Jira ticket for model governance review.
  tags:
  - risk-management
  - compliance
  - azure-machine-learning
  - snowflake
  - sharepoint
  - jira
capability:
  exposes:
  - type: mcp
    namespace: model-validation
    port: 8080
    tools:
    - name: validate-risk-model
      description: Run model validation pipeline for risk model governance.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Azure ML model name.
      - name: model_version
        in: body
        type: string
        description: Model version to validate.
      steps:
      - name: get-model-metrics
        type: call
        call: azureml.get-model-metrics
        with:
          model_name: '{{model_name}}'
          version: '{{model_version}}'
      - name: run-backtests
        type: call
        call: snowflake.execute-query
        with:
          statement: CALL run_model_backtest('{{model_name}}', '{{model_version}}', '{{get-model-metrics.training_date}}')
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: model-governance
          file_path: Validations/{{model_name}}/v{{model_version}}_validation.json
          content: '{"model": "{{model_name}}", "version": "{{model_version}}", "metrics": "{{get-model-metrics}}", "backtest": "{{run-backtests}}"}'
      - name: create-review-ticket
        type: call
        call: jira.create-issue
        with:
          project: MRGOV
          summary: 'Model validation: {{model_name}} v{{model_version}}'
          description: 'Model validation complete. Report: {{store-report.url}}. Accuracy: {{get-model-metrics.accuracy}}. Backtest pass rate: {{run-backtests.pass_rate}}%'
          issue_type: Task
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://fidelity-ml.api.azureml.ms/mlflow/v2.0
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: models
      path: /models/{{model_name}}/versions/{{version}}/metrics
      inputParameters:
      - name: model_name
        in: path
      - name: version
        in: path
      operations:
      - name: get-model-metrics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://fidelity.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: jira
    baseUri: https://fidelity.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → model-risk-validation-pipeline.yml

Rotates a secret in HashiCorp Vault and updates the corresponding Azure Key Vault entry, used for credential lifecycle management in trading systems.

naftiko: '0.5'
info:
  label: Vault Secret Rotation
  description: Rotates a secret in HashiCorp Vault and updates the corresponding Azure Key Vault entry, used for credential lifecycle management in trading systems.
  tags:
  - security
  - infrastructure
  - hashicorp-vault
capability:
  exposes:
  - type: mcp
    namespace: secret-mgmt
    port: 8080
    tools:
    - name: rotate-secret
      description: Rotate a secret in HashiCorp Vault and sync to Azure Key Vault.
      inputParameters:
      - name: secret_path
        in: body
        type: string
        description: Vault secret path.
      - name: secret_value
        in: body
        type: string
        description: New secret value.
      steps:
      - name: write-vault
        type: call
        call: vault.write-secret
        with:
          path: '{{secret_path}}'
          value: '{{secret_value}}'
      - name: sync-azure
        type: call
        call: azkv.set-secret
        with:
          secret_name: '{{secret_path}}'
          value: '{{secret_value}}'
  consumes:
  - type: http
    namespace: vault
    baseUri: https://vault.fidelity.com/v1
    authentication:
      type: bearer
      token: $secrets.vault_token
    resources:
    - name: secrets
      path: /secret/data/{{path}}
      inputParameters:
      - name: path
        in: path
      operations:
      - name: write-secret
        method: POST
  - type: http
    namespace: azkv
    baseUri: https://fidelity-kv.vault.azure.net
    authentication:
      type: bearer
      token: $secrets.azure_kv_token
    resources:
    - name: secrets
      path: /secrets/{{secret_name}}?api-version=7.4
      inputParameters:
      - name: secret_name
        in: path
      operations:
      - name: set-secret
        method: PUT
Open in Framework → View in Fleet → vault-secret-rotation.yml

Processes invoices at Fidelity via OCR, SAP matching, approval, and Oracle recording.

naftiko: '0.5'
info:
  label: Vendor Invoice Processing Pipeline
  description: Processes invoices at Fidelity 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 Fidelity.
      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.fidelity.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.fidelity.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.fidelity.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.fidelity.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: create-payment
        method: POST
Open in Framework → View in Fleet → vendor-invoice-processing-pipeline.yml

Launches an access certification in Okta, pulls reviewer assignments from Workday, and tracks completion in ServiceNow.

naftiko: '0.5'
info:
  label: Okta Access Certification Campaign
  description: Launches an access certification in Okta, pulls reviewer assignments from Workday, and tracks completion in ServiceNow.
  tags:
  - identity
  - okta
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: access-certification
    port: 8080
    tools:
    - name: run-certification-campaign
      description: Launch and track an access certification campaign.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Certification campaign name.
      - name: scope
        in: body
        type: string
        description: Application scope for review.
      steps:
      - name: launch-campaign
        type: call
        call: okta-api.create-campaign
        with:
          name: '{{campaign_name}}'
          scope: '{{scope}}'
      - name: get-reviewers
        type: call
        call: workday-api.get-managers
        with:
          scope: '{{scope}}'
      - name: track-progress
        type: call
        call: servicenow-api.create-incident
        with:
          short_description: 'Access cert: {{campaign_name}}'
          description: 'Scope: {{scope}}. Reviewers: {{get-reviewers.count}}. Campaign ID: {{launch-campaign.id}}.'
          category: access_certification
  consumes:
  - 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: campaigns
      path: /iga/campaigns
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: workday-api
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: managers
      path: /goldman-sachs/workers
      operations:
      - name: get-managers
        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
Open in Framework → View in Fleet → okta-access-certification-campaign.yml

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
Open in Framework → View in Fleet → it-incident-p1-response-chain.yml

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

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
Open in Framework → View in Fleet → solarwinds-network-health-to-servicenow.yml

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
Open in Framework → View in Fleet → github-code-security-alert-to-jira-sync.yml

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
Open in Framework → View in Fleet → oracle-cloud-infrastructure-status-check.yml

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
Open in Framework → View in Fleet → confluence-regulatory-policy-search.yml

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
Open in Framework → View in Fleet → servicenow-change-management-for-trading-systems.yml

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

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

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
Open in Framework → View in Fleet → confluence-knowledge-base-update-pipeline.yml

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
Open in Framework → View in Fleet → snowflake-etl-failure-recovery-pipeline.yml

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
Open in Framework → View in Fleet → zoominfo-company-enrichment-lookup.yml

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
Open in Framework → View in Fleet → amazon-s3-bucket-object-lookup.yml

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

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
Open in Framework → View in Fleet → snowflake-financial-data-quality-check.yml

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
Open in Framework → View in Fleet → datadog-cloud-cost-anomaly-response.yml

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

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
Open in Framework → View in Fleet → sap-ariba-supplier-onboarding.yml

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
Open in Framework → View in Fleet → infrastructure-cost-optimization-pipeline.yml

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
Open in Framework → View in Fleet → sap-ariba-contract-renewal-pipeline.yml

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
Open in Framework → View in Fleet → cloudwatch-metric-alarm-check.yml

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
Open in Framework → View in Fleet → snowflake-data-sharing-setup-pipeline.yml

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

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
Open in Framework → View in Fleet → azure-functions-health-check-pipeline.yml

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
Open in Framework → View in Fleet → aws-ecs-deployment-rollback-pipeline.yml

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

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
Open in Framework → View in Fleet → oracle-database-performance-tuning-workflow.yml

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
Open in Framework → View in Fleet → sap-ariba-procurement-approval-routing.yml

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

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
Open in Framework → View in Fleet → bloomberg-aim-order-routing-pipeline.yml

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

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
Open in Framework → View in Fleet → datadog-trading-platform-latency-check.yml

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
Open in Framework → View in Fleet → tradeweb-bond-price-lookup.yml

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
Open in Framework → View in Fleet → snowflake-daily-pnl-report-lookup.yml

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
Open in Framework → View in Fleet → bloomberg-economics-briefing-generator.yml

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
Open in Framework → View in Fleet → azure-machine-learning-model-promotion.yml

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
Open in Framework → View in Fleet → azure-devops-build-status-check.yml

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
Open in Framework → View in Fleet → kong-api-gateway-route-lookup.yml

Retrieves DNS records from Cloudflare for a specified zone to verify domain configuration.

naftiko: '0.5'
info:
  label: Cloudflare DNS Record Lookup
  description: Retrieves DNS records from Cloudflare for a specified zone to verify domain configuration.
  tags:
  - networking
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cloudflare
    port: 8080
    tools:
    - name: get-dns-records
      description: List DNS records for a Cloudflare zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone identifier.
      call: cloudflare-api.list-dns-records
      with:
        zone_id: '{{zone_id}}'
  consumes:
  - type: http
    namespace: cloudflare-api
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_api_token
    resources:
    - name: dns-records
      path: /zones/{{zone_id}}/dns_records
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: list-dns-records
        method: GET
Open in Framework → View in Fleet → cloudflare-dns-record-lookup.yml

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
Open in Framework → View in Fleet → factset-research-distribution-pipeline.yml

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

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
Open in Framework → View in Fleet → okta-application-access-quarterly-review.yml

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
Open in Framework → View in Fleet → linkedin-talent-pipeline-digest.yml

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
Open in Framework → View in Fleet → github-pr-review-and-compliance-gate.yml

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

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

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
Open in Framework → View in Fleet → workday-termination-offboarding-chain.yml

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
Open in Framework → View in Fleet → workday-headcount-and-compensation-snapshot.yml

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
Open in Framework → View in Fleet → workday-role-change-and-okta-access-sync.yml

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
Open in Framework → View in Fleet → workday-employee-directory-lookup.yml

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

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
Open in Framework → View in Fleet → sharepoint-document-library-search.yml

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
Open in Framework → View in Fleet → azure-infrastructure-provisioning-pipeline.yml

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
Open in Framework → View in Fleet → jira-engineering-sprint-digest.yml

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

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

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
Open in Framework → View in Fleet → google-drive-document-retrieval.yml

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
Open in Framework → View in Fleet → microsoft-365-license-provisioning-for-new-hires.yml

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
Open in Framework → View in Fleet → amazon-ecs-service-scaling-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-client-onboarding-workflow.yml

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
Open in Framework → View in Fleet → github-actions-release-pipeline.yml

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
Open in Framework → View in Fleet → cisco-network-incident-response-chain.yml

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

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
Open in Framework → View in Fleet → google-cloud-function-deployment-pipeline.yml

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
Open in Framework → View in Fleet → azure-ad-user-group-membership-lookup.yml

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

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
Open in Framework → View in Fleet → sap-concur-expense-fraud-detection.yml

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
Open in Framework → View in Fleet → new-relic-alert-status-lookup.yml

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

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
Open in Framework → View in Fleet → vendor-security-assessment-workflow.yml

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

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
Open in Framework → View in Fleet → client-risk-assessment-orchestrator.yml

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
Open in Framework → View in Fleet → snowflake-risk-data-pipeline-health-check.yml

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
Open in Framework → View in Fleet → workday-performance-review-cycle-launcher.yml

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

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
Open in Framework → View in Fleet → quarterly-regulatory-report-pipeline.yml

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
Open in Framework → View in Fleet → github-actions-workflow-status-check.yml

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
Open in Framework → View in Fleet → workday-benefits-enrollment-orchestrator.yml

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
Open in Framework → View in Fleet → salesforce-client-opportunity-pipeline-report.yml

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
Open in Framework → View in Fleet → ai-assisted-regulatory-document-summary.yml

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
Open in Framework → View in Fleet → compliance-training-enforcement-workflow.yml

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
Open in Framework → View in Fleet → sap-concur-travel-request-processing.yml

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

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
Open in Framework → View in Fleet → sap-concur-expense-policy-audit.yml

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

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
Open in Framework → View in Fleet → client-meeting-preparation-workflow.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-to-trade-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-quarterly-review-automation.yml

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
Open in Framework → View in Fleet → client-portfolio-rebalancing-workflow.yml

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

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
Open in Framework → View in Fleet → contract-renewal-reminder-orchestrator.yml

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
Open in Framework → View in Fleet → customer-complaint-resolution-workflow.yml

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

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
Open in Framework → View in Fleet → workday-recruiting-pipeline-digest.yml

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
Open in Framework → View in Fleet → azure-cost-anomaly-reporting.yml

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

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

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
Open in Framework → View in Fleet → database-performance-degradation-handler.yml

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
Open in Framework → View in Fleet → correspondent-banking-due-diligence.yml

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
Open in Framework → View in Fleet → kyc-customer-verification-workflow.yml

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
Open in Framework → View in Fleet → corporate-card-fraud-detection-workflow.yml

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
Open in Framework → View in Fleet → wealth-management-portfolio-rebalance-alert.yml

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
Open in Framework → View in Fleet → anthropic-regulatory-document-summarization.yml

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
Open in Framework → View in Fleet → sap-concur-expense-report-audit.yml

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
Open in Framework → View in Fleet → internal-audit-finding-tracker.yml

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

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
Open in Framework → View in Fleet → ssl-certificate-expiry-monitor.yml

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
Open in Framework → View in Fleet → operational-risk-event-logger.yml

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
Open in Framework → View in Fleet → investment-banking-deal-pipeline-digest.yml

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
Open in Framework → View in Fleet → cost-center-budget-variance-alert.yml

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

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

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
Open in Framework → View in Fleet → swift-message-validation-workflow.yml

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
Open in Framework → View in Fleet → servicenow-it-change-request-for-banking-systems.yml

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
Open in Framework → View in Fleet → salesforce-client-relationship-opportunity-sync.yml

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
Open in Framework → View in Fleet → zoom-executive-briefing-scheduler.yml

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
Open in Framework → View in Fleet → application-dependency-mapping-sync.yml

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
Open in Framework → View in Fleet → workday-time-off-request-processing.yml

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
Open in Framework → View in Fleet → vendor-payment-approval-orchestrator.yml

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
Open in Framework → View in Fleet → credit-risk-assessment-pipeline.yml

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

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
Open in Framework → View in Fleet → sla-breach-escalation-workflow.yml

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
Open in Framework → View in Fleet → linkedin-employer-brand-campaign-performance-digest.yml

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
Open in Framework → View in Fleet → market-risk-var-breach-escalation.yml

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
Open in Framework → View in Fleet → okta-user-deprovisioning-on-termination.yml

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
Open in Framework → View in Fleet → interbank-payment-reconciliation-workflow.yml

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
Open in Framework → View in Fleet → fx-rate-alert-and-notification.yml

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
Open in Framework → View in Fleet → snowflake-risk-data-quality-check.yml

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
Open in Framework → View in Fleet → global-markets-daily-p-l-report.yml

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

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

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
Open in Framework → View in Fleet → refinitiv-eikon-fx-rate-lookup.yml

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
Open in Framework → View in Fleet → palo-alto-firewall-security-policy-audit.yml

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

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
Open in Framework → View in Fleet → data-privacy-subject-access-request.yml

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
Open in Framework → View in Fleet → workday-role-change-propagation.yml

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
Open in Framework → View in Fleet → relationship-manager-client-brief-generator.yml

Tracks GitHub releases by creating a ServiceNow change request, updating Jira release tickets, and notifying the engineering team via Teams.

naftiko: '0.5'
info:
  label: GitHub Release Deployment Tracker
  description: Tracks GitHub releases by creating a ServiceNow change request, updating Jira release tickets, and notifying the engineering team via Teams.
  tags:
  - devops
  - deployment
  - github
  - servicenow
  - jira
capability:
  exposes:
  - type: mcp
    namespace: release-ops
    port: 8080
    tools:
    - name: track-release-deployment
      description: Given a GitHub repository and release tag, create a ServiceNow change request and update the Jira release ticket.
      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.1.0'.
      steps:
      - name: get-release
        type: call
        call: github.get-release
        with:
          repo: '{{repo_name}}'
          tag: '{{release_tag}}'
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Deployment: {{repo_name}} {{release_tag}}'
          description: 'Release notes: {{get-release.body}}'
          category: software_deployment
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.engineering_channel_id
          message: 'Release {{release_tag}} of {{repo_name}} deployed. Change request: {{create-change.number}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/{{repo}}/releases/tags/{{tag}}
      inputParameters:
      - name: repo
        in: path
      - name: tag
        in: path
      operations:
      - name: get-release
        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
Open in Framework → View in Fleet → github-release-deployment-tracker.yml

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
Open in Framework → View in Fleet → mortgage-document-verification-workflow.yml

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
Open in Framework → View in Fleet → regulatory-report-generation-workflow.yml

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
Open in Framework → View in Fleet → api-gateway-rate-limit-breach-handler.yml

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
Open in Framework → View in Fleet → disaster-recovery-failover-test.yml

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
Open in Framework → View in Fleet → employee-offboarding-access-revocation.yml

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
Open in Framework → View in Fleet → aml-transaction-screening-orchestrator.yml

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
Open in Framework → View in Fleet → employee-training-compliance-tracker.yml

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
Open in Framework → View in Fleet → network-firewall-rule-change-workflow.yml

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

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
Open in Framework → View in Fleet → terraform-cloud-infrastructure-workspace-provisioner.yml

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
Open in Framework → View in Fleet → treasury-cash-position-reporting.yml

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
Open in Framework → View in Fleet → client-onboarding-document-collection.yml

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
Open in Framework → View in Fleet → privileged-access-review-orchestrator.yml

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
Open in Framework → View in Fleet → trade-finance-letter-of-credit-processor.yml

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
Open in Framework → View in Fleet → digital-banking-feature-flag-rollout.yml

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
Open in Framework → View in Fleet → loan-application-processing-orchestrator.yml

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
Open in Framework → View in Fleet → murex-trade-position-lookup.yml

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
Open in Framework → View in Fleet → customer-account-closure-workflow.yml

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
Open in Framework → View in Fleet → liquidity-stress-test-runner.yml

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
Open in Framework → View in Fleet → jira-sprint-velocity-report-to-confluence.yml

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
Open in Framework → View in Fleet → datadog-banking-api-observability-alert.yml

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
Open in Framework → View in Fleet → moody-s-credit-rating-lookup.yml

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
Open in Framework → View in Fleet → sepa-batch-payment-processing-pipeline.yml

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
Open in Framework → View in Fleet → linkedin-job-posting-publisher.yml

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
Open in Framework → View in Fleet → sap-brim-billing-account-lookup.yml

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
Open in Framework → View in Fleet → github-copilot-usage-analytics.yml

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
Open in Framework → View in Fleet → microsoft-outlook-meeting-scheduler.yml

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
Open in Framework → View in Fleet → sharepoint-policy-document-retriever.yml

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
Open in Framework → View in Fleet → mastercard-transaction-data-retriever.yml

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

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

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
Open in Framework → View in Fleet → github-actions-deployment-trigger.yml

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
Open in Framework → View in Fleet → bloomberg-terminal-bond-pricing.yml

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

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
Open in Framework → View in Fleet → dynatrace-banking-app-performance.yml

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
Open in Framework → View in Fleet → salesforce-customer-360-lookup.yml

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
Open in Framework → View in Fleet → azure-databricks-credit-model-runner.yml

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
Open in Framework → View in Fleet → google-pay-integration-status.yml

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
Open in Framework → View in Fleet → mobile-banking-biometric-enrollment-orchestrator.yml

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
Open in Framework → View in Fleet → microsoft-teams-departmental-announcement.yml

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
Open in Framework → View in Fleet → credit-card-application-orchestrator.yml

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
Open in Framework → View in Fleet → microsoft-entra-identity-lookup.yml

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
Open in Framework → View in Fleet → aml-suspicious-activity-investigation-pipeline.yml

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
Open in Framework → View in Fleet → fraud-detection-alert-processor.yml

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
Open in Framework → View in Fleet → corporate-lending-renewal-pipeline.yml

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
Open in Framework → View in Fleet → interbank-reference-rate-lookup.yml

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

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
Open in Framework → View in Fleet → wholesale-client-credit-limit-reviewer.yml

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
Open in Framework → View in Fleet → sepa-direct-debit-mandate-lookup.yml

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

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
Open in Framework → View in Fleet → apple-pay-provisioning-status.yml

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
Open in Framework → View in Fleet → workday-compensation-review-lookup.yml

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
Open in Framework → View in Fleet → workday-employee-schedule-retriever.yml

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
Open in Framework → View in Fleet → swift-gpi-payment-tracker.yml

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
Open in Framework → View in Fleet → temenos-loan-balance-lookup.yml

Retrieves network device status from Cisco Control Hub for ING branch and data center infrastructure, returning device state, uptime, firmware version, and interface count.

naftiko: '0.5'
info:
  label: Cisco Network Device Status
  description: Retrieves network device status from Cisco Control Hub for ING branch and data center infrastructure, returning device state, uptime, firmware version, and interface count.
  tags:
  - infrastructure
  - cisco
  - networking
capability:
  exposes:
  - type: mcp
    namespace: network-devices
    port: 8080
    tools:
    - name: get-device-status
      description: Retrieve Cisco network device status.
      inputParameters:
      - name: device_id
        in: body
        type: string
        description: The Cisco device serial number.
      call: cisco.get-device
      with:
        device_id: '{{device_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.response.managementState
      - name: uptime
        type: string
        mapping: $.response.upTime
      - name: firmware
        type: string
        mapping: $.response.softwareVersion
  consumes:
  - type: http
    namespace: cisco
    baseUri: https://webexapis.com/v1
    authentication:
      type: bearer
      token: $secrets.cisco_token
    resources:
    - name: devices
      path: /devices/{{device_id}}
      inputParameters:
      - name: device_id
        in: path
      operations:
      - name: get-device
        method: GET
Open in Framework → View in Fleet → cisco-network-device-status.yml

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

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

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
Open in Framework → View in Fleet → loan-application-status-lookup.yml

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
Open in Framework → View in Fleet → concur-expense-report-notifier.yml

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

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

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
Open in Framework → View in Fleet → azure-devops-build-status-checker.yml

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

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
Open in Framework → View in Fleet → instant-loan-pre-approval-calculator.yml

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
Open in Framework → View in Fleet → ideal-payment-gateway-status-checker.yml

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
Open in Framework → View in Fleet → factset-market-data-retriever.yml

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
Open in Framework → View in Fleet → instant-payment-with-fraud-screening-orchestrator.yml

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
Open in Framework → View in Fleet → oracle-database-performance-monitor.yml

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
Open in Framework → View in Fleet → adobe-analytics-digital-banking-reporter.yml

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
Open in Framework → View in Fleet → sap-general-ledger-entry-creator.yml

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
Open in Framework → View in Fleet → savings-goal-progress-tracker.yml

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
Open in Framework → View in Fleet → mulesoft-api-integration-status.yml

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
Open in Framework → View in Fleet → transaction-monitoring-alert-handler.yml

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
Open in Framework → View in Fleet → regulatory-report-generator.yml

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
Open in Framework → View in Fleet → murex-derivatives-position-lookup.yml

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
Open in Framework → View in Fleet → pluralsight-training-assigner.yml

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
Open in Framework → View in Fleet → customer-account-balance-lookup.yml

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
Open in Framework → View in Fleet → foreign-exchange-rate-lookup.yml

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
Open in Framework → View in Fleet → microsoft-excel-regulatory-report-builder.yml

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
Open in Framework → View in Fleet → cross-border-payment-sanctions-screener.yml

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
Open in Framework → View in Fleet → box-audit-document-uploader.yml

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
Open in Framework → View in Fleet → temenos-fixed-deposit-lookup.yml

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
Open in Framework → View in Fleet → cloudflare-waf-event-monitor.yml

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
Open in Framework → View in Fleet → murex-trade-booking-lookup.yml

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

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
Open in Framework → View in Fleet → microsoft-power-automate-flow-trigger.yml

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
Open in Framework → View in Fleet → google-drive-document-finder.yml

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

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
Open in Framework → View in Fleet → new-relic-banking-platform-monitor.yml

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
Open in Framework → View in Fleet → kyc-customer-verification-orchestrator.yml

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

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
Open in Framework → View in Fleet → google-sheets-esg-metrics-logger.yml

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
Open in Framework → View in Fleet → psd2-account-access-consent-manager.yml

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
Open in Framework → View in Fleet → adp-payroll-sync.yml

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

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

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
Open in Framework → View in Fleet → azure-key-vault-secret-retriever.yml

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
Open in Framework → View in Fleet → sustainability-bond-portfolio-tracker.yml

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
Open in Framework → View in Fleet → workday-payroll-summary-retriever.yml

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
Open in Framework → View in Fleet → red-hat-openshift-cluster-status.yml

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
Open in Framework → View in Fleet → treasury-liquidity-management-orchestrator.yml

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

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
Open in Framework → View in Fleet → mulesoft-api-gateway-health-check.yml

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
Open in Framework → View in Fleet → dutch-mortgage-rate-comparison-tool.yml

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
Open in Framework → View in Fleet → kondor-treasury-position-lookup.yml

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
Open in Framework → View in Fleet → investment-portfolio-rebalancing-orchestrator.yml

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
Open in Framework → View in Fleet → credit-risk-score-retriever.yml

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
Open in Framework → View in Fleet → tradeweb-bond-execution-lookup.yml

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
Open in Framework → View in Fleet → microsoft-planner-project-tracker.yml

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}}&currency={{currency}}
      inputParameters:
      - name: entity_id
        in: query
      - name: currency
        in: query
      operations:
      - name: get-position
        method: GET
Open in Framework → View in Fleet → treasury-cash-position-lookup.yml

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
Open in Framework → View in Fleet → trade-allocation-and-booking-orchestrator.yml

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
Open in Framework → View in Fleet → iso-20022-payment-migration-validator.yml

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
Open in Framework → View in Fleet → auto-loan-origination-pipeline.yml

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
Open in Framework → View in Fleet → commercial-real-estate-loan-status.yml

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
Open in Framework → View in Fleet → fx-spot-rate-retrieval.yml

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

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

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
Open in Framework → View in Fleet → onyx-blockchain-transaction-lookup.yml

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
Open in Framework → View in Fleet → equity-research-report-distribution-pipeline.yml

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

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
Open in Framework → View in Fleet → api-gateway-rate-limit-and-access-provisioning.yml

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
Open in Framework → View in Fleet → private-equity-fund-performance.yml

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
Open in Framework → View in Fleet → consumer-credit-card-fraud-alert.yml

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
Open in Framework → View in Fleet → trade-finance-supply-chain-orchestrator.yml

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
Open in Framework → View in Fleet → commercial-card-program-enrollment.yml

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
Open in Framework → View in Fleet → regulatory-capital-calculation-and-filing.yml

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

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
Open in Framework → View in Fleet → cross-border-payment-with-sanctions-screening.yml

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

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
Open in Framework → View in Fleet → incident-response-and-business-continuity-activation.yml

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
Open in Framework → View in Fleet → repo-trade-booking-and-settlement-orchestrator.yml

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

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
Open in Framework → View in Fleet → esg-portfolio-screening-and-reporting.yml

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
Open in Framework → View in Fleet → wealth-client-portfolio-rebalance.yml

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
Open in Framework → View in Fleet → commercial-loan-covenant-monitor.yml

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
Open in Framework → View in Fleet → merchant-services-transaction-lookup.yml

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

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
Open in Framework → View in Fleet → daily-p-l-report-with-risk-breach-alerting.yml

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
Open in Framework → View in Fleet → commercial-loan-origination-pipeline.yml

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
Open in Framework → View in Fleet → etf-authorized-participant-creation.yml

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
Open in Framework → View in Fleet → securities-clearing-status-lookup.yml

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
Open in Framework → View in Fleet → consumer-savings-account-lookup.yml

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
Open in Framework → View in Fleet → market-risk-var-calculation.yml

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
Open in Framework → View in Fleet → fx-forward-rate-lookup.yml

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
Open in Framework → View in Fleet → athena-pricing-model-execution.yml

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
Open in Framework → View in Fleet → treasury-services-balance-reporting.yml

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
Open in Framework → View in Fleet → payment-clearing-reconciliation-pipeline.yml

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
Open in Framework → View in Fleet → real-time-payments-with-fraud-detection.yml

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
Open in Framework → View in Fleet → interest-rate-swap-booking-and-confirmation.yml

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
Open in Framework → View in Fleet → sanctions-screening-check.yml

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
Open in Framework → View in Fleet → credit-card-rewards-balance-lookup.yml

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
Open in Framework → View in Fleet → ai-model-risk-validation-pipeline.yml

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
Open in Framework → View in Fleet → cash-management-sweep-orchestrator.yml

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
Open in Framework → View in Fleet → derivatives-margin-call-orchestrator.yml

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
Open in Framework → View in Fleet → daily-treasury-funding-orchestrator.yml

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
Open in Framework → View in Fleet → blockchain-payment-rail-settlement.yml

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
Open in Framework → View in Fleet → digital-banking-mobile-deposit-status.yml

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
Open in Framework → View in Fleet → trade-settlement-exception-resolution.yml

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
Open in Framework → View in Fleet → collateral-margin-valuation.yml

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
Open in Framework → View in Fleet → trade-execution-and-confirmation-orchestrator.yml

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
Open in Framework → View in Fleet → equity-ipo-bookbuilding-orchestrator.yml

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
Open in Framework → View in Fleet → operational-risk-incident-lookup.yml

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
Open in Framework → View in Fleet → corporate-bond-issuance-orchestrator.yml

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
Open in Framework → View in Fleet → algorithmic-trading-strategy-deployment.yml

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
Open in Framework → View in Fleet → custody-account-balance-lookup.yml

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
Open in Framework → View in Fleet → wire-transfer-status-lookup.yml

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
Open in Framework → View in Fleet → credit-risk-score-retrieval.yml

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
Open in Framework → View in Fleet → wealth-client-tax-loss-harvesting.yml

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

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
Open in Framework → View in Fleet → equity-research-distribution-pipeline.yml

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
Open in Framework → View in Fleet → fixed-income-yield-curve-retrieval.yml

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
Open in Framework → View in Fleet → client-relationship-review-pipeline.yml

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
Open in Framework → View in Fleet → investment-banking-deal-pipeline-tracker.yml

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
Open in Framework → View in Fleet → cross-currency-swap-valuation.yml

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

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
Open in Framework → View in Fleet → aml-transaction-monitoring-and-escalation.yml

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
Open in Framework → View in Fleet → client-kyc-refresh-orchestrator.yml

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
Open in Framework → View in Fleet → market-data-quote-retrieval.yml

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
Open in Framework → View in Fleet → commercial-banking-account-analysis.yml

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
Open in Framework → View in Fleet → custody-corporate-action-processing.yml

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
Open in Framework → View in Fleet → consumer-mortgage-origination-pipeline.yml

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
Open in Framework → View in Fleet → trade-finance-letter-of-credit-issuance.yml

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
Open in Framework → View in Fleet → fx-trade-lifecycle-orchestrator.yml

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
Open in Framework → View in Fleet → regulatory-stress-test-submission-pipeline.yml

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

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

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
Open in Framework → View in Fleet → reference-data-entity-lookup.yml

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
Open in Framework → View in Fleet → custody-fund-nav-calculation.yml

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
Open in Framework → View in Fleet → stress-test-scenario-execution.yml

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
Open in Framework → View in Fleet → securities-lending-availability-and-locate.yml

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
Open in Framework → View in Fleet → credit-exposure-counterparty-lookup.yml

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
Open in Framework → View in Fleet → private-banking-client-review-preparation.yml

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
Open in Framework → View in Fleet → wealth-client-financial-plan-lookup.yml

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
Open in Framework → View in Fleet → global-payments-routing-status.yml

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

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
Open in Framework → View in Fleet → counterparty-credit-limit-monitoring.yml

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
Open in Framework → View in Fleet → commodity-futures-position-lookup.yml

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
Open in Framework → View in Fleet → syndicated-loan-facility-lookup.yml

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

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
Open in Framework → View in Fleet → equity-option-pricing-lookup.yml

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
Open in Framework → View in Fleet → prime-brokerage-portfolio-lookup.yml

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
Open in Framework → View in Fleet → reference-data-instrument-lookup.yml

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
Open in Framework → View in Fleet → credit-default-swap-pricing-lookup.yml

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

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 4
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-4
      path: /data-4/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-4
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-4.yml

Queries Oracle E-Business Suite for general ledger balances and journal entries for financial reconciliation and reporting.

naftiko: '0.5'
info:
  label: Oracle E-Business Suite General Ledger Query
  description: Queries Oracle E-Business Suite for general ledger balances and journal entries for financial reconciliation and reporting.
  tags:
  - finance
  - oracle-e-business-suite
  - general-ledger
capability:
  exposes:
  - type: mcp
    namespace: gl-query
    port: 8080
    tools:
    - name: get-gl-balance
      description: Query Oracle EBS for general ledger balance by account and period.
      inputParameters:
      - name: account_code
        in: body
        type: string
        description: GL account code.
      - name: period
        in: body
        type: string
        description: Accounting period.
      call: oracle-ebs.get-balance
      with:
        account: '{{account_code}}'
        period: '{{period}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://manulife-ebs.oraclecloud.com/webservices/rest
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: gl-balances
      path: /gl/balances
      inputParameters:
      - name: account
        in: query
      - name: period
        in: query
      operations:
      - name: get-balance
        method: GET
Open in Framework → View in Fleet → oracle-e-business-suite-general-ledger-query.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 5
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-5
      path: /data-5/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-5
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-5.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 7
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-7
      path: /data-7/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-7
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-7.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 6
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-6
      path: /data-6/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-6.yml

Posts a daily claims summary to Microsoft Teams with open claims count, average processing time, and pending approvals.

naftiko: '0.5'
info:
  label: Microsoft Teams Daily Claims Summary
  description: Posts a daily claims summary to Microsoft Teams with open claims count, average processing time, and pending approvals.
  tags:
  - claims
  - microsoft-teams
  - daily-reporting
capability:
  exposes:
  - type: mcp
    namespace: claims-summary
    port: 8080
    tools:
    - name: post-daily-summary
      description: Generate and post daily claims summary to Microsoft Teams.
      inputParameters:
      - name: team_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID.
      steps:
      - name: get-claims-stats
        type: call
        call: claims-system.get-daily-stats
        with:
          date: today
      - name: post-summary
        type: call
        call: msteams.send-message
        with:
          channel_id: '{{team_channel_id}}'
          text: 'Daily Claims Summary: {{get-claims-stats.open_claims}} open | {{get-claims-stats.avg_processing_days}} avg days | {{get-claims-stats.pending_approvals}} pending approvals | {{get-claims-stats.total_paid}} paid today'
  consumes:
  - type: http
    namespace: claims-system
    baseUri: https://api.manulife.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: stats
      path: /stats/daily
      operations:
      - name: get-daily-stats
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-daily-claims-summary.yml

Reviews Azure Active Directory access assignments for Manulife applications, identifying over-provisioned accounts for security remediation.

naftiko: '0.5'
info:
  label: Azure Active Directory Access Reviewer
  description: Reviews Azure Active Directory access assignments for Manulife applications, identifying over-provisioned accounts for security remediation.
  tags:
  - security
  - azure-active-directory
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: access-review
    port: 8080
    tools:
    - name: review-access
      description: Review Azure AD access assignments for an application.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: Azure AD application ID.
      call: azuread.get-app-assignments
      with:
        app_id: '{{app_id}}'
  consumes:
  - type: http
    namespace: azuread
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: app-assignments
      path: /servicePrincipals/{{app_id}}/appRoleAssignedTo
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-assignments
        method: GET
Open in Framework → View in Fleet → azure-active-directory-access-reviewer.yml

Triggers Microsoft Power Automate flows for automated claims processing, routing claims through approval chains based on value thresholds.

naftiko: '0.5'
info:
  label: Microsoft Power Automate Claims Workflow
  description: Triggers Microsoft Power Automate flows for automated claims processing, routing claims through approval chains based on value thresholds.
  tags:
  - claims
  - microsoft-power-automate
  - automation
capability:
  exposes:
  - type: mcp
    namespace: claims-automation
    port: 8080
    tools:
    - name: trigger-claims-flow
      description: Trigger a Power Automate flow for claims processing.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The claim number.
      - name: claim_value
        in: body
        type: number
        description: Claim value amount.
      call: powerautomate.trigger-flow
      with:
        claim_number: '{{claim_number}}'
        value: '{{claim_value}}'
  consumes:
  - type: http
    namespace: powerautomate
    baseUri: https://prod-123.westus.logic.azure.com/workflows
    authentication:
      type: apiKey
      key: $secrets.power_automate_key
    resources:
    - name: flows
      path: /claims-approval/triggers/manual/paths/invoke
      operations:
      - name: trigger-flow
        method: POST
Open in Framework → View in Fleet → microsoft-power-automate-claims-workflow.yml

Generates retirement plan statements by pulling portfolio data, calculating projected income, and emailing the statement via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Retirement Plan Statement Generator
  description: Generates retirement plan statements by pulling portfolio data, calculating projected income, and emailing the statement via Microsoft Outlook.
  tags:
  - retirement
  - wealth-management
  - microsoft-outlook
  - financial-planning
capability:
  exposes:
  - type: mcp
    namespace: retirement-statements
    port: 8080
    tools:
    - name: generate-statement
      description: Generate and email a retirement plan statement.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: Client ID.
      - name: plan_id
        in: body
        type: string
        description: Retirement plan ID.
      - name: client_email
        in: body
        type: string
        description: Client email address.
      steps:
      - name: get-portfolio
        type: call
        call: wealth-platform.get-retirement-plan
        with:
          client_id: '{{client_id}}'
          plan_id: '{{plan_id}}'
      - name: send-statement
        type: call
        call: outlook.send-email
        with:
          to: '{{client_email}}'
          subject: Your Retirement Plan Statement
          body: 'Plan ID: {{plan_id}}. Current balance: {{get-portfolio.balance}}. Projected retirement income: {{get-portfolio.projected_income}}/month. Contribution rate: {{get-portfolio.contribution_rate}}%.'
  consumes:
  - type: http
    namespace: wealth-platform
    baseUri: https://api.manulife.com/wealth/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: retirement
      path: /clients/{{client_id}}/retirement-plans/{{plan_id}}
      inputParameters:
      - name: client_id
        in: path
      - name: plan_id
        in: path
      operations:
      - name: get-retirement-plan
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → retirement-plan-statement-generator.yml

Monitors Manulife infrastructure health via New Relic, tracking server CPU, memory, and disk utilization.

naftiko: '0.5'
info:
  label: New Relic Infrastructure Monitor
  description: Monitors Manulife infrastructure health via New Relic, tracking server CPU, memory, and disk utilization.
  tags:
  - monitoring
  - new-relic
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infra-monitor
    port: 8080
    tools:
    - name: get-infra-health
      description: Retrieve infrastructure health metrics from New Relic.
      inputParameters:
      - name: host_name
        in: body
        type: string
        description: The host name to monitor.
      call: newrelic.get-host-metrics
      with:
        host: '{{host_name}}'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: hosts
      path: /servers.json
      inputParameters:
      - name: host
        in: query
      operations:
      - name: get-host-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-infrastructure-monitor.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 2
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-2
      path: /data-2/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-2
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-2.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 3
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-3
      path: /data-3/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-3.yml

Reviews Azure Active Directory access assignments for Manulife applications to ensure least-privilege compliance.

naftiko: '0.5'
info:
  label: Azure Active Directory Access Review
  description: Reviews Azure Active Directory access assignments for Manulife applications to ensure least-privilege compliance.
  tags:
  - security
  - azure-active-directory
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: access-review
    port: 8080
    tools:
    - name: review-access
      description: Review Azure AD access assignments for an application.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: Azure AD application ID.
      call: azuread.get-app-assignments
      with:
        app_id: '{{app_id}}'
  consumes:
  - type: http
    namespace: azuread
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: app-assignments
      path: /servicePrincipals/{{app_id}}/appRoleAssignedTo
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-assignments
        method: GET
Open in Framework → View in Fleet → azure-active-directory-access-review.yml

Processes Know Your Customer documents by validating identity through the Manulife verification service, storing documents in SharePoint, and updating the Salesforce client record.

naftiko: '0.5'
info:
  label: KYC Document Verification Pipeline
  description: Processes Know Your Customer documents by validating identity through the Manulife verification service, storing documents in SharePoint, and updating the Salesforce client record.
  tags:
  - kyc
  - compliance
  - sharepoint
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: kyc-verification
    port: 8080
    tools:
    - name: verify-kyc
      description: Process KYC document verification for a client.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      - name: document_type
        in: body
        type: string
        description: Document type (passport, drivers-license, utility-bill).
      - name: document_url
        in: body
        type: string
        description: URL to the uploaded document.
      steps:
      - name: verify-identity
        type: call
        call: verification-service.verify
        with:
          client_id: '{{client_id}}'
          doc_type: '{{document_type}}'
          doc_url: '{{document_url}}'
      - name: store-document
        type: call
        call: sharepoint.upload-file
        with:
          site_id: kyc_documents
          folder_path: Clients/{{client_id}}/{{document_type}}
          content: '{{document_url}}'
      - name: update-client
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{client_id}}'
          kyc_status: '{{verify-identity.status}}'
          kyc_date: '{{verify-identity.verification_date}}'
  consumes:
  - type: http
    namespace: verification-service
    baseUri: https://api.manulife.com/kyc/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: verifications
      path: /verify
      operations:
      - name: verify
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: salesforce
    baseUri: https://manulife.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
Open in Framework → View in Fleet → kyc-document-verification-pipeline.yml

Manages shared documents in Google Drive for financial advisor collaboration on client portfolios and financial plans.

naftiko: '0.5'
info:
  label: Google Drive Advisor Document Sharing
  description: Manages shared documents in Google Drive for financial advisor collaboration on client portfolios and financial plans.
  tags:
  - collaboration
  - google-drive
  - advisor-tools
capability:
  exposes:
  - type: mcp
    namespace: advisor-docs
    port: 8080
    tools:
    - name: share-advisor-doc
      description: Create and share a document in Google Drive for advisor collaboration.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Document title.
      - name: folder_id
        in: body
        type: string
        description: Google Drive folder ID.
      call: googledrive.create-file
      with:
        title: '{{title}}'
        folder_id: '{{folder_id}}'
  consumes:
  - type: http
    namespace: googledrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: create-file
        method: POST
Open in Framework → View in Fleet → google-drive-advisor-document-sharing.yml

When a new claim is submitted, creates the claim record, opens a ServiceNow tracking ticket, assigns an adjuster via Workday lookup, and notifies the claimant via Microsoft Outlook.

naftiko: '0.5'
info:
  label: New Claims Intake Orchestrator
  description: When a new claim is submitted, creates the claim record, opens a ServiceNow tracking ticket, assigns an adjuster via Workday lookup, and notifies the claimant via Microsoft Outlook.
  tags:
  - claims
  - intake
  - servicenow
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: claims-intake
    port: 8080
    tools:
    - name: process-new-claim
      description: Process a new insurance claim through intake, assignment, and notification.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number associated with the claim.
      - name: claim_type
        in: body
        type: string
        description: Type of claim (life, health, disability, dental).
      - name: description
        in: body
        type: string
        description: Description of the claim.
      - name: claimant_email
        in: body
        type: string
        description: Claimant email address.
      steps:
      - name: create-claim
        type: call
        call: claims-system.create-claim
        with:
          policy_number: '{{policy_number}}'
          claim_type: '{{claim_type}}'
          description: '{{description}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New claim: {{create-claim.claim_number}} - {{claim_type}}'
          category: claims
          description: 'Policy: {{policy_number}}. Claim: {{create-claim.claim_number}}. Type: {{claim_type}}.'
      - name: get-adjuster
        type: call
        call: workday.get-available-adjuster
        with:
          claim_type: '{{claim_type}}'
      - name: notify-claimant
        type: call
        call: outlook.send-email
        with:
          to: '{{claimant_email}}'
          subject: 'Claim received: {{create-claim.claim_number}}'
          body: 'Your {{claim_type}} claim has been received and assigned to {{get-adjuster.full_name}}. Reference: {{create-claim.claim_number}}.'
  consumes:
  - type: http
    namespace: claims-system
    baseUri: https://api.manulife.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: claims
      path: /claims
      operations:
      - name: create-claim
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: adjusters
      path: /workers
      operations:
      - name: get-available-adjuster
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → new-claims-intake-orchestrator.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 1
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-1
      path: /data-1/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-1
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-1.yml

Checks F5 Networks load balancer health for Manulife web application and API gateway pools.

naftiko: '0.5'
info:
  label: F5 Load Balancer Health Check
  description: Checks F5 Networks load balancer health for Manulife web application and API gateway pools.
  tags:
  - infrastructure
  - f5-networks
  - load-balancing
capability:
  exposes:
  - type: mcp
    namespace: lb-health
    port: 8080
    tools:
    - name: check-pool-health
      description: Check F5 load balancer pool health.
      inputParameters:
      - name: pool_name
        in: body
        type: string
        description: F5 pool name.
      call: f5.get-pool-status
      with:
        pool: '{{pool_name}}'
  consumes:
  - type: http
    namespace: f5
    baseUri: https://manulife-f5.com/mgmt/tm
    authentication:
      type: basic
      username: $secrets.f5_user
      password: $secrets.f5_password
    resources:
    - name: pools
      path: /ltm/pool/{{pool}}/members
      inputParameters:
      - name: pool
        in: path
      operations:
      - name: get-pool-status
        method: GET
Open in Framework → View in Fleet → f5-load-balancer-health-check.yml

Pulls fund performance data from Bloomberg, aggregates returns, and publishes a performance report to SharePoint for wealth advisors.

naftiko: '0.5'
info:
  label: Investment Fund Performance Reporter
  description: Pulls fund performance data from Bloomberg, aggregates returns, and publishes a performance report to SharePoint for wealth advisors.
  tags:
  - wealth-management
  - bloomberg-enterprise-data
  - sharepoint
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: fund-performance
    port: 8080
    tools:
    - name: generate-fund-report
      description: Generate a fund performance report from Bloomberg data and publish to SharePoint.
      inputParameters:
      - name: fund_id
        in: body
        type: string
        description: The fund Bloomberg identifier.
      - name: period
        in: body
        type: string
        description: Reporting period (e.g., 2026-Q1).
      steps:
      - name: get-performance
        type: call
        call: bloomberg.get-fund-data
        with:
          fund_id: '{{fund_id}}'
          period: '{{period}}'
      - name: publish-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: wealth_reports
          folder_path: FundPerformance/{{fund_id}}/{{period}}
          content: 'Return: {{get-performance.total_return}}. Benchmark: {{get-performance.benchmark_return}}. Alpha: {{get-performance.alpha}}.'
  consumes:
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: fund-data
      path: /catalogs/funds/{{fund_id}}/performance
      inputParameters:
      - name: fund_id
        in: path
      - name: period
        in: query
      operations:
      - name: get-fund-data
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → investment-fund-performance-reporter.yml

Screens new client applications against sanctions lists and PEP databases, logging results in ServiceNow and updating the Salesforce compliance flag.

naftiko: '0.5'
info:
  label: Anti-Money Laundering Screening
  description: Screens new client applications against sanctions lists and PEP databases, logging results in ServiceNow and updating the Salesforce compliance flag.
  tags:
  - aml
  - compliance
  - sanctions
  - servicenow
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: aml-screening
    port: 8080
    tools:
    - name: screen-client
      description: Screen a client against AML/sanctions databases and update compliance records.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Client full name.
      - name: client_id
        in: body
        type: string
        description: Salesforce client ID.
      - name: country
        in: body
        type: string
        description: Client country of residence.
      steps:
      - name: run-screening
        type: call
        call: aml-service.screen
        with:
          name: '{{client_name}}'
          country: '{{country}}'
      - name: log-result
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'AML screening: {{client_name}}'
          category: compliance
          description: 'Screening result: {{run-screening.result}}. Match count: {{run-screening.match_count}}. Risk level: {{run-screening.risk_level}}.'
      - name: update-salesforce
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{client_id}}'
          aml_status: '{{run-screening.result}}'
          aml_risk_level: '{{run-screening.risk_level}}'
  consumes:
  - type: http
    namespace: aml-service
    baseUri: https://api.manulife.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: screening
      path: /aml/screen
      operations:
      - name: screen
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.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
Open in Framework → View in Fleet → anti-money-laundering-screening.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 17
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-17
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-17
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → manulife-workflow-17.yml

Monitors Manulife network infrastructure health via SolarWinds, tracking device uptime, bandwidth, and latency.

naftiko: '0.5'
info:
  label: SolarWinds Network Health Monitor
  description: Monitors Manulife network infrastructure health via SolarWinds, tracking device uptime, bandwidth, and latency.
  tags:
  - network
  - solarwinds
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: network-health
    port: 8080
    tools:
    - name: get-network-status
      description: Check SolarWinds for network health at a Manulife location.
      inputParameters:
      - name: location
        in: body
        type: string
        description: Office or data center location.
      call: solarwinds.get-nodes
      with:
        location: '{{location}}'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://manulife-solarwinds.com/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Query
      operations:
      - name: get-nodes
        method: POST
Open in Framework → View in Fleet → solarwinds-network-health-monitor.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 6
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-6
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://manulife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → manulife-workflow-6.yml

Generates regulatory compliance documents, validates against compliance rules in Oracle E-Business Suite, and archives to Box with retention policies.

naftiko: '0.5'
info:
  label: Regulatory Compliance Document Filer
  description: Generates regulatory compliance documents, validates against compliance rules in Oracle E-Business Suite, and archives to Box with retention policies.
  tags:
  - compliance
  - regulatory
  - oracle-e-business-suite
  - box
capability:
  exposes:
  - type: mcp
    namespace: compliance-filing
    port: 8080
    tools:
    - name: file-compliance-document
      description: Validate and file a regulatory compliance document.
      inputParameters:
      - name: document_type
        in: body
        type: string
        description: Document type (annual-statement, risk-report, capital-adequacy).
      - name: jurisdiction
        in: body
        type: string
        description: Regulatory jurisdiction (OSFI, SEC, MAS).
      - name: filing_period
        in: body
        type: string
        description: Filing period.
      steps:
      - name: validate-document
        type: call
        call: oracle-ebs.validate-compliance
        with:
          doc_type: '{{document_type}}'
          jurisdiction: '{{jurisdiction}}'
      - name: archive-document
        type: call
        call: box.upload-file
        with:
          folder_id: regulatory_filings
          file_name: '{{document_type}}_{{jurisdiction}}_{{filing_period}}'
          metadata: jurisdiction:{{jurisdiction}},type:{{document_type}},period:{{filing_period}},retention:10years
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://manulife-ebs.oraclecloud.com/webservices/rest
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: compliance
      path: /compliance/validate
      operations:
      - name: validate-compliance
        method: POST
  - type: http
    namespace: box
    baseUri: https://upload.box.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → regulatory-compliance-document-filer.yml

Retrieves insurance policy details from the Manulife policy administration system by policy number, returning coverage type, premium, beneficiaries, and status.

naftiko: '0.5'
info:
  label: Policy Lookup
  description: Retrieves insurance policy details from the Manulife policy administration system by policy number, returning coverage type, premium, beneficiaries, and status.
  tags:
  - insurance
  - policy-management
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: policy-lookup
    port: 8080
    tools:
    - name: get-policy
      description: Look up an insurance policy by policy number.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The Manulife policy number.
      call: policy-admin.get-policy
      with:
        policy_number: '{{policy_number}}'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.manulife.com/policy/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
Open in Framework → View in Fleet → policy-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 7
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-7
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-7
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-7.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 16
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-16
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://manulife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → manulife-workflow-16.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 14
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-14
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → manulife-workflow-14.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 28
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-28
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://manulife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → manulife-workflow-28.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 5
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-5
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-5
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → manulife-workflow-5.yml

Posts financial advisor positions to LinkedIn, sourcing candidates from Workday requisitions for the wealth management division.

naftiko: '0.5'
info:
  label: LinkedIn Financial Advisor Recruiting
  description: Posts financial advisor positions to LinkedIn, sourcing candidates from Workday requisitions for the wealth management division.
  tags:
  - recruiting
  - linkedin
  - workday
capability:
  exposes:
  - type: mcp
    namespace: advisor-recruiting
    port: 8080
    tools:
    - name: publish-advisor-job
      description: Pull a Workday requisition and publish to LinkedIn.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Workday job requisition ID.
      steps:
      - name: get-req
        type: call
        call: workday.get-requisition
        with:
          req_id: '{{requisition_id}}'
      - name: post-job
        type: call
        call: linkedin.create-job-post
        with:
          title: '{{get-req.title}}'
          description: '{{get-req.description}}'
          location: '{{get-req.location}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /recruiting/requisitions/{{req_id}}
      inputParameters:
      - name: req_id
        in: path
      operations:
      - name: get-requisition
        method: GET
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-posts
      path: /jobPosts
      operations:
      - name: create-job-post
        method: POST
Open in Framework → View in Fleet → linkedin-financial-advisor-recruiting.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 4
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-4
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://manulife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → manulife-workflow-4.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 29
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-29
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-29
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → manulife-workflow-29.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 15
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-15
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-15
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-15.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 11
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-11
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-11
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → manulife-workflow-11.yml

Monitors Azure Data Factory pipeline runs for data warehouse ETL processes, alerting on failures via Slack.

naftiko: '0.5'
info:
  label: Azure Data Factory ETL Monitor
  description: Monitors Azure Data Factory pipeline runs for data warehouse ETL processes, alerting on failures via Slack.
  tags:
  - data-engineering
  - azure-data-factory
  - slack
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: etl-monitor
    port: 8080
    tools:
    - name: check-etl-status
      description: Check Azure Data Factory pipeline run status and alert on failures.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: ADF pipeline name.
      - name: run_id
        in: body
        type: string
        description: Pipeline run ID.
      steps:
      - name: get-run-status
        type: call
        call: adf.get-pipeline-run
        with:
          pipeline: '{{pipeline_name}}'
          run_id: '{{run_id}}'
      - name: alert-failure
        type: call
        call: slack.post-message
        with:
          channel: data-engineering-alerts
          text: 'ADF pipeline {{pipeline_name}} run {{run_id}}: {{get-run-status.status}}. Duration: {{get-run-status.duration}}. Message: {{get-run-status.message}}.'
  consumes:
  - type: http
    namespace: adf
    baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/{{factory}}
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: pipeline-runs
      path: /pipelineruns/{{run_id}}
      inputParameters:
      - name: run_id
        in: path
      operations:
      - name: get-pipeline-run
        method: GET
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-data-factory-etl-monitor.yml

Archives completed client onboarding and policy documents from SharePoint to Box with retention policies for regulatory compliance.

naftiko: '0.5'
info:
  label: Box Client Document Archive
  description: Archives completed client onboarding and policy documents from SharePoint to Box with retention policies for regulatory compliance.
  tags:
  - document-management
  - box
  - sharepoint
  - archiving
capability:
  exposes:
  - type: mcp
    namespace: doc-archive
    port: 8080
    tools:
    - name: archive-client-docs
      description: Move client documents from SharePoint to Box long-term archive.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: Client identifier.
      - name: document_category
        in: body
        type: string
        description: Category (onboarding, policy, claims, kyc).
      steps:
      - name: get-docs
        type: call
        call: sharepoint.list-files
        with:
          site_id: client_docs
          folder_path: '{{document_category}}/{{client_id}}'
      - name: upload-to-box
        type: call
        call: box.upload-file
        with:
          folder_id: client_archive
          file_name: '{{client_id}}_{{document_category}}_archive.zip'
          metadata: client:{{client_id}},category:{{document_category}},retention:7years
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}:/children
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: list-files
        method: GET
  - type: http
    namespace: box
    baseUri: https://upload.box.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → box-client-document-archive.yml

Audits Palo Alto Networks firewall rules for Manulife network security compliance, checking policy configurations against security standards.

naftiko: '0.5'
info:
  label: Palo Alto Security Audit
  description: Audits Palo Alto Networks firewall rules for Manulife network security compliance, checking policy configurations against security standards.
  tags:
  - security
  - palo-alto-networks
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: security-audit
    port: 8080
    tools:
    - name: audit-firewall-rules
      description: Retrieve and audit Palo Alto firewall rules for compliance.
      inputParameters:
      - name: device_group
        in: body
        type: string
        description: Palo Alto device group name.
      call: paloalto.get-security-rules
      with:
        device_group: '{{device_group}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://manulife-panorama.paloaltonetworks.com/restapi/v10.2
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules
      inputParameters:
      - name: device_group
        in: query
      operations:
      - name: get-security-rules
        method: GET
Open in Framework → View in Fleet → palo-alto-security-audit.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 1
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-1
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → manulife-workflow-1.yml

Creates and tracks regulatory compliance tasks in Microsoft Planner for audit preparation, regulatory filings, and policy reviews.

naftiko: '0.5'
info:
  label: Microsoft Planner Compliance Task Tracker
  description: Creates and tracks regulatory compliance tasks in Microsoft Planner for audit preparation, regulatory filings, and policy reviews.
  tags:
  - compliance
  - microsoft-planner
  - task-management
capability:
  exposes:
  - type: mcp
    namespace: compliance-tasks
    port: 8080
    tools:
    - name: create-compliance-task
      description: Create a compliance tracking task in Microsoft Planner.
      inputParameters:
      - name: task_title
        in: body
        type: string
        description: Task title.
      - name: due_date
        in: body
        type: string
        description: Due date in YYYY-MM-DD format.
      - name: plan_id
        in: body
        type: string
        description: Planner plan ID.
      - name: priority
        in: body
        type: string
        description: Priority (urgent, important, medium, low).
      call: planner.create-task
      with:
        plan_id: '{{plan_id}}'
        title: '{{task_title}}'
        due_date: '{{due_date}}'
        priority: '{{priority}}'
  consumes:
  - type: http
    namespace: planner
    baseUri: https://graph.microsoft.com/v1.0/planner
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: tasks
      path: /tasks
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → microsoft-planner-compliance-task-tracker.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 10
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-10
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://manulife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → manulife-workflow-10.yml

Generates an insurance premium quote based on coverage type, amount, term, and applicant profile.

naftiko: '0.5'
info:
  label: Premium Quote Generator
  description: Generates an insurance premium quote based on coverage type, amount, term, and applicant profile.
  tags:
  - insurance
  - pricing
  - quotes
capability:
  exposes:
  - type: mcp
    namespace: premium-quotes
    port: 8080
    tools:
    - name: generate-quote
      description: Generate a premium quote for an insurance product.
      inputParameters:
      - name: product_type
        in: body
        type: string
        description: Insurance product type.
      - name: coverage_amount
        in: body
        type: number
        description: Desired coverage amount.
      - name: term_years
        in: body
        type: integer
        description: Policy term in years.
      - name: applicant_age
        in: body
        type: integer
        description: Applicant age.
      call: rating-engine.get-quote
      with:
        product: '{{product_type}}'
        coverage: '{{coverage_amount}}'
        term: '{{term_years}}'
        age: '{{applicant_age}}'
  consumes:
  - type: http
    namespace: rating-engine
    baseUri: https://api.manulife.com/rating/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: quotes
      path: /quotes
      operations:
      - name: get-quote
        method: POST
Open in Framework → View in Fleet → premium-quote-generator.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 12
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-12
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-12
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → manulife-workflow-12.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 3
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-3
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-3
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-3.yml

Onboards a new financial advisor by creating their Workday profile, provisioning Salesforce access, opening a ServiceNow setup ticket, and sending welcome materials via Microsoft Teams.

naftiko: '0.5'
info:
  label: Advisor Onboarding Orchestrator
  description: Onboards a new financial advisor by creating their Workday profile, provisioning Salesforce access, opening a ServiceNow setup ticket, and sending welcome materials via Microsoft Teams.
  tags:
  - onboarding
  - advisor-management
  - workday
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: advisor-onboarding
    port: 8080
    tools:
    - name: onboard-advisor
      description: Orchestrate the full onboarding sequence for a new financial advisor.
      inputParameters:
      - name: advisor_name
        in: body
        type: string
        description: Full name of the new advisor.
      - name: email
        in: body
        type: string
        description: Advisor email address.
      - name: region
        in: body
        type: string
        description: Operating region.
      - name: license_number
        in: body
        type: string
        description: Financial advisor license number.
      steps:
      - name: create-worker
        type: call
        call: workday.create-worker
        with:
          full_name: '{{advisor_name}}'
          email: '{{email}}'
          department: Wealth Advisory
          region: '{{region}}'
      - name: create-sfdc-user
        type: call
        call: salesforce.create-user
        with:
          name: '{{advisor_name}}'
          email: '{{email}}'
          profile: Financial_Advisor
          license: '{{license_number}}'
      - name: open-setup-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New advisor setup: {{advisor_name}}'
          category: onboarding
          description: 'Provision systems access for {{advisor_name}} ({{email}}). License: {{license_number}}. Region: {{region}}.'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{email}}'
          text: Welcome to Manulife, {{advisor_name}}! Your Salesforce access is ready and your setup ticket {{open-setup-ticket.number}} is in progress.
  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: create-worker
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: users
      path: /sobjects/User
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → advisor-onboarding-orchestrator.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 2
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-2
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → manulife-workflow-2.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 13
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-13
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → manulife-workflow-13.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 22
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-22
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://manulife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → manulife-workflow-22.yml

Automates policy renewal by checking expiring policies, generating renewal quotes, updating Salesforce records, and sending renewal notices via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Policy Renewal Pipeline
  description: Automates policy renewal by checking expiring policies, generating renewal quotes, updating Salesforce records, and sending renewal notices via Microsoft Outlook.
  tags:
  - insurance
  - renewal
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: policy-renewal
    port: 8080
    tools:
    - name: process-renewal
      description: 'Process a policy renewal: generate quote, update CRM, and send notice.'
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The expiring policy number.
      - name: renewal_date
        in: body
        type: string
        description: Renewal effective date in YYYY-MM-DD format.
      steps:
      - name: get-policy
        type: call
        call: policy-admin.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: generate-renewal-quote
        type: call
        call: rating-engine.get-renewal-quote
        with:
          policy_number: '{{policy_number}}'
          renewal_date: '{{renewal_date}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-opportunity
        with:
          policy_number: '{{policy_number}}'
          stage: Renewal
          amount: '{{generate-renewal-quote.premium}}'
      - name: send-notice
        type: call
        call: outlook.send-email
        with:
          to: '{{get-policy.policyholder_email}}'
          subject: 'Policy Renewal Notice: {{policy_number}}'
          body: 'Your policy {{policy_number}} is due for renewal on {{renewal_date}}. New premium: {{generate-renewal-quote.premium}}. Coverage: {{get-policy.coverage_amount}}.'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.manulife.com/policy/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: rating-engine
    baseUri: https://api.manulife.com/rating/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: renewal-quotes
      path: /renewal-quotes
      operations:
      - name: get-renewal-quote
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → policy-renewal-pipeline.yml

Creates and manages insurance policy knowledge articles in Confluence for advisors and customer service representatives.

naftiko: '0.5'
info:
  label: Confluence Policy Knowledge Base
  description: Creates and manages insurance policy knowledge articles in Confluence for advisors and customer service representatives.
  tags:
  - knowledge-management
  - confluence
  - policy-documentation
capability:
  exposes:
  - type: mcp
    namespace: policy-knowledge
    port: 8080
    tools:
    - name: create-policy-article
      description: Create a policy knowledge article in Confluence.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Article title.
      - name: content
        in: body
        type: string
        description: Article content.
      - name: space_key
        in: body
        type: string
        description: Confluence space key.
      call: confluence.create-page
      with:
        space_key: '{{space_key}}'
        title: '{{title}}'
        content: '{{content}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://manulife.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → confluence-policy-knowledge-base.yml

Creates Zendesk support tickets for policyholder inquiries, enriching with policy data from the admin system for faster resolution.

naftiko: '0.5'
info:
  label: Zendesk Customer Support Pipeline
  description: Creates Zendesk support tickets for policyholder inquiries, enriching with policy data from the admin system for faster resolution.
  tags:
  - customer-support
  - zendesk
  - policy-management
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: create-support-ticket
      description: Create a Zendesk ticket enriched with policy details.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: policy_number
        in: body
        type: string
        description: Policy number for context.
      - name: subject
        in: body
        type: string
        description: Support request subject.
      steps:
      - name: get-policy
        type: call
        call: policy-admin.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: create-ticket
        type: call
        call: zendesk.create-ticket
        with:
          requester_email: '{{customer_email}}'
          subject: '{{subject}}'
          description: 'Policy: {{policy_number}} | Product: {{get-policy.product_type}} | Status: {{get-policy.status}} | Premium: {{get-policy.premium}}'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.manulife.com/policy/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: zendesk
    baseUri: https://manulife.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets
      operations:
      - name: create-ticket
        method: POST
Open in Framework → View in Fleet → zendesk-customer-support-pipeline.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 23
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-23
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-23
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → manulife-workflow-23.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 35
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-35
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-35
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → manulife-workflow-35.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 21
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-21
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-21
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → manulife-workflow-21.yml

Triggers risk model execution in Azure Databricks for portfolio risk assessment and Value-at-Risk calculations.

naftiko: '0.5'
info:
  label: Azure Databricks Risk Model Runner
  description: Triggers risk model execution in Azure Databricks for portfolio risk assessment and Value-at-Risk calculations.
  tags:
  - risk-management
  - azure-databricks
  - portfolio
capability:
  exposes:
  - type: mcp
    namespace: risk-modeling
    port: 8080
    tools:
    - name: run-risk-model
      description: Execute a risk model in Azure Databricks for portfolio analysis.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Risk model name (VaR, CVaR, stress-test).
      - name: portfolio_id
        in: body
        type: string
        description: Portfolio identifier.
      call: databricks.run-job
      with:
        job_name: '{{model_name}}'
        parameters: portfolio_id={{portfolio_id}}
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://adb-manulife.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: jobs
      path: /jobs/run-now
      operations:
      - name: run-job
        method: POST
Open in Framework → View in Fleet → azure-databricks-risk-model-runner.yml

Creates and tracks insurance product marketing campaigns in HubSpot, targeting segmented audiences for life, health, and wealth products.

naftiko: '0.5'
info:
  label: HubSpot Insurance Marketing Campaign
  description: Creates and tracks insurance product marketing campaigns in HubSpot, targeting segmented audiences for life, health, and wealth products.
  tags:
  - marketing
  - hubspot
  - campaigns
capability:
  exposes:
  - type: mcp
    namespace: marketing-campaigns
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Retrieve campaign performance metrics from HubSpot.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: HubSpot campaign ID.
      call: hubspot.get-campaign
      with:
        campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: campaigns
      path: /marketing/v3/campaigns/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
Open in Framework → View in Fleet → hubspot-insurance-marketing-campaign.yml

Refreshes the Power BI claims analytics dashboard with latest claims data for management reporting.

naftiko: '0.5'
info:
  label: Power BI Claims Analytics Dashboard
  description: Refreshes the Power BI claims analytics dashboard with latest claims data for management reporting.
  tags:
  - reporting
  - power-bi
  - claims
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: claims-bi
    port: 8080
    tools:
    - name: refresh-claims-dashboard
      description: Trigger a Power BI dataset refresh for claims analytics.
      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
Open in Framework → View in Fleet → power-bi-claims-analytics-dashboard.yml

Retrieves a client's wealth management portfolio summary including asset allocation, performance, and market value from the Manulife investment platform.

naftiko: '0.5'
info:
  label: Wealth Portfolio Summary
  description: Retrieves a client's wealth management portfolio summary including asset allocation, performance, and market value from the Manulife investment platform.
  tags:
  - wealth-management
  - portfolio
  - investments
capability:
  exposes:
  - type: mcp
    namespace: wealth-portfolio
    port: 8080
    tools:
    - name: get-portfolio-summary
      description: Retrieve a client's investment portfolio summary.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The wealth management client ID.
      call: wealth-platform.get-portfolio
      with:
        client_id: '{{client_id}}'
  consumes:
  - type: http
    namespace: wealth-platform
    baseUri: https://api.manulife.com/wealth/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: portfolios
      path: /clients/{{client_id}}/portfolio
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-portfolio
        method: GET
Open in Framework → View in Fleet → wealth-portfolio-summary.yml

Sends targeted client newsletters via MailChimp for wealth management updates, market insights, and product announcements.

naftiko: '0.5'
info:
  label: MailChimp Client Newsletter Manager
  description: Sends targeted client newsletters via MailChimp for wealth management updates, market insights, and product announcements.
  tags:
  - marketing
  - mailchimp
  - client-communications
capability:
  exposes:
  - type: mcp
    namespace: client-newsletters
    port: 8080
    tools:
    - name: send-client-newsletter
      description: Send a MailChimp newsletter to client segments.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: Client segment name.
      - name: subject_line
        in: body
        type: string
        description: Email subject.
      steps:
      - name: get-segment
        type: call
        call: salesforce.get-segment
        with:
          segment: '{{segment_name}}'
      - name: send-campaign
        type: call
        call: mailchimp.send-campaign
        with:
          subject: '{{subject_line}}'
          recipients: '{{get-segment.emails}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: get-segment
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
Open in Framework → View in Fleet → mailchimp-client-newsletter-manager.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 20
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-20
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://manulife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → manulife-workflow-20.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 34
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-34
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://manulife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → manulife-workflow-34.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 18
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-18
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://manulife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → manulife-workflow-18.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 30
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-30
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://manulife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → manulife-workflow-30.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 24
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-24
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-24
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → manulife-workflow-24.yml

Retrieves the current status of an insurance claim by claim number, including adjuster assignment, payout amount, and timeline.

naftiko: '0.5'
info:
  label: Claims Status Lookup
  description: Retrieves the current status of an insurance claim by claim number, including adjuster assignment, payout amount, and timeline.
  tags:
  - claims
  - insurance
  - claims-management
capability:
  exposes:
  - type: mcp
    namespace: claims-status
    port: 8080
    tools:
    - name: get-claim-status
      description: Look up a claim by claim number and return status, adjuster, and payout details.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The insurance claim number.
      call: claims-system.get-claim
      with:
        claim_number: '{{claim_number}}'
  consumes:
  - type: http
    namespace: claims-system
    baseUri: https://api.manulife.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: claims
      path: /claims/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim
        method: GET
Open in Framework → View in Fleet → claims-status-lookup.yml

Retrieves client details from Salesforce including contact information, policy history, and relationship status for advisor use.

naftiko: '0.5'
info:
  label: Salesforce Client Record Lookup
  description: Retrieves client details from Salesforce including contact information, policy history, and relationship status for advisor use.
  tags:
  - crm
  - salesforce
  - client-management
capability:
  exposes:
  - type: mcp
    namespace: client-crm
    port: 8080
    tools:
    - name: get-client-record
      description: Look up a client record in Salesforce by account ID.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID.
      call: salesforce.get-account
      with:
        account_id: '{{account_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-client-record-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 9
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-9
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-9
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → manulife-workflow-9.yml

Monitors Jira project boards for regulatory compliance initiatives, tracking audit findings, remediation tasks, and deadlines.

naftiko: '0.5'
info:
  label: Jira Compliance Project Tracker
  description: Monitors Jira project boards for regulatory compliance initiatives, tracking audit findings, remediation tasks, and deadlines.
  tags:
  - compliance
  - jira
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: compliance-projects
    port: 8080
    tools:
    - name: get-compliance-issues
      description: Retrieve open compliance issues from Jira.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      call: jira.search-issues
      with:
        project: '{{project_key}}'
        status: open
  consumes:
  - type: http
    namespace: jira
    baseUri: https://manulife.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search-issues
        method: POST
Open in Framework → View in Fleet → jira-compliance-project-tracker.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 8
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-8
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://manulife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → manulife-workflow-8.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 25
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-25
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → manulife-workflow-25.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 31
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-31
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-31
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-31.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 19
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-19
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-19
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-19.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 27
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-27
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-27
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → manulife-workflow-27.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 33
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-33
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-33
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → manulife-workflow-33.yml

Routes compliance alerts to the appropriate Slack channel based on alert type and jurisdiction for rapid response.

naftiko: '0.5'
info:
  label: Slack Compliance Alert Router
  description: Routes compliance alerts to the appropriate Slack channel based on alert type and jurisdiction for rapid response.
  tags:
  - compliance
  - slack
  - alerting
capability:
  exposes:
  - type: mcp
    namespace: compliance-alerts
    port: 8080
    tools:
    - name: route-compliance-alert
      description: Route a compliance alert to the correct Slack channel.
      inputParameters:
      - name: alert_type
        in: body
        type: string
        description: Alert type (aml, privacy, suitability, regulatory-change).
      - name: jurisdiction
        in: body
        type: string
        description: Jurisdiction (canada, us, asia).
      - name: message
        in: body
        type: string
        description: Alert message.
      call: slack.post-message
      with:
        channel: compliance-{{alert_type}}-{{jurisdiction}}
        text: '[{{alert_type}}] {{message}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-compliance-alert-router.yml

Calculates an underwriting risk score for a new insurance application using the Manulife underwriting engine based on applicant demographics and health data.

naftiko: '0.5'
info:
  label: Underwriting Risk Score Calculator
  description: Calculates an underwriting risk score for a new insurance application using the Manulife underwriting engine based on applicant demographics and health data.
  tags:
  - underwriting
  - risk-assessment
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: underwriting
    port: 8080
    tools:
    - name: calculate-risk-score
      description: Calculate an underwriting risk score for an insurance application.
      inputParameters:
      - name: applicant_id
        in: body
        type: string
        description: The applicant identifier.
      - name: product_type
        in: body
        type: string
        description: Insurance product type (life, health, disability).
      - name: age
        in: body
        type: integer
        description: Applicant age.
      - name: health_class
        in: body
        type: string
        description: Health classification (preferred, standard, substandard).
      call: underwriting-engine.calculate-score
      with:
        applicant_id: '{{applicant_id}}'
        product: '{{product_type}}'
        age: '{{age}}'
        health_class: '{{health_class}}'
  consumes:
  - type: http
    namespace: underwriting-engine
    baseUri: https://api.manulife.com/underwriting/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: risk-scores
      path: /risk-scores
      operations:
      - name: calculate-score
        method: POST
Open in Framework → View in Fleet → underwriting-risk-score-calculator.yml

Monitors GitHub Actions CI workflows for Manulife digital applications, notifying developers via Slack on build failures.

naftiko: '0.5'
info:
  label: GitHub Actions CI Pipeline Monitor
  description: Monitors GitHub Actions CI workflows for Manulife digital applications, notifying developers via Slack on build failures.
  tags:
  - devops
  - github-actions
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: ci-monitor
    port: 8080
    tools:
    - name: monitor-ci
      description: Check GitHub Actions workflow status and alert on failures.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository (org/repo).
      - name: workflow_name
        in: body
        type: string
        description: Workflow file name.
      steps:
      - name: get-runs
        type: call
        call: github.get-workflow-runs
        with:
          repo: '{{repo_name}}'
          workflow: '{{workflow_name}}'
      - name: notify-failure
        type: call
        call: slack.post-message
        with:
          channel: ci-alerts
          text: 'CI {{get-runs.latest_run.conclusion}} for {{repo_name}}/{{workflow_name}}. Commit: {{get-runs.latest_run.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}}/runs
      inputParameters:
      - name: repo
        in: path
      - name: workflow
        in: path
      operations:
      - name: get-workflow-runs
        method: GET
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-actions-ci-pipeline-monitor.yml

Monitors Cloudflare WAF events for Manulife web properties, detecting and reporting blocked threats.

naftiko: '0.5'
info:
  label: Cloudflare Web Application Firewall Monitor
  description: Monitors Cloudflare WAF events for Manulife web properties, detecting and reporting blocked threats.
  tags:
  - security
  - cloudflare
  - web-application-firewall
capability:
  exposes:
  - type: mcp
    namespace: waf-monitor
    port: 8080
    tools:
    - name: get-waf-events
      description: Retrieve WAF blocked events from Cloudflare.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.get-waf-events
      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: waf-events
      path: /zones/{{zone_id}}/firewall/events
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-waf-events
        method: GET
Open in Framework → View in Fleet → cloudflare-web-application-firewall-monitor.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 32
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-32
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-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: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://manulife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → manulife-workflow-32.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: '0.5'
info:
  label: Manulife Workflow 26
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: manulife-workflow-26
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: manulife-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: manulife-ops
    baseUri: https://api.manulife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → manulife-workflow-26.yml

Monitors Manulife digital application health via Dynatrace, tracking response times, error rates, and user sessions.

naftiko: '0.5'
info:
  label: Dynatrace Application Monitor
  description: Monitors Manulife digital application health via Dynatrace, tracking response times, error rates, and user sessions.
  tags:
  - monitoring
  - dynatrace
  - application-health
capability:
  exposes:
  - type: mcp
    namespace: app-monitoring
    port: 8080
    tools:
    - name: get-app-health
      description: Retrieve application health metrics from Dynatrace.
      inputParameters:
      - name: application_id
        in: body
        type: string
        description: Dynatrace application entity ID.
      call: dynatrace.get-metrics
      with:
        entity_id: '{{application_id}}'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://manulife.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: metrics
      path: /metrics/query
      inputParameters:
      - name: entity_id
        in: query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → dynatrace-application-monitor.yml

Generates Microsoft Excel actuarial reports with loss ratio, reserving, and experience data from SAP HANA for quarterly board presentations.

naftiko: '0.5'
info:
  label: Microsoft Excel Actuarial Report Builder
  description: Generates Microsoft Excel actuarial reports with loss ratio, reserving, and experience data from SAP HANA for quarterly board presentations.
  tags:
  - actuarial
  - microsoft-excel
  - sap-hana
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: actuarial-reports
    port: 8080
    tools:
    - name: build-actuarial-report
      description: Generate an actuarial Excel report from SAP HANA data and email to stakeholders.
      inputParameters:
      - name: report_type
        in: body
        type: string
        description: Report type (loss-ratio, ibnr, experience-study).
      - name: period
        in: body
        type: string
        description: Reporting period.
      - name: recipient_email
        in: body
        type: string
        description: Recipient email.
      steps:
      - name: get-data
        type: call
        call: sap-hana.run-query
        with:
          report_type: '{{report_type}}'
          period: '{{period}}'
      - name: send-report
        type: call
        call: outlook.send-email
        with:
          to: '{{recipient_email}}'
          subject: 'Actuarial Report: {{report_type}} - {{period}}'
          body: 'Attached actuarial {{report_type}} report for {{period}}. Summary: {{get-data.summary}}.'
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://manulife-hana.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: reports
      path: /ACTUARIAL_SRV/{{report_type}}
      inputParameters:
      - name: report_type
        in: path
      operations:
      - name: run-query
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → microsoft-excel-actuarial-report-builder.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 10
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-10
      path: /data-10/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-10
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-10.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 11
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-11
      path: /data-11/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-11
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-11.yml

Creates ServiceNow incidents for IT issues at Manulife offices, including system outages, application errors, and access requests.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Creator
  description: Creates ServiceNow incidents for IT issues at Manulife offices, including system outages, application errors, and access requests.
  tags:
  - it-support
  - servicenow
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: it-incidents
    port: 8080
    tools:
    - name: create-incident
      description: Create a new ServiceNow incident for IT support.
      inputParameters:
      - name: short_description
        in: body
        type: string
        description: Brief summary of the incident.
      - name: category
        in: body
        type: string
        description: Incident category.
      - name: priority
        in: body
        type: string
        description: Priority level.
      call: servicenow.create-incident
      with:
        short_description: '{{short_description}}'
        category: '{{category}}'
        priority: '{{priority}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://manulife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → servicenow-it-incident-creator.yml

Retrieves digital channel performance from Google Analytics for Manulife.com, tracking customer acquisition and conversion metrics.

naftiko: '0.5'
info:
  label: Google Analytics Digital Channel Tracker
  description: Retrieves digital channel performance from Google Analytics for Manulife.com, tracking customer acquisition and conversion metrics.
  tags:
  - marketing
  - google-analytics
  - digital-channels
capability:
  exposes:
  - type: mcp
    namespace: digital-analytics
    port: 8080
    tools:
    - name: get-channel-performance
      description: Retrieve digital channel performance from Google Analytics.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: ga.get-report
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → google-analytics-digital-channel-tracker.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 13
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-13
      path: /data-13/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-13
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-13.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 12
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-12
      path: /data-12/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-12.yml

Queries SAP HANA for financial reporting data including general ledger balances, investment income, and reserve calculations.

naftiko: '0.5'
info:
  label: SAP HANA Financial Data Query
  description: Queries SAP HANA for financial reporting data including general ledger balances, investment income, and reserve calculations.
  tags:
  - finance
  - sap-hana
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: financial-data
    port: 8080
    tools:
    - name: query-financial-data
      description: Query SAP HANA for financial reporting data.
      inputParameters:
      - name: report_type
        in: body
        type: string
        description: Report type (gl-balances, investment-income, reserves).
      - name: period
        in: body
        type: string
        description: Reporting period (e.g., 2026-03).
      call: sap-hana.run-query
      with:
        report_type: '{{report_type}}'
        period: '{{period}}'
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://manulife-hana.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: reports
      path: /FIN_REPORTING_SRV/{{report_type}}
      inputParameters:
      - name: report_type
        in: path
      - name: period
        in: query
      operations:
      - name: run-query
        method: GET
Open in Framework → View in Fleet → sap-hana-financial-data-query.yml

Triggers a Tableau dashboard refresh for actuarial loss ratio and reserving analytics, pulling data from the data warehouse.

naftiko: '0.5'
info:
  label: Tableau Actuarial Dashboard Refresh
  description: Triggers a Tableau dashboard refresh for actuarial loss ratio and reserving analytics, pulling data from the data warehouse.
  tags:
  - actuarial
  - tableau
  - reporting
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: actuarial-dashboard
    port: 8080
    tools:
    - name: refresh-actuarial-dashboard
      description: Trigger a Tableau dataset refresh for actuarial analytics.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Tableau dataset ID.
      call: tableau.refresh-datasource
      with:
        dataset_id: '{{dataset_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://manulife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{site_id}}/datasources/{{dataset_id}}/refresh
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-datasource
        method: POST
Open in Framework → View in Fleet → tableau-actuarial-dashboard-refresh.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 8
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-8
      path: /data-8/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-8
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-8.yml

Monitors Azure DevOps build pipelines for Manulife digital insurance applications, checking build health and deployment status.

naftiko: '0.5'
info:
  label: Azure DevOps Deployment Pipeline
  description: Monitors Azure DevOps build pipelines for Manulife digital insurance applications, checking build health and deployment status.
  tags:
  - devops
  - azure-devops
  - deployments
capability:
  exposes:
  - type: mcp
    namespace: deployment-monitor
    port: 8080
    tools:
    - name: get-build-status
      description: Check latest build status for an Azure DevOps pipeline.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Azure DevOps project name.
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline definition ID.
      call: azuredevops.get-latest-build
      with:
        project: '{{project}}'
        definition_id: '{{pipeline_id}}'
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/manulife
    authentication:
      type: basic
      username: ''
      password: $secrets.azuredevops_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: definition_id
        in: query
      operations:
      - name: get-latest-build
        method: GET
Open in Framework → View in Fleet → azure-devops-deployment-pipeline.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 15
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-15
      path: /data-15/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-15.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 14
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-14
      path: /data-14/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-14
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-14.yml

Retrieves operational data for Manulife insurance workflows.

naftiko: '0.5'
info:
  label: Manulife Data Lookup 9
  description: Retrieves operational data for Manulife insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: manulife-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for Manulife insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: manulife-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: manulife-data
    baseUri: https://api.manulife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: data-9
      path: /data-9/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → manulife-data-lookup-9.yml

Processes group benefits enrollment by creating employee records in the benefits system, updating Salesforce group account, and sending confirmation via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Group Benefits Enrollment Processor
  description: Processes group benefits enrollment by creating employee records in the benefits system, updating Salesforce group account, and sending confirmation via Microsoft Outlook.
  tags:
  - group-benefits
  - enrollment
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: benefits-enrollment
    port: 8080
    tools:
    - name: process-enrollment
      description: Process a group benefits enrollment for an employee.
      inputParameters:
      - name: group_policy_number
        in: body
        type: string
        description: The group policy number.
      - name: employee_name
        in: body
        type: string
        description: Employee name.
      - name: employee_email
        in: body
        type: string
        description: Employee email.
      - name: plan_selection
        in: body
        type: string
        description: Selected benefit plan.
      steps:
      - name: create-enrollment
        type: call
        call: benefits-system.enroll
        with:
          group_policy: '{{group_policy_number}}'
          employee: '{{employee_name}}'
          plan: '{{plan_selection}}'
      - name: update-group-account
        type: call
        call: salesforce.update-group-account
        with:
          policy_number: '{{group_policy_number}}'
          enrolled_count_delta: '1'
      - name: send-confirmation
        type: call
        call: outlook.send-email
        with:
          to: '{{employee_email}}'
          subject: Benefits enrollment confirmation
          body: 'Welcome {{employee_name}}! You have been enrolled in {{plan_selection}} under group policy {{group_policy_number}}. Your member ID: {{create-enrollment.member_id}}.'
  consumes:
  - type: http
    namespace: benefits-system
    baseUri: https://api.manulife.com/benefits/v1
    authentication:
      type: bearer
      token: $secrets.manulife_api_token
    resources:
    - name: enrollments
      path: /enrollments
      operations:
      - name: enroll
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://manulife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: group-accounts
      path: /sobjects/Group_Policy__c
      operations:
      - name: update-group-account
        method: PATCH
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → group-benefits-enrollment-processor.yml

Checks the completion status of a SailPoint identity access review campaign, returning progress percentage and pending reviewers.

naftiko: '0.5'
info:
  label: SailPoint Access Review Status
  description: Checks the completion status of a SailPoint identity access review campaign, returning progress percentage and pending reviewers.
  tags:
  - security
  - identity-governance
  - sailpoint
capability:
  exposes:
  - type: mcp
    namespace: sailpoint-review
    port: 8080
    tools:
    - name: get-review-status
      description: Given a SailPoint access review campaign ID, return its completion percentage, total items, and pending reviewer count.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: SailPoint access review campaign ID.
      call: sailpoint-api.get-campaign
      with:
        id: '{{campaign_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: completion_pct
        type: string
        mapping: $.completionPercentage
  consumes:
  - type: http
    namespace: sailpoint-api
    baseUri: https://morganstanley.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: campaigns
      path: /campaigns/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-campaign
        method: GET
Open in Framework → View in Fleet → sailpoint-access-review-status.yml

When a Salesforce opportunity is marked Closed Won, logs the deal to Snowflake, updates the leaderboard in Power BI, and posts a celebration to the sales Slack channel.

naftiko: '0.5'
info:
  label: Salesforce Deal Closure Celebration Notification
  description: When a Salesforce opportunity is marked Closed Won, logs the deal to Snowflake, updates the leaderboard in Power BI, and posts a celebration to the sales Slack channel.
  tags:
  - sales
  - crm
  - salesforce
  - snowflake
  - power-bi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: deal-celebration
    port: 8080
    tools:
    - name: celebrate-deal-closure
      description: Given a Salesforce opportunity ID that closed won, log to Snowflake and celebrate in Slack.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: Salesforce opportunity ID.
      steps:
      - name: get-deal
        type: call
        call: sfdc-deal.get-opportunity
        with:
          opp_id: '{{opportunity_id}}'
      - name: log-to-snowflake
        type: call
        call: snowflake-deal.insert-record
        with:
          table: SALES.CLOSED_WON_DEALS
          opp_id: '{{opportunity_id}}'
          amount: '{{get-deal.amount}}'
          owner: '{{get-deal.owner_name}}'
      - name: celebrate
        type: call
        call: slack-sales.post-message
        with:
          channel: $secrets.sales_celebration_channel
          text: 'Deal Closed Won! {{get-deal.name}} - ${{get-deal.amount}} by {{get-deal.owner_name}}. Account: {{get-deal.account_name}}'
  consumes:
  - type: http
    namespace: sfdc-deal
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opp_id}}
      inputParameters:
      - name: opp_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: snowflake-deal
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: slack-sales
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-deal-closure-celebration-notification.yml

Executes regulatory capital calculations in Snowflake, generates a formatted report, and distributes to stakeholders via Microsoft Teams and Confluence.

naftiko: '0.5'
info:
  label: Snowflake Regulatory Capital Report
  description: Executes regulatory capital calculations in Snowflake, generates a formatted report, and distributes to stakeholders via Microsoft Teams and Confluence.
  tags:
  - regulatory
  - capital
  - snowflake
  - microsoft-teams
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: reg-capital
    port: 8080
    tools:
    - name: generate-capital-report
      description: Given a reporting date, run capital calculations in Snowflake and distribute the report.
      inputParameters:
      - name: reporting_date
        in: body
        type: string
        description: Reporting date in YYYY-MM-DD format.
      steps:
      - name: run-calculations
        type: call
        call: snowflake-cap.execute-query
        with:
          statement: CALL REGULATORY.CALCULATE_CAPITAL_RATIOS('{{reporting_date}}')
      - name: publish-report
        type: call
        call: confluence-cap.create-page
        with:
          space: REGULATORY
          title: Capital Report - {{reporting_date}}
          body: 'CET1 Ratio: {{run-calculations.cet1_ratio}}

            Tier 1: {{run-calculations.tier1_ratio}}

            Total Capital: {{run-calculations.total_capital_ratio}}'
      - name: notify-stakeholders
        type: call
        call: teams-cap.send-message
        with:
          channel_id: $secrets.regulatory_teams_channel
          text: 'Regulatory Capital Report for {{reporting_date}} published. CET1: {{run-calculations.cet1_ratio}}%. View in Confluence.'
  consumes:
  - type: http
    namespace: snowflake-cap
    baseUri: https://morganstanley.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-cap
    baseUri: https://morganstanley.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: teams-cap
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/$secrets.regulatory_team_id/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → snowflake-regulatory-capital-report.yml

Creates a DocuSign envelope for required client documents, tracks collection status in Salesforce, and sends follow-up reminders via Microsoft Teams.

naftiko: '0.5'
info:
  label: Client Document Collection Workflow
  description: Creates a DocuSign envelope for required client documents, tracks collection status in Salesforce, and sends follow-up reminders via Microsoft Teams.
  tags:
  - client-onboarding
  - document-management
  - docusign
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: doc-collection
    port: 8080
    tools:
    - name: initiate-document-collection
      description: Given a Salesforce opportunity ID and document template, create a DocuSign envelope and track in Salesforce.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: Salesforce opportunity ID.
      - name: template_id
        in: body
        type: string
        description: DocuSign template ID for required documents.
      - name: client_email
        in: body
        type: string
        description: Client email address for signing.
      steps:
      - name: get-opportunity
        type: call
        call: sfdc-doc.get-opportunity
        with:
          opp_id: '{{opportunity_id}}'
      - name: create-envelope
        type: call
        call: docusign-doc.create-envelope
        with:
          template_id: '{{template_id}}'
          signer_email: '{{client_email}}'
          signer_name: '{{get-opportunity.contact_name}}'
      - name: update-opportunity
        type: call
        call: sfdc-doc.update-opportunity
        with:
          opp_id: '{{opportunity_id}}'
          envelope_id: '{{create-envelope.envelopeId}}'
          doc_status: Sent
  consumes:
  - type: http
    namespace: sfdc-doc
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opp_id}}
      inputParameters:
      - name: opp_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: docusign-doc
    baseUri: https://na4.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/default/envelopes
      operations:
      - name: create-envelope
        method: POST
Open in Framework → View in Fleet → client-document-collection-workflow.yml

Retrieves pending invoices from SAP, creates approval tasks in ServiceNow, and notifies the finance team via Microsoft Teams when invoices exceed threshold.

naftiko: '0.5'
info:
  label: SAP Invoice Approval and Payment Routing
  description: Retrieves pending invoices from SAP, creates approval tasks in ServiceNow, and notifies the finance team via Microsoft Teams when invoices exceed threshold.
  tags:
  - finance
  - procurement
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: invoice-approval
    port: 8080
    tools:
    - name: route-invoice-for-approval
      description: Given an SAP invoice number, retrieve details, create a ServiceNow approval task, and notify finance via Teams.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP invoice document number.
      steps:
      - name: get-invoice
        type: call
        call: sap-invoice.get-document
        with:
          document_number: '{{invoice_number}}'
      - name: create-approval
        type: call
        call: snow-approval.create-task
        with:
          short_description: 'Invoice approval: {{invoice_number}} - ${{get-invoice.amount}}'
          description: 'Vendor: {{get-invoice.vendor_name}}

            Amount: ${{get-invoice.amount}}

            Cost Center: {{get-invoice.cost_center}}'
          assignment_group: Finance_AP
      - name: notify-finance
        type: call
        call: teams-finance.send-message
        with:
          channel_id: $secrets.finance_teams_channel
          text: 'Invoice {{invoice_number}} from {{get-invoice.vendor_name}} (${{get-invoice.amount}}) requires approval. ServiceNow: {{create-approval.number}}'
  consumes:
  - type: http
    namespace: sap-invoice
    baseUri: https://morganstanley-sap.s4hana.cloud.sap/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('{{document_number}}')
      inputParameters:
      - name: document_number
        in: path
      operations:
      - name: get-document
        method: GET
  - type: http
    namespace: snow-approval
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: teams-finance
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/$secrets.finance_team_id/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-invoice-approval-and-payment-routing.yml

Monitors Datadog for latency threshold breaches on trading APIs, triggers a PagerDuty on-call alert, and posts a diagnostic summary to the Trading Operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Datadog Trading Platform Observability Alert
  description: Monitors Datadog for latency threshold breaches on trading APIs, triggers a PagerDuty on-call alert, and posts a diagnostic summary to the Trading Operations Microsoft Teams channel.
  tags:
  - observability
  - trading
  - datadog
  - pagerduty
  - microsoft-teams
  - latency
  - reliability
capability:
  exposes:
  - type: mcp
    namespace: trading-observability
    port: 8080
    tools:
    - name: handle-latency-breach
      description: Given a Datadog monitor ID detecting a trading API latency breach, retrieve monitor details, trigger a PagerDuty alert for the trading on-call team, and post diagnostics to the TradingOps Teams channel.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Datadog monitor ID that detected the latency threshold breach.
      - name: service_name
        in: body
        type: string
        description: Name of the trading service exhibiting latency.
      steps:
      - name: get-monitor-details
        type: call
        call: datadog-trading.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: page-oncall
        type: call
        call: pagerduty-trading.create-incident
        with:
          title: 'Latency breach: {{service_name}} — {{get-monitor-details.current_value}}ms'
          description: 'Monitor: {{monitor_id}}

            Threshold exceeded: {{get-monitor-details.threshold}}ms'
      - name: post-diagnostics
        type: call
        call: msteams-trading.post-channel-message
        with:
          channel_id: TradingOps
          text: 'Latency alert: {{service_name}} at {{get-monitor-details.current_value}}ms (threshold {{get-monitor-details.threshold}}ms). PD: {{page-oncall.incident_id}}'
  consumes:
  - type: http
    namespace: datadog-trading
    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-trading
    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-trading
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-trading-platform-observability-alert.yml

Syncs employee performance goals from Workday to Jira epics for engineering teams and notifies managers via Microsoft Teams when goals are updated.

naftiko: '0.5'
info:
  label: Workday Performance Goal Sync to Jira
  description: Syncs employee performance goals from Workday to Jira epics for engineering teams and notifies managers via Microsoft Teams when goals are updated.
  tags:
  - hr
  - performance
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: goal-sync
    port: 8080
    tools:
    - name: sync-goals-to-jira
      description: Given a Workday employee ID, sync their performance goals to Jira epics and notify the manager.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-goals
        type: call
        call: workday-goals.get-employee-goals
        with:
          worker_id: '{{employee_id}}'
      - name: create-epic
        type: call
        call: jira-goals.create-issue
        with:
          project_key: ENG
          issuetype: Epic
          summary: '{{get-goals.goal_title}}'
          description: 'Workday Goal: {{get-goals.goal_description}}

            Due: {{get-goals.due_date}}'
      - name: notify-manager
        type: call
        call: teams-goals.send-message
        with:
          recipient_upn: '{{get-goals.manager_email}}'
          text: 'Performance goals synced for {{get-goals.employee_name}}. Jira epic: {{create-epic.key}}'
  consumes:
  - type: http
    namespace: workday-goals
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: goals
      path: /morganstanley/workers/{{worker_id}}/goals
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-employee-goals
        method: GET
  - type: http
    namespace: jira-goals
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: teams-goals
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-performance-goal-sync-to-jira.yml

Fetches approved job requisitions from Workday Recruiting, creates corresponding Salesforce opportunity records for recruiting pipeline tracking, and publishes job postings to LinkedIn.

naftiko: '0.5'
info:
  label: Workday Job Requisition to Salesforce Recruiting
  description: Fetches approved job requisitions from Workday Recruiting, creates corresponding Salesforce opportunity records for recruiting pipeline tracking, and publishes job postings to LinkedIn.
  tags:
  - hr
  - recruiting
  - workday
  - salesforce
  - linkedin
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: talent-pipeline
    port: 8080
    tools:
    - name: sync-requisitions-to-salesforce
      description: Given a Workday requisition status filter, fetch approved requisitions, create Salesforce opportunity records for each, and publish job postings to LinkedIn.
      inputParameters:
      - name: requisition_status
        in: body
        type: string
        description: Workday requisition status to filter by, e.g. 'Approved'.
      - name: linkedin_org_id
        in: body
        type: string
        description: LinkedIn organization ID to publish job postings to.
      steps:
      - name: get-requisitions
        type: call
        call: workday-talent.list-requisitions
        with:
          status: '{{requisition_status}}'
      - name: create-sf-opportunity
        type: call
        call: salesforce-talent.create-opportunity
        with:
          opportunities: '{{get-requisitions.requisitions}}'
      - name: publish-linkedin-jobs
        type: call
        call: linkedin-talent.create-job-posting
        with:
          organization_id: '{{linkedin_org_id}}'
          jobs: '{{get-requisitions.requisitions}}'
  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: job-requisitions
      path: /morganstanley/jobRequisitions
      inputParameters:
      - name: status
        in: query
      operations:
      - name: list-requisitions
        method: GET
  - type: http
    namespace: salesforce-talent
    baseUri: https://morganstanley.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: linkedin-talent
    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
Open in Framework → View in Fleet → workday-job-requisition-to-salesforce-recruiting.yml

Pulls credit ratings from Bloomberg, calculates exposure metrics in Snowflake, and generates a risk assessment summary stored in Confluence for the credit committee.

naftiko: '0.5'
info:
  label: Bloomberg Credit Risk Assessment Workflow
  description: Pulls credit ratings from Bloomberg, calculates exposure metrics in Snowflake, and generates a risk assessment summary stored in Confluence for the credit committee.
  tags:
  - risk-management
  - credit
  - bloomberg
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: credit-risk
    port: 8080
    tools:
    - name: assess-credit-risk
      description: Given a counterparty identifier, pull credit data and generate a risk assessment.
      inputParameters:
      - name: counterparty_id
        in: body
        type: string
        description: Counterparty identifier.
      steps:
      - name: get-credit-ratings
        type: call
        call: bloomberg-cr.get-ratings
        with:
          entity: '{{counterparty_id}}'
      - name: calculate-exposure
        type: call
        call: snowflake-cr.execute-query
        with:
          statement: SELECT total_exposure, net_exposure, collateral_value FROM risk.counterparty_exposure WHERE counterparty_id = '{{counterparty_id}}'
      - name: publish-assessment
        type: call
        call: confluence-cr.create-page
        with:
          space: CREDIT
          title: 'Credit Assessment: {{counterparty_id}}'
          body: 'Rating: {{get-credit-ratings.rating}}

            Total Exposure: {{calculate-exposure.total_exposure}}

            Net Exposure: {{calculate-exposure.net_exposure}}'
  consumes:
  - type: http
    namespace: bloomberg-cr
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: ratings
      path: /credit-ratings/{{entity}}
      inputParameters:
      - name: entity
        in: path
      operations:
      - name: get-ratings
        method: GET
  - type: http
    namespace: snowflake-cr
    baseUri: https://morganstanley.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-cr
    baseUri: https://morganstanley.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → bloomberg-credit-risk-assessment-workflow.yml

Processes Okta group access requests from employees, routes approval through Jira, applies group membership on approval, and audits the change in Snowflake.

naftiko: '0.5'
info:
  label: Okta Privileged Access Request Workflow
  description: Processes Okta group access requests from employees, routes approval through Jira, applies group membership on approval, and audits the change in Snowflake.
  tags:
  - identity
  - security
  - okta
  - jira
  - snowflake
  - access-management
  - approval
capability:
  exposes:
  - type: mcp
    namespace: access-requests
    port: 8080
    tools:
    - name: process-access-request
      description: Given an employee Okta user ID and requested group name, create a Jira approval ticket for the access request, and upon approval add the user to the Okta group and log the change in Snowflake.
      inputParameters:
      - name: okta_user_id
        in: body
        type: string
        description: Okta user ID of the employee requesting access.
      - name: requested_group
        in: body
        type: string
        description: Okta group name being requested.
      - name: business_justification
        in: body
        type: string
        description: Business justification for the access request.
      steps:
      - name: create-approval-ticket
        type: call
        call: jira-access.create-issue
        with:
          project_key: SEC
          issuetype: Task
          summary: 'Access request: {{okta_user_id}} for group {{requested_group}}'
          description: 'Justification: {{business_justification}}'
      - name: add-to-group
        type: call
        call: okta-access.add-user-to-group
        with:
          group_name: '{{requested_group}}'
          user_id: '{{okta_user_id}}'
      - name: log-access-change
        type: call
        call: snowflake-access.insert-record
        with:
          table: SECURITY.ACCESS_CHANGES
          user_id: '{{okta_user_id}}'
          group: '{{requested_group}}'
          ticket: '{{create-approval-ticket.key}}'
  consumes:
  - type: http
    namespace: jira-access
    baseUri: https://morganstanley.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: okta-access
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: group-members
      path: /groups/{{group_name}}/users
      inputParameters:
      - name: group_name
        in: path
      operations:
      - name: add-user-to-group
        method: PUT
  - type: http
    namespace: snowflake-access
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → okta-privileged-access-request-workflow.yml

When a new hire is created in Workday, provisions an Okta identity, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new employee.

naftiko: '0.5'
info:
  label: Employee Onboarding Provisioning
  description: When a new hire is created in Workday, provisions an Okta identity, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new employee.
  tags:
  - hr
  - onboarding
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and start date, provision an Okta user account, open a ServiceNow 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.
      - name: start_date
        in: body
        type: string
        description: Employee start date in ISO 8601 format.
      - name: department
        in: body
        type: string
        description: Department name for Okta group assignment and ticket routing.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: create-okta-user
        type: call
        call: okta.create-user
        with:
          firstName: '{{get-worker.first_name}}'
          lastName: '{{get-worker.last_name}}'
          email: '{{get-worker.work_email}}'
          department: '{{department}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-worker.full_name}}'
          category: hr_onboarding
          assigned_to: IT_Onboarding
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          text: 'Welcome to Morgan Stanley, {{get-worker.first_name}}! Your IT onboarding ticket: {{open-ticket.number}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /morganstanley/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: user-mail
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-onboarding-provisioning.yml

Returns account name, industry, AUM tier, and relationship manager for a Salesforce account ID, supporting client relationship review.

naftiko: '0.5'
info:
  label: Salesforce Account Detail Lookup
  description: Returns account name, industry, AUM tier, and relationship manager for a Salesforce account ID, supporting client relationship review.
  tags:
  - crm
  - client-management
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: sfdc-account
    port: 8080
    tools:
    - name: get-account-details
      description: Given a Salesforce account ID, return the account name, industry, AUM tier, and owner details.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account record ID.
      call: sfdc-acct.get-account
      with:
        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: sfdc-acct
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-account-detail-lookup.yml

Syncs deal pipeline data from Salesforce to Snowflake and refreshes the Power BI deal tracking dashboard for investment banking leadership review.

naftiko: '0.5'
info:
  label: Investment Banking Deal Pipeline Sync
  description: Syncs deal pipeline data from Salesforce to Snowflake and refreshes the Power BI deal tracking dashboard for investment banking leadership review.
  tags:
  - investment-banking
  - pipeline
  - salesforce
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: deal-pipeline
    port: 8080
    tools:
    - name: sync-deal-pipeline
      description: Extract current deal pipeline from Salesforce, load into Snowflake staging, and trigger a Power BI dashboard refresh.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter to sync (e.g., Q1-2026).
      steps:
      - name: extract-deals
        type: call
        call: sfdc-deals.query-deals
        with:
          query: SELECT Id, Name, Amount, StageName FROM Opportunity WHERE FiscalQuarter = '{{fiscal_quarter}}'
      - name: load-to-snowflake
        type: call
        call: snowflake-deals.execute-statement
        with:
          statement: CALL STAGING.LOAD_IB_DEAL_PIPELINE('{{fiscal_quarter}}')
      - name: refresh-dashboard
        type: call
        call: pbi-deals.trigger-refresh
        with:
          group_id: $secrets.pbi_ib_workspace_id
          dataset_id: $secrets.pbi_deal_pipeline_dataset_id
  consumes:
  - type: http
    namespace: sfdc-deals
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-deals
        method: GET
  - type: http
    namespace: snowflake-deals
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
  - type: http
    namespace: pbi-deals
    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
Open in Framework → View in Fleet → investment-banking-deal-pipeline-sync.yml

When a P1 incident is created in ServiceNow, automatically creates a Zoom bridge, posts details to the incident Slack channel, and pages the on-call via PagerDuty.

naftiko: '0.5'
info:
  label: ServiceNow Major Incident Bridge Setup
  description: When a P1 incident is created in ServiceNow, automatically creates a Zoom bridge, posts details to the incident Slack channel, and pages the on-call via PagerDuty.
  tags:
  - incident-management
  - major-incident
  - servicenow
  - zoom
  - slack
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: major-incident
    port: 8080
    tools:
    - name: setup-incident-bridge
      description: Given a ServiceNow incident number, create a Zoom bridge, post to Slack, and page the on-call engineer.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow P1 incident number.
      - name: service_id
        in: body
        type: string
        description: PagerDuty service ID for the affected service.
      steps:
      - name: get-incident
        type: call
        call: snow-mi.get-incident
        with:
          number: '{{incident_number}}'
      - name: create-bridge
        type: call
        call: zoom-mi.create-meeting
        with:
          topic: 'P1 Bridge: {{get-incident.short_description}}'
          duration: 120
      - name: notify-channel
        type: call
        call: slack-mi.post-message
        with:
          channel: $secrets.incident_slack_channel
          text: 'P1 INCIDENT: {{incident_number}} - {{get-incident.short_description}}

            Zoom Bridge: {{create-bridge.join_url}}

            Priority: {{get-incident.priority}}'
      - name: page-oncall
        type: call
        call: pagerduty-mi.create-incident
        with:
          service_id: '{{service_id}}'
          summary: 'P1: {{get-incident.short_description}} | Bridge: {{create-bridge.join_url}}'
          severity: critical
  consumes:
  - type: http
    namespace: snow-mi
    baseUri: https://morganstanley.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: zoom-mi
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /users/me/meetings
      operations:
      - name: create-meeting
        method: POST
  - type: http
    namespace: slack-mi
    baseUri: 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-mi
    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
Open in Framework → View in Fleet → servicenow-major-incident-bridge-setup.yml

Reconciles ServiceNow CMDB records against Azure resource inventory, flags discrepancies in a Jira ticket, and notifies the asset management team via Slack.

naftiko: '0.5'
info:
  label: ServiceNow CMDB Asset Reconciliation
  description: Reconciles ServiceNow CMDB records against Azure resource inventory, flags discrepancies in a Jira ticket, and notifies the asset management team via Slack.
  tags:
  - asset-management
  - cmdb
  - servicenow
  - microsoft-azure
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cmdb-recon
    port: 8080
    tools:
    - name: reconcile-cmdb-assets
      description: Given a resource group, reconcile Azure resources against ServiceNow CMDB and flag discrepancies.
      inputParameters:
      - name: resource_group
        in: body
        type: string
        description: Azure resource group name to reconcile.
      steps:
      - name: get-azure-resources
        type: call
        call: azure-recon.list-resources
        with:
          resource_group: '{{resource_group}}'
      - name: get-cmdb-records
        type: call
        call: snow-recon.query-cmdb
        with:
          resource_group: '{{resource_group}}'
      - name: create-discrepancy-ticket
        type: call
        call: jira-recon.create-issue
        with:
          project_key: ASSET
          issuetype: Task
          summary: 'CMDB reconciliation: {{resource_group}}'
          description: 'Azure resources: {{get-azure-resources.count}}

            CMDB records: {{get-cmdb-records.count}}

            Discrepancies detected.'
  consumes:
  - type: http
    namespace: azure-recon
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: resources
      path: /subscriptions/$secrets.azure_subscription_id/resourceGroups/{{resource_group}}/resources
      inputParameters:
      - name: resource_group
        in: path
      operations:
      - name: list-resources
        method: GET
  - type: http
    namespace: snow-recon
    baseUri: https://morganstanley.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: query-cmdb
        method: GET
  - type: http
    namespace: jira-recon
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → servicenow-cmdb-asset-reconciliation.yml

Detects cloud cost anomalies from Datadog, creates a FinOps review task in ServiceNow, and alerts the cloud platform team via Slack with cost breakdown details.

naftiko: '0.5'
info:
  label: Datadog Cost Anomaly to FinOps Review
  description: Detects cloud cost anomalies from Datadog, creates a FinOps review task in ServiceNow, and alerts the cloud platform team via Slack with cost breakdown details.
  tags:
  - finops
  - cost-management
  - datadog
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cost-anomaly
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given a Datadog cost anomaly alert, create a FinOps review task and notify the team.
      inputParameters:
      - name: anomaly_id
        in: body
        type: string
        description: Datadog cost anomaly alert ID.
      steps:
      - name: get-anomaly-details
        type: call
        call: datadog-cost.get-anomaly
        with:
          id: '{{anomaly_id}}'
      - name: create-review-task
        type: call
        call: snow-finops.create-task
        with:
          short_description: 'Cloud cost anomaly: {{get-anomaly-details.service_name}}'
          description: 'Service: {{get-anomaly-details.service_name}}

            Expected: ${{get-anomaly-details.expected_cost}}

            Actual: ${{get-anomaly-details.actual_cost}}

            Variance: {{get-anomaly-details.variance_pct}}%'
          assignment_group: Cloud_FinOps
      - name: alert-team
        type: call
        call: slack-finops.post-message
        with:
          channel: $secrets.finops_slack_channel
          text: 'Cost Anomaly: {{get-anomaly-details.service_name}} | Expected: ${{get-anomaly-details.expected_cost}} vs Actual: ${{get-anomaly-details.actual_cost}} | Task: {{create-review-task.number}}'
  consumes:
  - type: http
    namespace: datadog-cost
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: anomalies
      path: /cost/anomalies/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-anomaly
        method: GET
  - type: http
    namespace: snow-finops
    baseUri: https://morganstanley.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-finops
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-cost-anomaly-to-finops-review.yml

Drafts thought leadership content using Anthropic Claude based on Bloomberg market data, publishes to LinkedIn, and logs the campaign to Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: LinkedIn Thought Leadership Publisher
  description: Drafts thought leadership content using Anthropic Claude based on Bloomberg market data, publishes to LinkedIn, and logs the campaign to Salesforce Marketing Cloud.
  tags:
  - marketing
  - content
  - anthropic
  - bloomberg
  - linkedin
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: thought-leadership
    port: 8080
    tools:
    - name: publish-thought-leadership
      description: Given a market topic and Bloomberg data points, draft content with Claude, publish to LinkedIn, and log to Salesforce.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Market topic for the thought leadership piece.
      - name: bloomberg_data_ref
        in: body
        type: string
        description: Bloomberg data reference for supporting market data.
      steps:
      - name: get-market-data
        type: call
        call: bloomberg-mktg.get-data
        with:
          reference: '{{bloomberg_data_ref}}'
      - name: draft-content
        type: call
        call: anthropic-mktg.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Write a professional LinkedIn thought leadership post about {{topic}} using these market data points: {{get-market-data.summary}}. Keep it under 1300 characters.'
      - name: publish-to-linkedin
        type: call
        call: linkedin-api.create-post
        with:
          text: '{{draft-content.text}}'
  consumes:
  - type: http
    namespace: bloomberg-mktg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: data
      path: /{{reference}}
      inputParameters:
      - name: reference
        in: path
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: anthropic-mktg
    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: linkedin-api
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: posts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → linkedin-thought-leadership-publisher.yml

When GitHub detects exposed secrets, creates a PagerDuty incident for immediate rotation, opens a Jira security ticket, and notifies the security team via Slack.

naftiko: '0.5'
info:
  label: GitHub Secret Scanning Alert Response
  description: When GitHub detects exposed secrets, creates a PagerDuty incident for immediate rotation, opens a Jira security ticket, and notifies the security team via Slack.
  tags:
  - security
  - secret-management
  - github
  - pagerduty
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: secret-response
    port: 8080
    tools:
    - name: respond-to-secret-exposure
      description: Given a GitHub secret scanning alert, create a PagerDuty incident, Jira ticket, and Slack notification.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository with the exposed secret.
      - name: alert_number
        in: body
        type: string
        description: GitHub secret scanning alert number.
      steps:
      - name: get-alert
        type: call
        call: github-sec.get-secret-alert
        with:
          repo: '{{repo}}'
          alert_number: '{{alert_number}}'
      - name: page-security
        type: call
        call: pagerduty-sec.create-incident
        with:
          service_id: $secrets.pagerduty_security_service_id
          summary: 'CRITICAL: Secret exposed in {{repo}} - {{get-alert.secret_type}}'
          severity: critical
      - name: create-ticket
        type: call
        call: jira-sec.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Secret rotation required: {{get-alert.secret_type}} in {{repo}}'
          description: 'Secret type: {{get-alert.secret_type}}

            File: {{get-alert.path}}

            Immediate rotation required.'
          priority: Highest
  consumes:
  - type: http
    namespace: github-sec
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: alerts
      path: /repos/{{repo}}/secret-scanning/alerts/{{alert_number}}
      inputParameters:
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-secret-alert
        method: GET
  - type: http
    namespace: pagerduty-sec
    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: jira-sec
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-secret-scanning-alert-response.yml

Evaluates a ServiceNow change request by querying Datadog for service health, checks the deployment window, and posts a risk assessment to the CAB Slack channel.

naftiko: '0.5'
info:
  label: ServiceNow Change Risk Assessment
  description: Evaluates a ServiceNow change request by querying Datadog for service health, checks the deployment window, and posts a risk assessment to the CAB Slack channel.
  tags:
  - change-management
  - risk
  - servicenow
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: change-risk
    port: 8080
    tools:
    - name: assess-change-risk
      description: Given a ServiceNow change request number, check service health in Datadog and post a risk assessment to the CAB channel.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: ServiceNow change request number.
      steps:
      - name: get-change-request
        type: call
        call: snow-change.get-change
        with:
          number: '{{change_number}}'
      - name: check-service-health
        type: call
        call: datadog-change.get-service-health
        with:
          service: '{{get-change-request.cmdb_ci}}'
      - name: post-risk-assessment
        type: call
        call: slack-cab.post-message
        with:
          channel: $secrets.cab_slack_channel
          text: 'Change Risk Assessment: {{change_number}}

            Service: {{get-change-request.cmdb_ci}}

            Health: {{check-service-health.overall_state}}

            Risk Level: {{get-change-request.risk}}

            Window: {{get-change-request.planned_start}} - {{get-change-request.planned_end}}'
  consumes:
  - type: http
    namespace: snow-change
    baseUri: https://morganstanley.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: datadog-change
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: services
      path: /service_level_objectives
      operations:
      - name: get-service-health
        method: GET
  - type: http
    namespace: slack-cab
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-risk-assessment.yml

When a P1 ServiceNow incident is opened for a production trading system, pages the on-call engineer via PagerDuty, posts context to Microsoft Teams, and creates a Jira war room issue.

naftiko: '0.5'
info:
  label: ServiceNow P1 Incident Escalation
  description: When a P1 ServiceNow incident is opened for a production trading system, pages the on-call engineer via PagerDuty, posts context to Microsoft Teams, and creates a Jira war room issue.
  tags:
  - itsm
  - incident-response
  - servicenow
  - pagerduty
  - microsoft-teams
  - jira
  - trading-systems
capability:
  exposes:
  - type: mcp
    namespace: p1-escalation
    port: 8080
    tools:
    - name: escalate-p1-incident
      description: Given a ServiceNow P1 incident number for a trading system outage, trigger a PagerDuty alert to the on-call engineer, post context to the OnCall Teams channel, and open a Jira war room issue.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow P1 incident number, e.g. INC0012345.
      - name: affected_system
        in: body
        type: string
        description: Name of the affected trading or production system.
      - name: pagerduty_service_id
        in: body
        type: string
        description: PagerDuty service ID to trigger the alert on.
      steps:
      - name: get-incident
        type: call
        call: servicenow-p1.get-incident
        with:
          number: '{{incident_number}}'
      - name: trigger-pagerduty
        type: call
        call: pagerduty.create-incident
        with:
          service_id: '{{pagerduty_service_id}}'
          title: 'P1: {{affected_system}} outage — {{incident_number}}'
          description: '{{get-incident.description}}'
      - name: open-war-room
        type: call
        call: jira-p1.create-issue
        with:
          project_key: OPS
          issuetype: Incident
          summary: '[WAR ROOM] P1: {{affected_system}} — {{incident_number}}'
          description: 'SNOW: {{incident_number}}

            PagerDuty: {{trigger-pagerduty.incident_id}}'
      - name: alert-oncall
        type: call
        call: msteams-p1.post-channel-message
        with:
          channel_id: OnCall
          text: 'P1 INCIDENT: {{affected_system}} | SNOW: {{incident_number}} | PD: {{trigger-pagerduty.incident_id}} | Jira: {{open-war-room.key}}'
  consumes:
  - type: http
    namespace: servicenow-p1
    baseUri: https://morganstanley.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: 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: jira-p1
    baseUri: https://morganstanley.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-p1
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-p1-incident-escalation.yml

Converts Slack IT support requests into ServiceNow incidents, assigns priority based on keywords, and sends confirmation back to the requester in Slack.

naftiko: '0.5'
info:
  label: Slack IT Support Ticket Creation
  description: Converts Slack IT support requests into ServiceNow incidents, assigns priority based on keywords, and sends confirmation back to the requester in Slack.
  tags:
  - it-support
  - automation
  - slack
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: create-support-ticket
      description: Given a Slack message and user, create a ServiceNow incident and confirm back in Slack.
      inputParameters:
      - name: message_text
        in: body
        type: string
        description: IT support request message text.
      - name: requester_email
        in: body
        type: string
        description: Email of the Slack user requesting support.
      - name: channel_id
        in: body
        type: string
        description: Slack channel ID where the request was made.
      steps:
      - name: create-incident
        type: call
        call: snow-support.create-incident
        with:
          short_description: '{{message_text}}'
          caller_id: '{{requester_email}}'
          category: inquiry
      - name: confirm-in-slack
        type: call
        call: slack-support.post-message
        with:
          channel: '{{channel_id}}'
          text: 'IT Support ticket created: {{create-incident.number}} | {{message_text}}'
  consumes:
  - type: http
    namespace: snow-support
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: 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-support
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-it-support-ticket-creation.yml

Orchestrates new client account opening by creating a Salesforce account record, initiating KYC screening via Refinitiv, and opening a ServiceNow onboarding task.

naftiko: '0.5'
info:
  label: Client Account Opening Workflow
  description: Orchestrates new client account opening by creating a Salesforce account record, initiating KYC screening via Refinitiv, and opening a ServiceNow onboarding task.
  tags:
  - client-onboarding
  - account-opening
  - salesforce
  - refinitiv
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: account-opening
    port: 8080
    tools:
    - name: open-client-account
      description: Given client details, create a Salesforce account, run KYC screening, and open a ServiceNow onboarding task.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Full legal name of the client.
      - name: entity_type
        in: body
        type: string
        description: 'Entity type: individual or organization.'
      - name: country
        in: body
        type: string
        description: ISO country code for the client.
      steps:
      - name: create-sfdc-account
        type: call
        call: sfdc-onboard.create-account
        with:
          name: '{{client_name}}'
          type: '{{entity_type}}'
          country: '{{country}}'
      - name: run-kyc
        type: call
        call: refinitiv-onboard.screen-entity
        with:
          name: '{{client_name}}'
          entity_type: '{{entity_type}}'
      - name: open-onboarding-task
        type: call
        call: snow-onboard.create-task
        with:
          short_description: 'Account onboarding: {{client_name}}'
          description: 'Salesforce Account: {{create-sfdc-account.id}}

            KYC Risk Score: {{run-kyc.risk_score}}'
          assignment_group: Client_Onboarding
  consumes:
  - type: http
    namespace: sfdc-onboard
    baseUri: https://morganstanley.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: refinitiv-onboard
    baseUri: https://api.thomsonreuters.com/worldcheck/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: screening
      path: /entities/search
      operations:
      - name: screen-entity
        method: POST
  - type: http
    namespace: snow-onboard
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → client-account-opening-workflow.yml

Retrieves ML model deployment status from Databricks, logs the deployment to Snowflake model registry, and notifies the data science team via Slack.

naftiko: '0.5'
info:
  label: Databricks ML Model Deployment Notification
  description: Retrieves ML model deployment status from Databricks, logs the deployment to Snowflake model registry, and notifies the data science team via Slack.
  tags:
  - data-science
  - ml-ops
  - databricks
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ml-deploy
    port: 8080
    tools:
    - name: log-model-deployment
      description: Given a Databricks model name and version, log deployment to Snowflake and notify the data science Slack channel.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Databricks registered model name.
      - name: model_version
        in: body
        type: string
        description: Model version number.
      steps:
      - name: get-model-version
        type: call
        call: databricks-ml.get-model-version
        with:
          name: '{{model_name}}'
          version: '{{model_version}}'
      - name: log-deployment
        type: call
        call: snowflake-ml.insert-record
        with:
          table: ML_OPS.MODEL_DEPLOYMENTS
          model_name: '{{model_name}}'
          version: '{{model_version}}'
          status: '{{get-model-version.current_stage}}'
      - name: notify-team
        type: call
        call: slack-ds.post-message
        with:
          channel: $secrets.datascience_slack_channel
          text: 'Model deployed: {{model_name}} v{{model_version}} | Stage: {{get-model-version.current_stage}} | Run ID: {{get-model-version.run_id}}'
  consumes:
  - type: http
    namespace: databricks-ml
    baseUri: https://morganstanley.cloud.databricks.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: model-versions
      path: /mlflow/model-versions/get
      inputParameters:
      - name: name
        in: query
      - name: version
        in: query
      operations:
      - name: get-model-version
        method: GET
  - type: http
    namespace: snowflake-ml
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: slack-ds
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → databricks-ml-model-deployment-notification.yml

Logs completed client meeting activities from Microsoft Teams calendar events to Salesforce as Activity records, ensuring CRM data remains current for wealth management and investment banking relationship tracking.

naftiko: '0.5'
info:
  label: Salesforce Client Meeting Activity Logger
  description: Logs completed client meeting activities from Microsoft Teams calendar events to Salesforce as Activity records, ensuring CRM data remains current for wealth management and investment banking relationship tracking.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - activity-logging
  - wealth-management
capability:
  exposes:
  - type: mcp
    namespace: activity-logging
    port: 8080
    tools:
    - name: log-client-meeting-to-salesforce
      description: Given a Microsoft Graph calendar event ID for a completed client meeting and a Salesforce contact ID, create a Salesforce Activity record linking the meeting details to the contact.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: Microsoft Graph calendar event ID for the completed client meeting.
      - name: salesforce_contact_id
        in: body
        type: string
        description: Salesforce contact ID representing the client who attended the meeting.
      - name: user_upn
        in: body
        type: string
        description: UPN of the employee whose calendar the event belongs to.
      steps:
      - name: get-calendar-event
        type: call
        call: msgraph-calendar.get-event
        with:
          user_upn: '{{user_upn}}'
          event_id: '{{event_id}}'
      - name: log-to-salesforce
        type: call
        call: salesforce-activity.create-task
        with:
          contact_id: '{{salesforce_contact_id}}'
          subject: '{{get-calendar-event.subject}}'
          activity_date: '{{get-calendar-event.start_datetime}}'
          description: 'Meeting duration: {{get-calendar-event.duration_minutes}} min. Attendees: {{get-calendar-event.attendee_count}}'
  consumes:
  - type: http
    namespace: msgraph-calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: calendar-events
      path: /users/{{user_upn}}/events/{{event_id}}
      inputParameters:
      - name: user_upn
        in: path
      - name: event_id
        in: path
      operations:
      - name: get-event
        method: GET
  - type: http
    namespace: salesforce-activity
    baseUri: https://morganstanley.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
Open in Framework → View in Fleet → salesforce-client-meeting-activity-logger.yml

Runs data quality checks in Snowflake, creates a Jira ticket for data engineering when thresholds are breached, and notifies the data platform team via Slack.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Alert Workflow
  description: Runs data quality checks in Snowflake, creates a Jira ticket for data engineering when thresholds are breached, and notifies the data platform team via Slack.
  tags:
  - data-engineering
  - data-quality
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: dq-alert
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Given a Snowflake table and quality rule, run the check and create alerts if thresholds are breached.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table name.
      - name: quality_rule
        in: body
        type: string
        description: SQL expression for the data quality check.
      steps:
      - name: run-check
        type: call
        call: snowflake-dq.execute-query
        with:
          statement: SELECT COUNT(*) as violations FROM {{table_name}} WHERE {{quality_rule}}
      - name: create-ticket
        type: call
        call: jira-dq.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: 'Data quality violation: {{table_name}}'
          description: 'Rule: {{quality_rule}}

            Violations: {{run-check.violations}}'
      - name: notify-team
        type: call
        call: slack-data.post-message
        with:
          channel: $secrets.data_platform_channel
          text: 'DQ Alert: {{run-check.violations}} violations in {{table_name}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-dq
    baseUri: https://morganstanley.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-dq
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → snowflake-data-quality-alert-workflow.yml

Queries Okta for users without MFA enrolled, generates a non-compliance report in SharePoint, and sends a reminder notification via Microsoft Teams to each non-compliant user's manager.

naftiko: '0.5'
info:
  label: Okta MFA Compliance Enforcement
  description: Queries Okta for users without MFA enrolled, generates a non-compliance report in SharePoint, and sends a reminder notification via Microsoft Teams to each non-compliant user's manager.
  tags:
  - security
  - identity
  - okta
  - sharepoint
  - microsoft-teams
  - mfa
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: mfa-compliance
    port: 8080
    tools:
    - name: enforce-mfa-compliance
      description: Query Okta for all active users without MFA enrolled, export the list to SharePoint for compliance records, and send Teams reminders to each non-compliant user.
      inputParameters:
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the MFA non-compliance report will be saved.
      steps:
      - name: get-non-mfa-users
        type: call
        call: okta-mfa.list-users-without-mfa
        with:
          status: ACTIVE
          factor_type: NONE
      - name: export-report
        type: call
        call: sharepoint-mfa.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: MFA_NonCompliance_Report.csv
          content: '{{get-non-mfa-users.csv_data}}'
      - name: notify-security
        type: call
        call: msteams-mfa.post-channel-message
        with:
          channel_id: InformationSecurity
          text: 'MFA compliance: {{get-non-mfa-users.user_count}} active users without MFA. Non-compliance report exported to SharePoint: {{export-report.file_url}}'
  consumes:
  - type: http
    namespace: okta-mfa
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: users
      path: /users
      inputParameters:
      - name: status
        in: query
      - name: factor_type
        in: query
      operations:
      - name: list-users-without-mfa
        method: GET
  - type: http
    namespace: sharepoint-mfa
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-file
        method: POST
  - type: http
    namespace: msteams-mfa
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → okta-mfa-compliance-enforcement.yml

Audits Okta group memberships against Workday organizational data, flags mismatches in a ServiceNow task, and sends an audit summary to the identity team via Slack.

naftiko: '0.5'
info:
  label: Okta Group Membership Audit
  description: Audits Okta group memberships against Workday organizational data, flags mismatches in a ServiceNow task, and sends an audit summary to the identity team via Slack.
  tags:
  - security
  - identity-audit
  - okta
  - workday
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: identity-audit
    port: 8080
    tools:
    - name: audit-group-memberships
      description: Given an Okta group ID, audit memberships against Workday org data and flag mismatches.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: Okta group ID to audit.
      steps:
      - name: get-okta-members
        type: call
        call: okta-audit.get-group-members
        with:
          group_id: '{{group_id}}'
      - name: get-workday-org
        type: call
        call: workday-audit.get-org-members
        with:
          group_id: '{{group_id}}'
      - name: create-audit-task
        type: call
        call: snow-audit.create-task
        with:
          short_description: 'Identity audit: Okta group {{group_id}}'
          description: 'Okta members: {{get-okta-members.count}}

            Workday expected: {{get-workday-org.count}}

            Mismatches flagged for review.'
          assignment_group: Identity_Governance
  consumes:
  - type: http
    namespace: okta-audit
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: groups
      path: /groups/{{group_id}}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: get-group-members
        method: GET
  - type: http
    namespace: workday-audit
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: orgs
      path: /morganstanley/organizations
      operations:
      - name: get-org-members
        method: GET
  - type: http
    namespace: snow-audit
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → okta-group-membership-audit.yml

Queries Snowflake for daily market risk metrics (VaR, CVaR), validates results against expected ranges, and posts the risk snapshot to the Risk Management Microsoft Teams channel with exception alerts.

naftiko: '0.5'
info:
  label: Snowflake Risk Metrics Snapshot
  description: Queries Snowflake for daily market risk metrics (VaR, CVaR), validates results against expected ranges, and posts the risk snapshot to the Risk Management Microsoft Teams channel with exception alerts.
  tags:
  - finance
  - risk-management
  - snowflake
  - microsoft-teams
  - market-risk
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: risk-reporting
    port: 8080
    tools:
    - name: publish-risk-snapshot
      description: Given a reporting date, query Snowflake for VaR and CVaR metrics, flag any values outside expected ranges, and post the daily risk snapshot to the RiskManagement Teams channel.
      inputParameters:
      - name: reporting_date
        in: body
        type: string
        description: Date for the risk metrics snapshot in ISO 8601 format.
      - name: var_limit_usd
        in: body
        type: number
        description: Value-at-Risk limit in USD. Breaches trigger exception flags.
      steps:
      - name: query-risk-metrics
        type: call
        call: snowflake-risk.run-var-query
        with:
          as_of_date: '{{reporting_date}}'
      - name: post-snapshot
        type: call
        call: msteams-risk.post-channel-message
        with:
          channel_id: RiskManagement
          text: 'Risk snapshot {{reporting_date}}: VaR ${{query-risk-metrics.var_usd}} | CVaR ${{query-risk-metrics.cvar_usd}} | Limit ${{var_limit_usd}} | Status: {{query-risk-metrics.breach_status}}'
  consumes:
  - type: http
    namespace: snowflake-risk
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: as_of_date
        in: query
      operations:
      - name: run-var-query
        method: POST
  - type: http
    namespace: msteams-risk
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-risk-metrics-snapshot.yml

Retrieves meeting details including participants, duration, and recording status for a Zoom meeting, supporting compliance recording review.

naftiko: '0.5'
info:
  label: Zoom Meeting Details Lookup
  description: Retrieves meeting details including participants, duration, and recording status for a Zoom meeting, supporting compliance recording review.
  tags:
  - communications
  - meetings
  - zoom
capability:
  exposes:
  - type: mcp
    namespace: zoom-meeting
    port: 8080
    tools:
    - name: get-meeting-details
      description: Given a Zoom meeting ID, return participant count, duration, recording status, and topic.
      inputParameters:
      - name: meeting_id
        in: body
        type: string
        description: Zoom meeting ID.
      call: zoom-api.get-meeting
      with:
        id: '{{meeting_id}}'
      outputParameters:
      - name: topic
        type: string
        mapping: $.topic
      - name: duration
        type: string
        mapping: $.duration
  consumes:
  - type: http
    namespace: zoom-api
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /meetings/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-meeting
        method: GET
Open in Framework → View in Fleet → zoom-meeting-details-lookup.yml

Detects Okta users with anomalous sign-in behavior (impossible travel or new device), revokes their active sessions, logs the event to Snowflake, and alerts the Information Security Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Okta Session Anomaly Revocation
  description: Detects Okta users with anomalous sign-in behavior (impossible travel or new device), revokes their active sessions, logs the event to Snowflake, and alerts the Information Security Microsoft Teams channel.
  tags:
  - security
  - identity
  - okta
  - snowflake
  - microsoft-teams
  - session-management
  - threat-detection
capability:
  exposes:
  - type: mcp
    namespace: session-security
    port: 8080
    tools:
    - name: revoke-anomalous-session
      description: Given an Okta user ID flagged for anomalous sign-in activity, revoke all active sessions, log the event to Snowflake for security audit, and alert the InformationSecurity Teams channel.
      inputParameters:
      - name: okta_user_id
        in: body
        type: string
        description: Okta user ID whose sessions should be revoked due to anomalous activity.
      - name: anomaly_type
        in: body
        type: string
        description: Type of anomaly detected, e.g. 'impossible_travel' or 'new_device_high_risk'.
      steps:
      - name: revoke-sessions
        type: call
        call: okta-session.revoke-user-sessions
        with:
          user_id: '{{okta_user_id}}'
      - name: log-event
        type: call
        call: snowflake-session.insert-record
        with:
          table: SECURITY.SESSION_REVOCATIONS
          user_id: '{{okta_user_id}}'
          anomaly_type: '{{anomaly_type}}'
          revoked_at: '{{revoke-sessions.revoked_at}}'
      - name: alert-infosec
        type: call
        call: msteams-infosec.post-channel-message
        with:
          channel_id: InformationSecurity
          text: 'Session revocation: User {{okta_user_id}} — anomaly: {{anomaly_type}}. All sessions revoked and logged to Snowflake.'
  consumes:
  - type: http
    namespace: okta-session
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: user-sessions
      path: /users/{{user_id}}/sessions
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: revoke-user-sessions
        method: DELETE
  - type: http
    namespace: snowflake-session
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: msteams-infosec
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → okta-session-anomaly-revocation.yml

Fetches approved executive communications from SharePoint, publishes them as LinkedIn posts on behalf of the organization, and logs publication metadata to Snowflake for campaign tracking.

naftiko: '0.5'
info:
  label: LinkedIn Executive Communications Publisher
  description: Fetches approved executive communications from SharePoint, publishes them as LinkedIn posts on behalf of the organization, and logs publication metadata to Snowflake for campaign tracking.
  tags:
  - marketing
  - communications
  - linkedin
  - sharepoint
  - snowflake
  - social-media
  - executive-communications
capability:
  exposes:
  - type: mcp
    namespace: exec-comms
    port: 8080
    tools:
    - name: publish-executive-post
      description: Given a SharePoint document ID containing approved communications content and a LinkedIn organization ID, publish the post to LinkedIn and log the publication record to Snowflake.
      inputParameters:
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the approved content document is stored.
      - name: document_item_id
        in: body
        type: string
        description: SharePoint drive item ID of the approved communications document.
      - name: linkedin_org_id
        in: body
        type: string
        description: LinkedIn organization URN ID to post on behalf of.
      steps:
      - name: fetch-content
        type: call
        call: sharepoint-comms.get-file-content
        with:
          site_id: '{{sharepoint_site_id}}'
          item_id: '{{document_item_id}}'
      - name: publish-to-linkedin
        type: call
        call: linkedin-comms.create-share
        with:
          organization_id: '{{linkedin_org_id}}'
          text: '{{fetch-content.text_content}}'
      - name: log-publication
        type: call
        call: snowflake-comms.insert-record
        with:
          table: MARKETING.LINKEDIN_PUBLICATIONS
          org_id: '{{linkedin_org_id}}'
          post_id: '{{publish-to-linkedin.post_id}}'
          published_at: '{{publish-to-linkedin.created_at}}'
  consumes:
  - type: http
    namespace: sharepoint-comms
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: file-content
      path: /sites/{{site_id}}/drive/items/{{item_id}}/content
      inputParameters:
      - name: site_id
        in: path
      - name: item_id
        in: path
      operations:
      - name: get-file-content
        method: GET
  - type: http
    namespace: linkedin-comms
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: shares
      path: /ugcPosts
      operations:
      - name: create-share
        method: POST
  - type: http
    namespace: snowflake-comms
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → linkedin-executive-communications-publisher.yml

Fetches the current PagerDuty on-call schedule, updates the On-Call rotation in SharePoint, and posts the weekly on-call roster to the Operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Schedule Sync
  description: Fetches the current PagerDuty on-call schedule, updates the On-Call rotation in SharePoint, and posts the weekly on-call roster to the Operations Microsoft Teams channel.
  tags:
  - itsm
  - pagerduty
  - sharepoint
  - microsoft-teams
  - on-call
  - operations
capability:
  exposes:
  - type: mcp
    namespace: oncall-sync
    port: 8080
    tools:
    - name: sync-oncall-roster
      description: Given a PagerDuty schedule ID, fetch the current on-call rotation, update the on-call SharePoint list, and post the weekly roster to the Operations Teams channel.
      inputParameters:
      - name: pagerduty_schedule_id
        in: body
        type: string
        description: PagerDuty schedule ID to fetch on-call rotation from.
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the on-call roster list is maintained.
      steps:
      - name: get-oncall-schedule
        type: call
        call: pagerduty-schedule.get-schedule
        with:
          schedule_id: '{{pagerduty_schedule_id}}'
      - name: update-sharepoint-roster
        type: call
        call: sharepoint-oncall.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: OnCall_Roster_Current.csv
          content: '{{get-oncall-schedule.roster_csv}}'
      - name: post-roster
        type: call
        call: msteams-ops.post-channel-message
        with:
          channel_id: Operations
          text: 'On-call roster updated for schedule {{pagerduty_schedule_id}}. Current on-call: {{get-oncall-schedule.current_oncall}}. Roster: {{update-sharepoint-roster.file_url}}'
  consumes:
  - type: http
    namespace: pagerduty-schedule
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: schedules
      path: /schedules/{{schedule_id}}
      inputParameters:
      - name: schedule_id
        in: path
      operations:
      - name: get-schedule
        method: GET
  - type: http
    namespace: sharepoint-oncall
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-file
        method: POST
  - type: http
    namespace: msteams-ops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → pagerduty-on-call-schedule-sync.yml

Extracts client relationship data from Salesforce, pulls revenue metrics from Snowflake, and generates a QBR deck outline via Anthropic Claude stored in Confluence.

naftiko: '0.5'
info:
  label: Salesforce Quarterly Business Review Prep
  description: Extracts client relationship data from Salesforce, pulls revenue metrics from Snowflake, and generates a QBR deck outline via Anthropic Claude stored in Confluence.
  tags:
  - client-management
  - qbr
  - salesforce
  - snowflake
  - anthropic
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: qbr-prep
    port: 8080
    tools:
    - name: prepare-qbr
      description: Given a Salesforce account ID and quarter, generate a QBR outline and store in Confluence.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      - name: quarter
        in: body
        type: string
        description: Fiscal quarter for the QBR.
      steps:
      - name: get-account-data
        type: call
        call: sfdc-qbr.get-account
        with:
          id: '{{account_id}}'
      - name: get-revenue-metrics
        type: call
        call: snowflake-qbr.execute-query
        with:
          statement: SELECT total_revenue, product_breakdown, yoy_growth FROM finance.client_revenue WHERE account_id = '{{account_id}}' AND quarter = '{{quarter}}'
      - name: generate-outline
        type: call
        call: anthropic-qbr.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Generate a QBR deck outline for {{get-account-data.name}}, {{quarter}}. Revenue: {{get-revenue-metrics.total_revenue}}, Growth: {{get-revenue-metrics.yoy_growth}}.'
      - name: store-outline
        type: call
        call: confluence-qbr.create-page
        with:
          space: CLIENT
          title: QBR - {{get-account-data.name}} - {{quarter}}
          body: '{{generate-outline.text}}'
  consumes:
  - type: http
    namespace: sfdc-qbr
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: snowflake-qbr
    baseUri: https://morganstanley.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-qbr
    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-qbr
    baseUri: https://morganstanley.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → salesforce-quarterly-business-review-prep.yml

Submits a Splunk search query and returns matching events, supporting security investigation and log analysis for the technology infrastructure team.

naftiko: '0.5'
info:
  label: Splunk Search Query
  description: Submits a Splunk search query and returns matching events, supporting security investigation and log analysis for the technology infrastructure team.
  tags:
  - security
  - logging
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: splunk-search
    port: 8080
    tools:
    - name: run-search
      description: Given a Splunk search query string and time range, submit the search and return matching events.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Splunk SPL search query.
      - name: earliest_time
        in: body
        type: string
        description: Earliest time for the search range (e.g., -24h).
      call: splunk-api.create-search
      with:
        search: '{{search_query}}'
        earliest_time: '{{earliest_time}}'
  consumes:
  - type: http
    namespace: splunk-api
    baseUri: https://splunk.morganstanley.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: create-search
        method: POST
Open in Framework → View in Fleet → splunk-search-query.yml

Logs completed trade executions from Bloomberg AIM to Snowflake for post-trade analytics and generates a Slack summary notification for the trading desk.

naftiko: '0.5'
info:
  label: Bloomberg Terminal Trade Execution Log
  description: Logs completed trade executions from Bloomberg AIM to Snowflake for post-trade analytics and generates a Slack summary notification for the trading desk.
  tags:
  - trading
  - post-trade
  - bloomberg
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: trade-logging
    port: 8080
    tools:
    - name: log-trade-execution
      description: Given a Bloomberg trade reference, log execution details to Snowflake and send a Slack summary to the trading desk channel.
      inputParameters:
      - name: trade_ref
        in: body
        type: string
        description: Bloomberg AIM trade reference ID.
      - name: desk_channel
        in: body
        type: string
        description: Slack channel ID for the trading desk.
      steps:
      - name: get-trade-details
        type: call
        call: bloomberg-trade.get-execution
        with:
          reference: '{{trade_ref}}'
      - name: log-to-snowflake
        type: call
        call: snowflake-trade.insert-record
        with:
          table: TRADING.EXECUTIONS
          trade_ref: '{{trade_ref}}'
          security: '{{get-trade-details.security}}'
          quantity: '{{get-trade-details.quantity}}'
          price: '{{get-trade-details.execution_price}}'
      - name: notify-desk
        type: call
        call: slack-trade.post-message
        with:
          channel: '{{desk_channel}}'
          text: 'Trade executed: {{get-trade-details.security}} | Qty: {{get-trade-details.quantity}} @ {{get-trade-details.execution_price}} | Ref: {{trade_ref}}'
  consumes:
  - type: http
    namespace: bloomberg-trade
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: executions
      path: /executions/{{reference}}
      inputParameters:
      - name: reference
        in: path
      operations:
      - name: get-execution
        method: GET
  - type: http
    namespace: snowflake-trade
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: slack-trade
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → bloomberg-terminal-trade-execution-log.yml

Scans GitHub repositories for exposed secrets and code vulnerabilities using GitHub Advanced Security, logs findings to Snowflake for audit, and creates Jira tickets for critical issues.

naftiko: '0.5'
info:
  label: GitHub Security Scanning and Compliance Audit
  description: Scans GitHub repositories for exposed secrets and code vulnerabilities using GitHub Advanced Security, logs findings to Snowflake for audit, and creates Jira tickets for critical issues.
  tags:
  - security
  - devops
  - github
  - snowflake
  - jira
  - code-scanning
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: code-security
    port: 8080
    tools:
    - name: audit-github-security-findings
      description: Given a GitHub organization, list all open code scanning and secret scanning alerts at high or critical severity, log findings to Snowflake for compliance audit, and create Jira SEC tickets for each critical alert.
      inputParameters:
      - name: github_org
        in: body
        type: string
        description: GitHub organization to scan for security alerts.
      - name: severity_filter
        in: body
        type: string
        description: 'Minimum severity to include: ''high'' or ''critical''.'
      steps:
      - name: get-code-scanning-alerts
        type: call
        call: github-code-scan.list-alerts
        with:
          org: '{{github_org}}'
          severity: '{{severity_filter}}'
      - name: log-to-snowflake
        type: call
        call: snowflake-security.insert-record
        with:
          table: SECURITY.CODE_SCANNING_ALERTS
          org: '{{github_org}}'
          alert_count: '{{get-code-scanning-alerts.alert_count}}'
          severities: '{{get-code-scanning-alerts.severity_breakdown}}'
      - name: create-jira-ticket
        type: call
        call: jira-code-sec.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Code scanning: {{get-code-scanning-alerts.alert_count}} {{severity_filter}} alerts in {{github_org}}'
          description: 'Alerts: {{get-code-scanning-alerts.alert_ids}}

            Snowflake audit logged.'
  consumes:
  - type: http
    namespace: github-code-scan
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: code-scanning-alerts
      path: /orgs/{{org}}/code-scanning/alerts
      inputParameters:
      - name: org
        in: path
      - name: severity
        in: query
      operations:
      - name: list-alerts
        method: GET
  - type: http
    namespace: snowflake-security
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: jira-code-sec
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-security-scanning-and-compliance-audit.yml

When a GitHub Actions workflow fails, retrieves failure details, creates a Jira bug ticket, and notifies the development team via Slack.

naftiko: '0.5'
info:
  label: GitHub Actions Failure to Jira Ticket
  description: When a GitHub Actions workflow fails, retrieves failure details, creates a Jira bug ticket, and notifies the development team via Slack.
  tags:
  - development
  - ci-cd
  - github-actions
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cicd-failure
    port: 8080
    tools:
    - name: handle-workflow-failure
      description: Given a GitHub Actions run ID and repository, create a Jira ticket and notify the team via Slack.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository in org/repo format.
      - name: run_id
        in: body
        type: string
        description: GitHub Actions workflow run ID.
      steps:
      - name: get-run-details
        type: call
        call: github-ci.get-workflow-run
        with:
          repo: '{{repo}}'
          run_id: '{{run_id}}'
      - name: create-bug
        type: call
        call: jira-ci.create-issue
        with:
          project_key: INFRA
          issuetype: Bug
          summary: 'CI failure: {{get-run-details.name}} in {{repo}}'
          description: 'Workflow: {{get-run-details.name}}

            Branch: {{get-run-details.head_branch}}'
      - name: notify-team
        type: call
        call: slack-ci.post-message
        with:
          channel: $secrets.dev_slack_channel
          text: 'CI Failure: {{get-run-details.name}} in {{repo}} | Jira: {{create-bug.key}}'
  consumes:
  - type: http
    namespace: github-ci
    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-ci
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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-ci
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-actions-failure-to-jira-ticket.yml

Enriches Salesforce leads with ZoomInfo company and contact data, updates the lead record, and notifies the assigned sales representative via Slack.

naftiko: '0.5'
info:
  label: ZoomInfo Lead Enrichment to Salesforce
  description: Enriches Salesforce leads with ZoomInfo company and contact data, updates the lead record, and notifies the assigned sales representative via Slack.
  tags:
  - sales
  - lead-enrichment
  - zoominfo
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: lead-enrichment
    port: 8080
    tools:
    - name: enrich-salesforce-lead
      description: Given a Salesforce lead ID, enrich with ZoomInfo data, update the lead, and notify the sales rep via Slack.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: Salesforce lead record ID.
      steps:
      - name: get-lead
        type: call
        call: sfdc-lead.get-lead
        with:
          id: '{{lead_id}}'
      - name: enrich-from-zoominfo
        type: call
        call: zoominfo-api.enrich-contact
        with:
          email: '{{get-lead.email}}'
          company: '{{get-lead.company}}'
      - name: update-lead
        type: call
        call: sfdc-lead.update-lead
        with:
          id: '{{lead_id}}'
          title: '{{enrich-from-zoominfo.job_title}}'
          phone: '{{enrich-from-zoominfo.direct_phone}}'
          company_revenue: '{{enrich-from-zoominfo.company_revenue}}'
      - name: notify-rep
        type: call
        call: slack-sales.post-message
        with:
          channel: $secrets.sales_slack_channel
          text: 'Lead enriched: {{get-lead.name}} at {{get-lead.company}} | Revenue: {{enrich-from-zoominfo.company_revenue}} | Title: {{enrich-from-zoominfo.job_title}}'
  consumes:
  - type: http
    namespace: sfdc-lead
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-lead
        method: GET
      - name: update-lead
        method: PATCH
  - type: http
    namespace: zoominfo-api
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contacts
      path: /enrich/contact
      operations:
      - name: enrich-contact
        method: POST
  - type: http
    namespace: slack-sales
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → zoominfo-lead-enrichment-to-salesforce.yml

Runs a new client through Refinitiv World-Check for KYC screening, creates a Salesforce onboarding case with risk results, and logs the screening outcome to Snowflake for compliance reporting.

naftiko: '0.5'
info:
  label: KYC Client Risk Screening
  description: Runs a new client through Refinitiv World-Check for KYC screening, creates a Salesforce onboarding case with risk results, and logs the screening outcome to Snowflake for compliance reporting.
  tags:
  - compliance
  - kyc
  - refinitiv
  - salesforce
  - snowflake
  - client-onboarding
capability:
  exposes:
  - type: mcp
    namespace: kyc-screening
    port: 8080
    tools:
    - name: screen-new-client
      description: Given a new client name and entity type, run a Refinitiv World-Check KYC screening, create a Salesforce onboarding case with the risk score, and log the result to Snowflake for audit.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Full legal name of the client entity to screen.
      - name: entity_type
        in: body
        type: string
        description: 'Entity type: ''individual'' or ''organization''.'
      - name: country_of_incorporation
        in: body
        type: string
        description: ISO 3166-1 alpha-2 country code for the client's country of incorporation.
      steps:
      - name: run-kyc-screen
        type: call
        call: refinitiv-kyc.search-entity
        with:
          name: '{{client_name}}'
          entity_type: '{{entity_type}}'
          country: '{{country_of_incorporation}}'
      - name: create-onboarding-case
        type: call
        call: salesforce-kyc.create-case
        with:
          subject: 'KYC screening: {{client_name}}'
          description: 'Entity type: {{entity_type}}

            Country: {{country_of_incorporation}}

            Risk score: {{run-kyc-screen.risk_score}}

            Match count: {{run-kyc-screen.match_count}}'
          priority: '{{run-kyc-screen.recommended_priority}}'
      - name: log-screening
        type: call
        call: snowflake-kyc.insert-record
        with:
          table: COMPLIANCE.KYC_SCREENINGS
          client_name: '{{client_name}}'
          risk_score: '{{run-kyc-screen.risk_score}}'
          case_id: '{{create-onboarding-case.case_number}}'
  consumes:
  - type: http
    namespace: refinitiv-kyc
    baseUri: https://api.thomsonreuters.com/worldcheck/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: entities
      path: /entities/search
      inputParameters:
      - name: name
        in: query
      - name: entity_type
        in: query
      - name: country
        in: query
      operations:
      - name: search-entity
        method: GET
  - type: http
    namespace: salesforce-kyc
    baseUri: https://morganstanley.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: snowflake-kyc
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → kyc-client-risk-screening.yml

When organizational changes occur in Workday, updates Okta group memberships, modifies ServiceNow assignment groups, and notifies affected managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Org Chart Change Propagation
  description: When organizational changes occur in Workday, updates Okta group memberships, modifies ServiceNow assignment groups, and notifies affected managers via Microsoft Teams.
  tags:
  - hr
  - org-management
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: org-change
    port: 8080
    tools:
    - name: propagate-org-change
      description: Given a Workday org change event, update Okta groups and ServiceNow assignments.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID affected by the org change.
      - name: new_department
        in: body
        type: string
        description: New department name.
      steps:
      - name: get-employee
        type: call
        call: workday-org.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: update-okta-groups
        type: call
        call: okta-org.update-group-membership
        with:
          user_id: '{{get-employee.work_email}}'
          new_group: '{{new_department}}'
      - name: update-servicenow
        type: call
        call: snow-org.update-assignment
        with:
          user_id: '{{get-employee.work_email}}'
          new_group: '{{new_department}}'
      - name: notify-manager
        type: call
        call: teams-org.send-message
        with:
          recipient_upn: '{{get-employee.manager_email}}'
          text: 'Org change processed: {{get-employee.full_name}} moved to {{new_department}}. Okta and ServiceNow updated.'
  consumes:
  - type: http
    namespace: workday-org
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /morganstanley/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-org
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: groups
      path: /groups
      operations:
      - name: update-group-membership
        method: PUT
  - type: http
    namespace: snow-org
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: users
      path: /table/sys_user
      operations:
      - name: update-assignment
        method: PATCH
  - type: http
    namespace: teams-org
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-org-chart-change-propagation.yml

When a Refinitiv World-Check alert is generated for a potential regulatory breach, creates a Salesforce compliance case, logs the alert in Snowflake for audit, and notifies the Compliance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Trade Surveillance Alert to Compliance Case
  description: When a Refinitiv World-Check alert is generated for a potential regulatory breach, creates a Salesforce compliance case, logs the alert in Snowflake for audit, and notifies the Compliance Microsoft Teams channel.
  tags:
  - compliance
  - finance
  - refinitiv
  - salesforce
  - snowflake
  - microsoft-teams
  - trade-surveillance
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: handle-trade-alert
      description: Given a Refinitiv World-Check alert ID and trade details, create a Salesforce compliance case, log the alert to Snowflake for regulatory audit trail, and notify the Compliance Teams channel.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Refinitiv World-Check alert identifier.
      - name: trader_id
        in: body
        type: string
        description: Internal trader identifier associated with the alert.
      - name: trade_date
        in: body
        type: string
        description: Date of the flagged trade in ISO 8601 format.
      steps:
      - name: get-alert
        type: call
        call: refinitiv.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: create-compliance-case
        type: call
        call: salesforce-compliance.create-case
        with:
          subject: 'Trade surveillance alert: {{alert_id}} — Trader {{trader_id}}'
          description: 'Alert type: {{get-alert.alert_type}}

            Risk score: {{get-alert.risk_score}}

            Trade date: {{trade_date}}'
          priority: High
      - name: log-audit-trail
        type: call
        call: snowflake-audit.insert-record
        with:
          table: COMPLIANCE.TRADE_ALERTS
          alert_id: '{{alert_id}}'
          case_id: '{{create-compliance-case.case_number}}'
          trader_id: '{{trader_id}}'
      - name: notify-compliance
        type: call
        call: msteams-compliance.post-channel-message
        with:
          channel_id: Compliance
          text: 'Trade alert {{alert_id}}: Risk score {{get-alert.risk_score}} | Salesforce case: {{create-compliance-case.case_number}} | Trader: {{trader_id}}'
  consumes:
  - type: http
    namespace: refinitiv
    baseUri: https://api.thomsonreuters.com/worldcheck/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: alerts
      path: /alerts/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-alert
        method: GET
  - type: http
    namespace: salesforce-compliance
    baseUri: https://morganstanley.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: snowflake-audit
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → trade-surveillance-alert-to-compliance-case.yml

Queries Snowflake for upcoming regulatory filing deadlines, creates Jira tracking tickets, and sends a digest to the compliance Slack channel.

naftiko: '0.5'
info:
  label: Regulatory Filing Deadline Tracker
  description: Queries Snowflake for upcoming regulatory filing deadlines, creates Jira tracking tickets, and sends a digest to the compliance Slack channel.
  tags:
  - compliance
  - regulatory
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: reg-filing
    port: 8080
    tools:
    - name: track-upcoming-filings
      description: Query upcoming regulatory filing deadlines and create tracking tickets with Slack notification.
      inputParameters:
      - name: days_ahead
        in: body
        type: number
        description: Number of days ahead to look for filing deadlines.
      steps:
      - name: get-deadlines
        type: call
        call: snowflake-reg.execute-query
        with:
          statement: SELECT filing_type, jurisdiction, deadline_date FROM compliance.regulatory_filings WHERE deadline_date BETWEEN CURRENT_DATE AND DATEADD(day, {{days_ahead}}, CURRENT_DATE) AND status = 'PENDING'
      - name: create-tracking-ticket
        type: call
        call: jira-reg.create-issue
        with:
          project_key: COMPLIANCE
          issuetype: Task
          summary: 'Regulatory filing due: {{get-deadlines.filing_type}}'
          description: 'Deadline: {{get-deadlines.deadline_date}}

            Jurisdiction: {{get-deadlines.jurisdiction}}'
      - name: send-digest
        type: call
        call: slack-compliance.post-message
        with:
          channel: $secrets.compliance_slack_channel
          text: 'Regulatory Filing Digest: filings due in next {{days_ahead}} days. Jira tickets created.'
  consumes:
  - type: http
    namespace: snowflake-reg
    baseUri: https://morganstanley.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-reg
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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-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
Open in Framework → View in Fleet → regulatory-filing-deadline-tracker.yml

Posts a message to a specified Slack channel, supporting automated notifications and team communication workflows.

naftiko: '0.5'
info:
  label: Slack Channel Message Post
  description: Posts a message to a specified Slack channel, supporting automated notifications and team communication workflows.
  tags:
  - communications
  - messaging
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack-msg
    port: 8080
    tools:
    - name: post-message
      description: Given a Slack channel ID and message text, post the message to that channel.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: Slack channel ID.
      - name: text
        in: body
        type: string
        description: Message text to post.
      call: slack-api.post-message
      with:
        channel: '{{channel_id}}'
        text: '{{text}}'
  consumes:
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-channel-message-post.yml

Routes Coupa purchase orders exceeding budget thresholds through ServiceNow approval and notifies the budget owner via Microsoft Teams.

naftiko: '0.5'
info:
  label: Coupa Purchase Order Approval Workflow
  description: Routes Coupa purchase orders exceeding budget thresholds through ServiceNow approval and notifies the budget owner via Microsoft Teams.
  tags:
  - procurement
  - approvals
  - coupa
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: po-approval
    port: 8080
    tools:
    - name: route-po-approval
      description: Given a Coupa PO number, retrieve details, create a ServiceNow approval, and notify the budget owner.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: Coupa purchase order number.
      steps:
      - name: get-po-details
        type: call
        call: coupa-api.get-po
        with:
          po_number: '{{po_number}}'
      - name: create-approval
        type: call
        call: snow-procurement.create-approval
        with:
          short_description: 'PO Approval: {{po_number}} - ${{get-po-details.total_amount}}'
          description: 'Supplier: {{get-po-details.supplier_name}}

            Amount: ${{get-po-details.total_amount}}

            Cost Center: {{get-po-details.cost_center}}'
      - name: notify-budget-owner
        type: call
        call: teams-procurement.send-message
        with:
          recipient_upn: '{{get-po-details.budget_owner_email}}'
          text: 'PO {{po_number}} (${{get-po-details.total_amount}}) from {{get-po-details.supplier_name}} requires your approval. ServiceNow: {{create-approval.number}}'
  consumes:
  - type: http
    namespace: coupa-api
    baseUri: https://morganstanley.coupahost.com/api
    authentication:
      type: apikey
      key: X-COUPA-API-KEY
      value: $secrets.coupa_api_key
      placement: header
    resources:
    - name: purchase-orders
      path: /purchase_orders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: snow-procurement
    baseUri: https://morganstanley.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: teams-procurement
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → coupa-purchase-order-approval-workflow.yml

Detects travel expense policy violations in SAP Concur, creates a compliance case in ServiceNow, and notifies the employee's manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Travel Policy Violation Alert
  description: Detects travel expense policy violations in SAP Concur, creates a compliance case in ServiceNow, and notifies the employee's manager via Microsoft Teams.
  tags:
  - finance
  - travel
  - sap-concur
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: travel-compliance
    port: 8080
    tools:
    - name: flag-policy-violation
      description: Given a Concur expense report ID, check for policy violations, create a ServiceNow case, and notify the manager.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: SAP Concur expense report ID.
      steps:
      - name: get-expense-report
        type: call
        call: concur-travel.get-report
        with:
          report_id: '{{report_id}}'
      - name: create-compliance-case
        type: call
        call: snow-travel.create-case
        with:
          short_description: 'Travel policy violation: Report {{report_id}}'
          description: 'Employee: {{get-expense-report.employee_name}}

            Total: ${{get-expense-report.total_amount}}'
          assignment_group: Travel_Compliance
      - name: notify-manager
        type: call
        call: teams-mgr.send-message
        with:
          recipient_upn: '{{get-expense-report.manager_email}}'
          text: 'Travel policy violation flagged for {{get-expense-report.employee_name}} - Report {{report_id}}. Case: {{create-compliance-case.number}}'
  consumes:
  - type: http
    namespace: concur-travel
    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: snow-travel
    baseUri: https://morganstanley.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
  - type: http
    namespace: teams-mgr
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-policy-violation-alert.yml

Retrieves key financial fundamentals for a company from Refinitiv, including market cap, P/E ratio, and revenue, for investment research support.

naftiko: '0.5'
info:
  label: Refinitiv Company Fundamentals Lookup
  description: Retrieves key financial fundamentals for a company from Refinitiv, including market cap, P/E ratio, and revenue, for investment research support.
  tags:
  - research
  - market-data
  - refinitiv
capability:
  exposes:
  - type: mcp
    namespace: fundamentals
    port: 8080
    tools:
    - name: get-company-fundamentals
      description: Given a Refinitiv instrument code (RIC), return the company's market capitalization, P/E ratio, EPS, and last reported revenue.
      inputParameters:
      - name: ric
        in: body
        type: string
        description: Refinitiv Instrument Code (e.g., MSFT.O).
      call: refinitiv-data.get-fundamentals
      with:
        instrument: '{{ric}}'
      outputParameters:
      - name: market_cap
        type: string
        mapping: $.market_cap
      - name: pe_ratio
        type: string
        mapping: $.pe_ratio
  consumes:
  - type: http
    namespace: refinitiv-data
    baseUri: https://api.refinitiv.com/data/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: fundamentals
      path: /instruments/{{instrument}}/fundamentals
      inputParameters:
      - name: instrument
        in: path
      operations:
      - name: get-fundamentals
        method: GET
Open in Framework → View in Fleet → refinitiv-company-fundamentals-lookup.yml

Retrieves the current state and details of a Datadog monitor, including overall status, last triggered time, and affected hosts.

naftiko: '0.5'
info:
  label: Datadog Monitor Status Check
  description: Retrieves the current state and details of a Datadog monitor, including overall status, last triggered time, and affected hosts.
  tags:
  - monitoring
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: dd-monitor
    port: 8080
    tools:
    - name: get-monitor-status
      description: Given a Datadog monitor ID, return its name, overall state, last triggered timestamp, and message.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Datadog monitor ID.
      call: datadog-api.get-monitor
      with:
        id: '{{monitor_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: overall_state
        type: string
        mapping: $.overall_state
  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: monitors
      path: /monitor/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-monitor-status-check.yml

Checks the health status of an Azure resource, returning availability state and any active service issues affecting Morgan Stanley cloud infrastructure.

naftiko: '0.5'
info:
  label: Azure Resource Health Check
  description: Checks the health status of an Azure resource, returning availability state and any active service issues affecting Morgan Stanley cloud infrastructure.
  tags:
  - cloud
  - infrastructure
  - microsoft-azure
capability:
  exposes:
  - type: mcp
    namespace: azure-health
    port: 8080
    tools:
    - name: check-resource-health
      description: Given an Azure resource ID, return its current availability status and any recent health events.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Full Azure resource ID.
      call: azure-api.get-health
      with:
        resource_id: '{{resource_id}}'
      outputParameters:
      - name: availability_state
        type: string
        mapping: $.properties.availabilityState
  consumes:
  - type: http
    namespace: azure-api
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: health
      path: /{{resource_id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current
      inputParameters:
      - name: resource_id
        in: path
      operations:
      - name: get-health
        method: GET
Open in Framework → View in Fleet → azure-resource-health-check.yml

Retrieves the signing status, recipient details, and completion date for a DocuSign envelope used in client agreement workflows.

naftiko: '0.5'
info:
  label: DocuSign Envelope Status Check
  description: Retrieves the signing status, recipient details, and completion date for a DocuSign envelope used in client agreement workflows.
  tags:
  - legal
  - document-signing
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: docusign-status
    port: 8080
    tools:
    - name: get-envelope-status
      description: Given a DocuSign envelope ID, return its status, sent date, and list of recipients with their signing status.
      inputParameters:
      - name: envelope_id
        in: body
        type: string
        description: DocuSign envelope ID.
      call: docusign-api.get-envelope
      with:
        envelope_id: '{{envelope_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: sent_datetime
        type: string
        mapping: $.sentDateTime
  consumes:
  - type: http
    namespace: docusign-api
    baseUri: https://na4.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/default/envelopes/{{envelope_id}}
      inputParameters:
      - name: envelope_id
        in: path
      operations:
      - name: get-envelope
        method: GET
Open in Framework → View in Fleet → docusign-envelope-status-check.yml

Queries Salesforce for open opportunities by close date range, aggregates pipeline value by stage, and posts a weekly forecast digest to the Investment Banking Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Pipeline Forecast Report
  description: Queries Salesforce for open opportunities by close date range, aggregates pipeline value by stage, and posts a weekly forecast digest to the Investment Banking Microsoft Teams channel.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - forecasting
  - investment-banking
capability:
  exposes:
  - type: mcp
    namespace: pipeline-forecasting
    port: 8080
    tools:
    - name: digest-pipeline-forecast
      description: Given a close date range, query Salesforce for open opportunities, aggregate pipeline value by stage, and post a forecast digest to the Investment Banking Teams channel.
      inputParameters:
      - name: close_date_start
        in: body
        type: string
        description: Start of the close date window in ISO 8601 format.
      - name: close_date_end
        in: body
        type: string
        description: End of the close date window in ISO 8601 format.
      steps:
      - name: get-opportunities
        type: call
        call: salesforce-forecast.list-opportunities
        with:
          close_date_gte: '{{close_date_start}}'
          close_date_lte: '{{close_date_end}}'
      - name: post-forecast
        type: call
        call: msteams-ib.post-channel-message
        with:
          channel_id: InvestmentBanking
          text: 'Pipeline forecast {{close_date_start}} to {{close_date_end}}: Total ${{get-opportunities.total_value}} across {{get-opportunities.count}} opportunities. Weighted: ${{get-opportunities.weighted_value}}'
  consumes:
  - type: http
    namespace: salesforce-forecast
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      inputParameters:
      - name: close_date_gte
        in: query
      - name: close_date_lte
        in: query
      operations:
      - name: list-opportunities
        method: GET
  - type: http
    namespace: msteams-ib
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-pipeline-forecast-report.yml

Pulls client portfolio data from Snowflake, generates a meeting briefing using Anthropic Claude, and delivers it to the advisor via Microsoft Teams before scheduled client meetings.

naftiko: '0.5'
info:
  label: Wealth Advisor Client Briefing Generator
  description: Pulls client portfolio data from Snowflake, generates a meeting briefing using Anthropic Claude, and delivers it to the advisor via Microsoft Teams before scheduled client meetings.
  tags:
  - wealth-management
  - ai
  - snowflake
  - anthropic
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: client-briefing
    port: 8080
    tools:
    - name: generate-client-briefing
      description: Given a client account ID, pull portfolio data from Snowflake, generate a briefing with Claude, and send to the advisor via Teams.
      inputParameters:
      - name: client_account_id
        in: body
        type: string
        description: Client portfolio account identifier.
      - name: advisor_upn
        in: body
        type: string
        description: Advisor Microsoft Teams UPN.
      steps:
      - name: get-portfolio-data
        type: call
        call: snowflake-wm.execute-query
        with:
          statement: SELECT account_name, total_aum, ytd_return, asset_allocation_summary FROM wealth.client_portfolios WHERE account_id = '{{client_account_id}}'
      - name: generate-briefing
        type: call
        call: anthropic-wm.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Generate a concise client meeting briefing for account {{client_account_id}}: AUM {{get-portfolio-data.total_aum}}, YTD return {{get-portfolio-data.ytd_return}}. Include talking points and portfolio recommendations.'
      - name: deliver-briefing
        type: call
        call: teams-wm.send-message
        with:
          recipient_upn: '{{advisor_upn}}'
          text: 'Client Briefing - {{get-portfolio-data.account_name}}


            {{generate-briefing.text}}'
  consumes:
  - type: http
    namespace: snowflake-wm
    baseUri: https://morganstanley.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-wm
    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: teams-wm
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → wealth-advisor-client-briefing-generator.yml

Checks the current status and last login time for an Okta user account, supporting identity verification and access review workflows.

naftiko: '0.5'
info:
  label: Okta User Status Check
  description: Checks the current status and last login time for an Okta user account, supporting identity verification and access review workflows.
  tags:
  - security
  - identity
  - okta
capability:
  exposes:
  - type: mcp
    namespace: okta-status
    port: 8080
    tools:
    - name: check-user-status
      description: Given an Okta user login email, return their account status, last login time, and MFA enrollment state.
      inputParameters:
      - name: user_login
        in: body
        type: string
        description: User's Okta login email address.
      call: okta-users.get-user
      with:
        login: '{{user_login}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: last_login
        type: string
        mapping: $.lastLogin
  consumes:
  - type: http
    namespace: okta-users
    baseUri: https://morganstanley.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
Open in Framework → View in Fleet → okta-user-status-check.yml

Exports Workday headcount by department and cost center and pushes the dataset to Tableau for executive workforce cost dashboards.

naftiko: '0.5'
info:
  label: Workday Headcount Snapshot for Finance
  description: Exports Workday headcount by department and cost center and pushes the dataset to Tableau for executive workforce cost dashboards.
  tags:
  - hr
  - finance
  - workday
  - tableau
  - reporting
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-finance-reporting
    port: 8080
    tools:
    - name: publish-headcount-snapshot
      description: Export current Workday headcount by department and cost center, and publish the data to a Tableau datasource for executive workforce cost analysis.
      inputParameters:
      - name: as_of_date
        in: body
        type: string
        description: Effective date for the headcount snapshot in ISO 8601 format.
      - name: tableau_datasource_id
        in: body
        type: string
        description: Tableau datasource ID to publish headcount data to.
      steps:
      - name: export-headcount
        type: call
        call: workday-headcount.export-workers
        with:
          as_of_date: '{{as_of_date}}'
      - name: publish-to-tableau
        type: call
        call: tableau.publish-datasource
        with:
          datasource_id: '{{tableau_datasource_id}}'
          data: '{{export-headcount.rows}}'
  consumes:
  - type: http
    namespace: workday-headcount
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker-exports
      path: /morganstanley/workers/export
      inputParameters:
      - name: as_of_date
        in: query
      operations:
      - name: export-workers
        method: GET
  - type: http
    namespace: tableau
    baseUri: https://prod-useast-a.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{tableau_datasource_id}}/datasources
      inputParameters:
      - name: tableau_datasource_id
        in: path
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → workday-headcount-snapshot-for-finance.yml

Generates personalized client communication drafts using Anthropic Claude based on Salesforce relationship data, stores in Confluence for review, and notifies the advisor via Slack.

naftiko: '0.5'
info:
  label: Anthropic Client Communication Draft
  description: Generates personalized client communication drafts using Anthropic Claude based on Salesforce relationship data, stores in Confluence for review, and notifies the advisor via Slack.
  tags:
  - client-management
  - ai-content
  - anthropic
  - salesforce
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: client-comms
    port: 8080
    tools:
    - name: draft-client-communication
      description: Given a Salesforce account ID and communication purpose, draft a personalized message using Claude.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      - name: purpose
        in: body
        type: string
        description: Communication purpose (e.g., quarterly review, market update, birthday).
      steps:
      - name: get-client-data
        type: call
        call: sfdc-comms.get-account
        with:
          id: '{{account_id}}'
      - name: generate-draft
        type: call
        call: anthropic-comms.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Draft a professional {{purpose}} communication for client {{get-client-data.name}} ({{get-client-data.industry}}). Relationship manager: {{get-client-data.owner_name}}. Keep it warm, professional, and concise.'
      - name: store-draft
        type: call
        call: confluence-comms.create-page
        with:
          space: CLIENT
          title: 'Draft: {{purpose}} - {{get-client-data.name}}'
          body: '{{generate-draft.text}}'
      - name: notify-advisor
        type: call
        call: slack-comms.post-message
        with:
          channel: $secrets.advisors_slack_channel
          text: 'Client communication draft ready: {{purpose}} for {{get-client-data.name}}. Review in Confluence: {{store-draft.url}}'
  consumes:
  - type: http
    namespace: sfdc-comms
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: anthropic-comms
    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-comms
    baseUri: https://morganstanley.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-comms
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → anthropic-client-communication-draft.yml

On pull requests to production branches, verifies that all commits are signed and the PR has required compliance reviewer approvals, posts gate results to Jira, and notifies the DevSecOps Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub Pull Request Compliance Gate
  description: On pull requests to production branches, verifies that all commits are signed and the PR has required compliance reviewer approvals, posts gate results to Jira, and notifies the DevSecOps Microsoft Teams channel.
  tags:
  - devops
  - compliance
  - github
  - jira
  - microsoft-teams
  - code-review
  - devsecops
capability:
  exposes:
  - type: mcp
    namespace: compliance-gate
    port: 8080
    tools:
    - name: enforce-pr-compliance-gate
      description: Given a GitHub repo and PR number, verify commit signing and required compliance reviewer approvals, post gate results as a PR comment, and notify DevSecOps Teams channel if gate fails.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: pr_number
        in: body
        type: integer
        description: Pull request number to enforce the compliance gate on.
      - name: required_reviewers
        in: body
        type: string
        description: Comma-separated list of required reviewer GitHub logins.
      steps:
      - name: get-pr-reviews
        type: call
        call: github-reviews.list-reviews
        with:
          repo: '{{repo}}'
          pr_number: '{{pr_number}}'
      - name: post-gate-result
        type: call
        call: github-gate-comment.create-pr-comment
        with:
          repo: '{{repo}}'
          pr_number: '{{pr_number}}'
          body: 'Compliance gate result: required reviewers {{required_reviewers}} — approval status: {{get-pr-reviews.approval_status}}'
      - name: notify-devsecops
        type: call
        call: msteams-devsecops.post-channel-message
        with:
          channel_id: DevSecOps
          text: 'Compliance gate for PR #{{pr_number}} in {{repo}}: {{get-pr-reviews.approval_status}}. Required: {{required_reviewers}}'
  consumes:
  - type: http
    namespace: github-reviews
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pr-reviews
      path: /repos/{{repo}}/pulls/{{pr_number}}/reviews
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: list-reviews
        method: GET
  - type: http
    namespace: github-gate-comment
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: issue-comments
      path: /repos/{{repo}}/issues/{{pr_number}}/comments
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: create-pr-comment
        method: POST
  - type: http
    namespace: msteams-devsecops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-pull-request-compliance-gate.yml

Aggregates pending ServiceNow change requests for the weekly CAB review, posts a pre-read digest to SharePoint, and sends the meeting agenda to the Change Management Microsoft Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow Change Advisory Board Automation
  description: Aggregates pending ServiceNow change requests for the weekly CAB review, posts a pre-read digest to SharePoint, and sends the meeting agenda to the Change Management Microsoft Teams channel.
  tags:
  - itsm
  - change-management
  - servicenow
  - sharepoint
  - microsoft-teams
  - cab
capability:
  exposes:
  - type: mcp
    namespace: cab-automation
    port: 8080
    tools:
    - name: prepare-cab-agenda
      description: Fetch all ServiceNow change requests in Scheduled state for the upcoming week, generate a CAB pre-read in SharePoint, and post the meeting agenda to the ChangeManagement Teams channel.
      inputParameters:
      - name: cab_date
        in: body
        type: string
        description: Date of the CAB meeting in ISO 8601 format.
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the CAB pre-read will be saved.
      steps:
      - name: get-pending-changes
        type: call
        call: servicenow-cab.list-changes
        with:
          state: Scheduled
          cab_date: '{{cab_date}}'
      - name: create-preread
        type: call
        call: sharepoint-cab.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: CAB_PreRead_{{cab_date}}.csv
          content: '{{get-pending-changes.csv_data}}'
      - name: post-agenda
        type: call
        call: msteams-cab.post-channel-message
        with:
          channel_id: ChangeManagement
          text: 'CAB pre-read ready for {{cab_date}}: {{get-pending-changes.change_count}} changes scheduled. Pre-read: {{create-preread.file_url}}'
  consumes:
  - type: http
    namespace: servicenow-cab
    baseUri: https://morganstanley.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: state
        in: query
      - name: cab_date
        in: query
      operations:
      - name: list-changes
        method: GET
  - type: http
    namespace: sharepoint-cab
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-file
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-advisory-board-automation.yml

Screens high-value transactions against sanctions lists via Refinitiv World-Check, creates a compliance case in ServiceNow if flagged, and logs results to Snowflake for audit trail.

naftiko: '0.5'
info:
  label: Anti-Money Laundering Transaction Screening
  description: Screens high-value transactions against sanctions lists via Refinitiv World-Check, creates a compliance case in ServiceNow if flagged, and logs results to Snowflake for audit trail.
  tags:
  - compliance
  - aml
  - refinitiv
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: aml-screening
    port: 8080
    tools:
    - name: screen-transaction
      description: Given a transaction ID, counterparty name, and amount, screen against sanctions lists and create a compliance case if flagged.
      inputParameters:
      - name: transaction_id
        in: body
        type: string
        description: Internal transaction reference ID.
      - name: counterparty_name
        in: body
        type: string
        description: Name of the transaction counterparty.
      - name: amount
        in: body
        type: number
        description: Transaction amount in USD.
      steps:
      - name: sanctions-check
        type: call
        call: refinitiv-aml.search-entity
        with:
          name: '{{counterparty_name}}'
          entity_type: organization
      - name: create-compliance-case
        type: call
        call: snow-compliance.create-case
        with:
          short_description: 'AML screening alert: {{counterparty_name}} - ${{amount}}'
          description: 'Transaction: {{transaction_id}}

            Match count: {{sanctions-check.match_count}}

            Risk score: {{sanctions-check.risk_score}}'
          assignment_group: AML_Compliance
      - name: log-screening-result
        type: call
        call: snowflake-aml.insert-record
        with:
          table: COMPLIANCE.AML_SCREENINGS
          transaction_id: '{{transaction_id}}'
          counterparty: '{{counterparty_name}}'
          risk_score: '{{sanctions-check.risk_score}}'
          case_number: '{{create-compliance-case.number}}'
  consumes:
  - type: http
    namespace: refinitiv-aml
    baseUri: https://api.thomsonreuters.com/worldcheck/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: entities
      path: /entities/search
      operations:
      - name: search-entity
        method: POST
  - type: http
    namespace: snow-compliance
    baseUri: https://morganstanley.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
  - type: http
    namespace: snowflake-aml
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → anti-money-laundering-transaction-screening.yml

Extracts compensation review data from Workday, loads it into Snowflake for benchmarking analytics, and refreshes the Tableau compensation dashboard.

naftiko: '0.5'
info:
  label: Workday Compensation Review to Snowflake Analytics
  description: Extracts compensation review data from Workday, loads it into Snowflake for benchmarking analytics, and refreshes the Tableau compensation dashboard.
  tags:
  - hr
  - compensation
  - workday
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: comp-analytics
    port: 8080
    tools:
    - name: sync-compensation-data
      description: Extract compensation review cycle data from Workday, load to Snowflake, and refresh the Tableau dashboard.
      inputParameters:
      - name: review_cycle_id
        in: body
        type: string
        description: Workday compensation review cycle identifier.
      steps:
      - name: extract-comp-data
        type: call
        call: workday-comp.get-review-data
        with:
          cycle_id: '{{review_cycle_id}}'
      - name: load-to-snowflake
        type: call
        call: snowflake-comp.execute-statement
        with:
          statement: CALL HR_ANALYTICS.LOAD_COMP_REVIEW('{{review_cycle_id}}')
      - name: refresh-tableau
        type: call
        call: tableau-comp.trigger-extract-refresh
        with:
          datasource_id: $secrets.tableau_comp_datasource_id
  consumes:
  - type: http
    namespace: workday-comp
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: compensation
      path: /morganstanley/compensation/reviews/{{cycle_id}}
      inputParameters:
      - name: cycle_id
        in: path
      operations:
      - name: get-review-data
        method: GET
  - type: http
    namespace: snowflake-comp
    baseUri: https://morganstanley.snowflakecomputing.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-comp
    baseUri: https://tableau.morganstanley.com/api/3.19
    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: trigger-extract-refresh
        method: POST
Open in Framework → View in Fleet → workday-compensation-review-to-snowflake-analytics.yml

At period close, queries Snowflake for required regulatory metrics, generates a PDF report via an internal reporting service, uploads it to SharePoint for compliance archival, and notifies the Regulatory Reporting Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Regulatory Reporting Period Close
  description: At period close, queries Snowflake for required regulatory metrics, generates a PDF report via an internal reporting service, uploads it to SharePoint for compliance archival, and notifies the Regulatory Reporting Microsoft Teams channel.
  tags:
  - compliance
  - finance
  - snowflake
  - sharepoint
  - microsoft-teams
  - regulatory-reporting
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: regulatory-reporting
    port: 8080
    tools:
    - name: run-period-close-report
      description: Given a reporting period and regulation type (e.g. MiFID II, Basel III), query Snowflake for required metrics, save the report to SharePoint, and notify the Regulatory Reporting Teams channel.
      inputParameters:
      - name: reporting_period
        in: body
        type: string
        description: Reporting period identifier, e.g. '2026-Q1'.
      - name: regulation_type
        in: body
        type: string
        description: Regulatory framework for the report, e.g. 'MiFID_II', 'Basel_III', 'Dodd_Frank'.
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the compliance report will be archived.
      steps:
      - name: query-metrics
        type: call
        call: snowflake-regulatory.run-report-query
        with:
          period: '{{reporting_period}}'
          regulation: '{{regulation_type}}'
      - name: upload-report
        type: call
        call: sharepoint-regulatory.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: '{{regulation_type}}_{{reporting_period}}_Report.csv'
          content: '{{query-metrics.csv_data}}'
      - name: notify-regulatory
        type: call
        call: msteams-regulatory.post-channel-message
        with:
          channel_id: RegulatoryReporting
          text: '{{regulation_type}} period close complete for {{reporting_period}}. Report archived: {{upload-report.file_url}}'
  consumes:
  - type: http
    namespace: snowflake-regulatory
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: period
        in: query
      - name: regulation
        in: query
      operations:
      - name: run-report-query
        method: POST
  - type: http
    namespace: sharepoint-regulatory
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-file
        method: POST
  - type: http
    namespace: msteams-regulatory
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → regulatory-reporting-period-close.yml

Fetches a compliance document from SharePoint, sends it to Anthropic Claude for risk clause identification, logs flagged clauses to Snowflake, and posts a review summary to the Legal Compliance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Anthropic AI Compliance Document Review
  description: Fetches a compliance document from SharePoint, sends it to Anthropic Claude for risk clause identification, logs flagged clauses to Snowflake, and posts a review summary to the Legal Compliance Microsoft Teams channel.
  tags:
  - ai
  - compliance
  - anthropic
  - sharepoint
  - snowflake
  - microsoft-teams
  - document-review
capability:
  exposes:
  - type: mcp
    namespace: ai-compliance-review
    port: 8080
    tools:
    - name: review-compliance-document
      description: Given a SharePoint document ID for a compliance document, extract text content, send to Anthropic Claude for risk clause detection, log findings to Snowflake, and post the review summary to the LegalCompliance Teams channel.
      inputParameters:
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the compliance document is stored.
      - name: document_item_id
        in: body
        type: string
        description: SharePoint drive item ID of the compliance document to review.
      - name: regulation_context
        in: body
        type: string
        description: Regulatory context to frame the review, e.g. 'MiFID II', 'GDPR', 'SEC Rule 17a-4'.
      steps:
      - name: fetch-document
        type: call
        call: sharepoint-legal.get-file-content
        with:
          site_id: '{{sharepoint_site_id}}'
          item_id: '{{document_item_id}}'
      - name: ai-review
        type: call
        call: anthropic-review.create-message
        with:
          model: claude-opus-4-5
          content: 'Review the following document for compliance risk clauses under {{regulation_context}}: {{fetch-document.text_content}}'
      - name: log-findings
        type: call
        call: snowflake-legal.insert-record
        with:
          table: COMPLIANCE.AI_DOCUMENT_REVIEWS
          document_id: '{{document_item_id}}'
          regulation: '{{regulation_context}}'
          risk_clauses: '{{ai-review.content}}'
      - name: notify-legal
        type: call
        call: msteams-legal.post-channel-message
        with:
          channel_id: LegalCompliance
          text: AI compliance review complete for document {{document_item_id}} under {{regulation_context}}. Risk clauses identified and logged to Snowflake.
  consumes:
  - type: http
    namespace: sharepoint-legal
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: file-content
      path: /sites/{{site_id}}/drive/items/{{item_id}}/content
      inputParameters:
      - name: site_id
        in: path
      - name: item_id
        in: path
      operations:
      - name: get-file-content
        method: GET
  - type: http
    namespace: anthropic-review
    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-legal
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: msteams-legal
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → anthropic-ai-compliance-document-review.yml

Enriches Salesforce wealth management client records with LinkedIn professional data and Bloomberg financial summaries, then flags high-net-worth leads for advisor follow-up via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Wealth Management Client Enrichment
  description: Enriches Salesforce wealth management client records with LinkedIn professional data and Bloomberg financial summaries, then flags high-net-worth leads for advisor follow-up via Microsoft Teams.
  tags:
  - sales
  - wealth-management
  - salesforce
  - linkedin
  - microsoft-teams
  - client-enrichment
capability:
  exposes:
  - type: mcp
    namespace: wealth-enrichment
    port: 8080
    tools:
    - name: enrich-wealth-client
      description: Given a Salesforce contact ID for a wealth management prospect, enrich with LinkedIn profile data, update the Salesforce record, and post an advisor follow-up reminder to the Wealth Management Teams channel.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID for the wealth management prospect to enrich.
      steps:
      - name: get-contact
        type: call
        call: salesforce-wealth.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: enrich-linkedin
        type: call
        call: linkedin-wealth.search-profile
        with:
          name: '{{get-contact.full_name}}'
          company: '{{get-contact.account_name}}'
      - name: update-contact
        type: call
        call: salesforce-wealth.update-contact
        with:
          contact_id: '{{contact_id}}'
          linkedin_url: '{{enrich-linkedin.profile_url}}'
          title: '{{enrich-linkedin.headline}}'
      - name: notify-advisor
        type: call
        call: msteams-wealth.post-channel-message
        with:
          channel_id: WealthManagement
          text: 'Client enriched: {{get-contact.full_name}} | LinkedIn: {{enrich-linkedin.profile_url}} | Advisor follow-up recommended.'
  consumes:
  - type: http
    namespace: salesforce-wealth
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
      - name: update-contact
        method: PATCH
  - type: http
    namespace: linkedin-wealth
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: profiles
      path: /people
      inputParameters:
      - name: name
        in: query
      - name: company
        in: query
      operations:
      - name: search-profile
        method: GET
  - type: http
    namespace: msteams-wealth
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-wealth-management-client-enrichment.yml

When a Snowflake portfolio drift query exceeds threshold, creates a Salesforce task for the financial advisor and sends a Microsoft Teams notification with rebalance recommendations.

naftiko: '0.5'
info:
  label: Client Portfolio Rebalance Notification
  description: When a Snowflake portfolio drift query exceeds threshold, creates a Salesforce task for the financial advisor and sends a Microsoft Teams notification with rebalance recommendations.
  tags:
  - wealth-management
  - portfolio
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: portfolio-rebalance
    port: 8080
    tools:
    - name: trigger-rebalance-alert
      description: Given a client account ID and drift threshold, query Snowflake for portfolio drift, create a Salesforce task, and notify the advisor via Teams.
      inputParameters:
      - name: client_account_id
        in: body
        type: string
        description: Client portfolio account identifier.
      - name: drift_threshold
        in: body
        type: number
        description: Percentage drift threshold that triggers the alert.
      steps:
      - name: check-drift
        type: call
        call: snowflake-portfolio.execute-query
        with:
          statement: SELECT asset_class, target_pct, actual_pct, (actual_pct - target_pct) AS drift FROM wealth.portfolio_allocations WHERE account_id = '{{client_account_id}}' AND ABS(actual_pct - target_pct) > {{drift_threshold}}
      - name: create-advisor-task
        type: call
        call: sfdc-task.create-task
        with:
          subject: 'Portfolio rebalance required: {{client_account_id}}'
          description: Drift detected exceeding {{drift_threshold}}% threshold. Review allocation changes.
          priority: High
      - name: notify-advisor
        type: call
        call: teams-notify.send-message
        with:
          recipient_upn: '{{create-advisor-task.owner_email}}'
          text: 'Portfolio drift alert for account {{client_account_id}}. Salesforce task: {{create-advisor-task.task_id}}'
  consumes:
  - type: http
    namespace: snowflake-portfolio
    baseUri: https://morganstanley.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: sfdc-task
    baseUri: https://morganstanley.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: teams-notify
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → client-portfolio-rebalance-notification.yml

Fetches the title and body content of a Confluence wiki page by ID, supporting knowledge base lookups and document review workflows.

naftiko: '0.5'
info:
  label: Confluence Page Content Retrieval
  description: Fetches the title and body content of a Confluence wiki page by ID, supporting knowledge base lookups and document review workflows.
  tags:
  - documentation
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: wiki-content
    port: 8080
    tools:
    - name: get-page-content
      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: Confluence page ID.
      call: confluence-api.get-page
      with:
        id: '{{page_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: body
        type: string
        mapping: $.body.storage.value
  consumes:
  - type: http
    namespace: confluence-api
    baseUri: https://morganstanley.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content/{{id}}?expand=body.storage
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-page-content-retrieval.yml

Refreshes Snowflake data warehouse views, triggers Power BI dataset refresh, and posts a readiness notification to the executive reporting Slack channel.

naftiko: '0.5'
info:
  label: Power BI Executive Dashboard Pipeline
  description: Refreshes Snowflake data warehouse views, triggers Power BI dataset refresh, and posts a readiness notification to the executive reporting Slack channel.
  tags:
  - reporting
  - executive
  - snowflake
  - power-bi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: exec-dashboard
    port: 8080
    tools:
    - name: refresh-executive-dashboard
      description: Refresh Snowflake views and Power BI datasets for executive dashboards.
      inputParameters:
      - name: dashboard_name
        in: body
        type: string
        description: Name of the executive dashboard to refresh.
      steps:
      - name: refresh-snowflake
        type: call
        call: snowflake-exec.execute-query
        with:
          statement: CALL EXEC_REPORTING.REFRESH_VIEWS('{{dashboard_name}}')
      - name: refresh-pbi
        type: call
        call: pbi-exec.trigger-refresh
        with:
          group_id: $secrets.pbi_exec_workspace_id
          dataset_id: $secrets.pbi_exec_dataset_id
      - name: notify-ready
        type: call
        call: slack-exec.post-message
        with:
          channel: $secrets.exec_reporting_channel
          text: Executive Dashboard '{{dashboard_name}}' refreshed and ready for review.
  consumes:
  - type: http
    namespace: snowflake-exec
    baseUri: https://morganstanley.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: pbi-exec
    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: 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
Open in Framework → View in Fleet → power-bi-executive-dashboard-pipeline.yml

When an employee termination is detected in Workday, deactivates their Okta account, revokes active sessions, and creates a ServiceNow access removal ticket.

naftiko: '0.5'
info:
  label: Workday Termination to Okta Deprovisioning
  description: When an employee termination is detected in Workday, deactivates their Okta account, revokes active sessions, and creates a ServiceNow access removal ticket.
  tags:
  - hr
  - security
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: termination-deprovisioning
    port: 8080
    tools:
    - name: process-termination
      description: Given a Workday employee ID for a terminated worker, deactivate Okta, revoke sessions, and open a ServiceNow access removal ticket.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID of the terminated worker.
      steps:
      - name: get-worker-details
        type: call
        call: workday-term.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta-term.deactivate-user
        with:
          user_id: '{{get-worker-details.work_email}}'
      - name: revoke-sessions
        type: call
        call: okta-term.clear-sessions
        with:
          user_id: '{{get-worker-details.work_email}}'
      - name: create-removal-ticket
        type: call
        call: snow-term.create-request
        with:
          short_description: 'Access removal: {{get-worker-details.full_name}} (terminated)'
          description: 'Employee {{employee_id}} terminated. Okta deactivated. Remove remaining access: VPN, building access, shared drives.'
          assignment_group: IT_Access_Management
  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: /morganstanley/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-term
    baseUri: https://morganstanley.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
    - name: sessions
      path: /users/{{user_id}}/sessions
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: clear-sessions
        method: DELETE
  - type: http
    namespace: snow-term
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
Open in Framework → View in Fleet → workday-termination-to-okta-deprovisioning.yml

Audits submitted SAP Concur expense reports against Morgan Stanley's expense policy, flags out-of-policy items, and notifies the Finance compliance Microsoft Teams channel with a summary.

naftiko: '0.5'
info:
  label: SAP Concur Expense Audit
  description: Audits submitted SAP Concur expense reports against Morgan Stanley's expense policy, flags out-of-policy items, and notifies the Finance compliance Microsoft Teams channel with a summary.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
  - audit
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: expense-audit
    port: 8080
    tools:
    - name: audit-expense-reports
      description: Given an expense submission period, fetch submitted SAP Concur expense reports, flag any line items violating expense policy (amount over threshold, missing receipt), and post a violation summary to Finance Teams.
      inputParameters:
      - name: period_start
        in: body
        type: string
        description: Start of the expense audit period in ISO 8601 format.
      - name: period_end
        in: body
        type: string
        description: End of the expense audit period in ISO 8601 format.
      - name: policy_limit_usd
        in: body
        type: number
        description: Maximum allowed single expense amount in USD before flagging.
      steps:
      - name: get-expense-reports
        type: call
        call: sap-concur-audit.list-reports
        with:
          status: Submitted
          start_date: '{{period_start}}'
          end_date: '{{period_end}}'
      - name: notify-finance
        type: call
        call: msteams-expense.post-channel-message
        with:
          channel_id: FinanceCompliance
          text: 'Expense audit: {{get-expense-reports.count}} reports for {{period_start}} to {{period_end}}. Policy violations: {{get-expense-reports.violation_count}} items over ${{policy_limit_usd}}.'
  consumes:
  - type: http
    namespace: sap-concur-audit
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports
      inputParameters:
      - name: status
        in: query
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: list-reports
        method: GET
  - type: http
    namespace: msteams-expense
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-audit.yml

Pulls end-of-day market summary data from Bloomberg, formats a digest using Anthropic Claude, and distributes to trading desks via Slack and Microsoft Teams.

naftiko: '0.5'
info:
  label: Bloomberg EOD Market Summary Distribution
  description: Pulls end-of-day market summary data from Bloomberg, formats a digest using Anthropic Claude, and distributes to trading desks via Slack and Microsoft Teams.
  tags:
  - trading
  - market-data
  - bloomberg
  - anthropic
  - slack
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: eod-summary
    port: 8080
    tools:
    - name: distribute-eod-summary
      description: Generate and distribute an end-of-day market summary to trading desks.
      inputParameters:
      - name: market_date
        in: body
        type: string
        description: Market date in YYYY-MM-DD format.
      steps:
      - name: get-market-data
        type: call
        call: bloomberg-eod.get-summary
        with:
          date: '{{market_date}}'
      - name: format-digest
        type: call
        call: anthropic-eod.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Format a concise end-of-day market summary for {{market_date}}: {{get-market-data.summary}}. Include key index moves, notable sector performance, and overnight outlook.'
      - name: post-to-slack
        type: call
        call: slack-eod.post-message
        with:
          channel: $secrets.trading_slack_channel
          text: 'EOD Market Summary - {{market_date}}


            {{format-digest.text}}'
  consumes:
  - type: http
    namespace: bloomberg-eod
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_api_token
    resources:
    - name: summaries
      path: /market-summary/{{date}}
      inputParameters:
      - name: date
        in: path
      operations:
      - name: get-summary
        method: GET
  - type: http
    namespace: anthropic-eod
    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-eod
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → bloomberg-eod-market-summary-distribution.yml

When Okta detects suspicious login activity, queries Splunk for correlated security events, creates a ServiceNow security incident, and alerts the SOC via Slack.

naftiko: '0.5'
info:
  label: Okta Suspicious Activity to Splunk Investigation
  description: When Okta detects suspicious login activity, queries Splunk for correlated security events, creates a ServiceNow security incident, and alerts the SOC via Slack.
  tags:
  - security
  - soc
  - okta
  - splunk
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: security-investigation
    port: 8080
    tools:
    - name: investigate-suspicious-login
      description: Given an Okta user ID and event ID, correlate with Splunk logs, create a security incident, and alert the SOC.
      inputParameters:
      - name: okta_user_id
        in: body
        type: string
        description: Okta user ID with suspicious activity.
      - name: event_id
        in: body
        type: string
        description: Okta system log event ID.
      steps:
      - name: get-okta-event
        type: call
        call: okta-sec.get-event
        with:
          event_id: '{{event_id}}'
      - name: search-splunk
        type: call
        call: splunk-sec.create-search
        with:
          search: index=security sourcetype=okta user={{okta_user_id}} earliest=-24h
      - name: create-security-incident
        type: call
        call: snow-sec.create-incident
        with:
          short_description: 'Suspicious login: {{okta_user_id}}'
          description: 'Okta event: {{event_id}}

            Client IP: {{get-okta-event.client_ip}}

            Correlated events: {{search-splunk.result_count}}'
          category: security
          priority: '2'
      - name: alert-soc
        type: call
        call: slack-soc.post-message
        with:
          channel: $secrets.soc_slack_channel
          text: 'Security Alert: Suspicious login for {{okta_user_id}} | {{search-splunk.result_count}} correlated events | Incident: {{create-security-incident.number}}'
  consumes:
  - type: http
    namespace: okta-sec
    baseUri: https://morganstanley.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_token
      placement: header
    resources:
    - name: events
      path: /logs
      operations:
      - name: get-event
        method: GET
  - type: http
    namespace: splunk-sec
    baseUri: https://splunk.morganstanley.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: create-search
        method: POST
  - type: http
    namespace: snow-sec
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: 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-soc
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-activity-to-splunk-investigation.yml

Detects infrastructure drift via Terraform Cloud, creates a Jira remediation ticket, and alerts the platform engineering team via Slack.

naftiko: '0.5'
info:
  label: Terraform Drift Detection Remediation
  description: Detects infrastructure drift via Terraform Cloud, creates a Jira remediation ticket, and alerts the platform engineering team via Slack.
  tags:
  - infrastructure
  - iac
  - terraform
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: tf-drift
    port: 8080
    tools:
    - name: handle-terraform-drift
      description: Given a Terraform workspace ID, check for drift, create a Jira ticket, and notify the platform team.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Terraform Cloud workspace ID.
      steps:
      - name: check-drift
        type: call
        call: terraform-api.get-workspace-status
        with:
          workspace_id: '{{workspace_id}}'
      - name: create-remediation-ticket
        type: call
        call: jira-infra.create-issue
        with:
          project_key: PLATFORM
          issuetype: Bug
          summary: 'Terraform drift: {{check-drift.workspace_name}}'
          description: 'Workspace: {{check-drift.workspace_name}}

            Resources drifted: {{check-drift.drift_count}}'
      - name: notify-team
        type: call
        call: slack-platform.post-message
        with:
          channel: $secrets.platform_slack_channel
          text: 'Terraform Drift: {{check-drift.workspace_name}} | {{check-drift.drift_count}} resources | Jira: {{create-remediation-ticket.key}}'
  consumes:
  - type: http
    namespace: terraform-api
    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-workspace-status
        method: GET
  - type: http
    namespace: jira-infra
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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-platform
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → terraform-drift-detection-remediation.yml

Retrieves consensus earnings estimates for a given security from FactSet, supporting equity research and investment decision workflows.

naftiko: '0.5'
info:
  label: FactSet Earnings Estimate Lookup
  description: Retrieves consensus earnings estimates for a given security from FactSet, supporting equity research and investment decision workflows.
  tags:
  - research
  - equity
  - factset
capability:
  exposes:
  - type: mcp
    namespace: factset-estimates
    port: 8080
    tools:
    - name: get-earnings-estimates
      description: Given a FactSet security identifier, return consensus EPS estimates for the next four quarters.
      inputParameters:
      - name: security_id
        in: body
        type: string
        description: FactSet security identifier.
      call: factset-api.get-estimates
      with:
        id: '{{security_id}}'
      outputParameters:
      - name: estimates
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: factset-api
    baseUri: https://api.factset.com/analytics/v3
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_api_key
    resources:
    - name: estimates
      path: /estimates/{{id}}/consensus
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-estimates
        method: GET
Open in Framework → View in Fleet → factset-earnings-estimate-lookup.yml

Validates a deployment release in Azure DevOps, checks SonarQube quality gate status, and posts approval request to the release management Slack channel.

naftiko: '0.5'
info:
  label: Azure DevOps Deployment Approval Gate
  description: Validates a deployment release in Azure DevOps, checks SonarQube quality gate status, and posts approval request to the release management Slack channel.
  tags:
  - devops
  - deployment
  - azure-devops
  - sonarqube
  - slack
capability:
  exposes:
  - type: mcp
    namespace: deploy-gate
    port: 8080
    tools:
    - name: validate-deployment
      description: Given an Azure DevOps release ID and project, check quality gates and post approval request to Slack.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Azure DevOps project name.
      - name: release_id
        in: body
        type: string
        description: Azure DevOps release ID.
      steps:
      - name: get-release
        type: call
        call: azdo-release.get-release
        with:
          project: '{{project}}'
          release_id: '{{release_id}}'
      - name: check-quality-gate
        type: call
        call: sonarqube-api.get-quality-gate
        with:
          project_key: '{{get-release.artifact_source}}'
      - name: post-approval-request
        type: call
        call: slack-release.post-message
        with:
          channel: $secrets.release_mgmt_channel
          text: 'Deployment approval needed: {{project}} release {{release_id}}

            Quality Gate: {{check-quality-gate.status}}

            Artifact: {{get-release.artifact_version}}'
  consumes:
  - type: http
    namespace: azdo-release
    baseUri: https://vsrm.dev.azure.com/morganstanley
    authentication:
      type: bearer
      token: $secrets.azdo_pat
    resources:
    - name: releases
      path: /{{project}}/_apis/release/releases/{{release_id}}
      inputParameters:
      - name: project
        in: path
      - name: release_id
        in: path
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: sonarqube-api
    baseUri: https://sonarqube.morganstanley.com/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: slack-release
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-devops-deployment-approval-gate.yml

Queries Workday for employees with pending benefits elections, sends personalized Microsoft Teams reminders, and logs outreach to Snowflake for HR analytics.

naftiko: '0.5'
info:
  label: Workday Benefits Enrollment Reminder
  description: Queries Workday for employees with pending benefits elections, sends personalized Microsoft Teams reminders, and logs outreach to Snowflake for HR analytics.
  tags:
  - hr
  - benefits
  - workday
  - microsoft-teams
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: benefits-reminder
    port: 8080
    tools:
    - name: send-enrollment-reminders
      description: Given an enrollment period ID, find employees with pending elections, send Teams reminders, and log outreach.
      inputParameters:
      - name: enrollment_period_id
        in: body
        type: string
        description: Workday benefits enrollment period identifier.
      steps:
      - name: get-pending-enrollments
        type: call
        call: workday-benefits.get-pending
        with:
          period_id: '{{enrollment_period_id}}'
      - name: send-reminder
        type: call
        call: teams-hr.send-message
        with:
          recipient_upn: '{{get-pending-enrollments.employee_email}}'
          text: 'Reminder: Your benefits enrollment for {{enrollment_period_id}} is pending. Please complete your elections in Workday by the deadline.'
      - name: log-outreach
        type: call
        call: snowflake-hr.insert-record
        with:
          table: HR.BENEFITS_OUTREACH_LOG
          period_id: '{{enrollment_period_id}}'
          employee_count: '{{get-pending-enrollments.count}}'
  consumes:
  - type: http
    namespace: workday-benefits
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: enrollments
      path: /morganstanley/benefits/enrollments
      operations:
      - name: get-pending
        method: GET
  - type: http
    namespace: teams-hr
    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: snowflake-hr
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → workday-benefits-enrollment-reminder.yml

Calculates client revenue attribution from Snowflake, updates Salesforce account records, and refreshes the Tableau revenue dashboard.

naftiko: '0.5'
info:
  label: Snowflake Client Revenue Attribution Report
  description: Calculates client revenue attribution from Snowflake, updates Salesforce account records, and refreshes the Tableau revenue dashboard.
  tags:
  - finance
  - revenue
  - snowflake
  - salesforce
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: revenue-attribution
    port: 8080
    tools:
    - name: run-revenue-attribution
      description: Given a fiscal period, calculate revenue attribution and update downstream systems.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period (e.g., 2026-Q1).
      steps:
      - name: calculate-attribution
        type: call
        call: snowflake-rev.execute-query
        with:
          statement: CALL FINANCE.CALCULATE_REVENUE_ATTRIBUTION('{{fiscal_period}}')
      - name: update-salesforce
        type: call
        call: sfdc-rev.update-accounts
        with:
          period: '{{fiscal_period}}'
          data: '{{calculate-attribution.results}}'
      - name: refresh-dashboard
        type: call
        call: tableau-rev.trigger-refresh
        with:
          datasource_id: $secrets.tableau_revenue_datasource_id
  consumes:
  - type: http
    namespace: snowflake-rev
    baseUri: https://morganstanley.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: sfdc-rev
    baseUri: https://morganstanley.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /composite/sobjects
      operations:
      - name: update-accounts
        method: PATCH
  - type: http
    namespace: tableau-rev
    baseUri: https://tableau.morganstanley.com/api/3.19
    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: trigger-refresh
        method: POST
Open in Framework → View in Fleet → snowflake-client-revenue-attribution-report.yml

Triages Microsoft Sentinel security alerts by enriching with Splunk log data, creates a ServiceNow security incident, and notifies the SOC team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Microsoft Sentinel Alert Triage
  description: Triages Microsoft Sentinel security alerts by enriching with Splunk log data, creates a ServiceNow security incident, and notifies the SOC team via Microsoft Teams.
  tags:
  - security
  - siem
  - microsoft-sentinel
  - splunk
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sentinel-triage
    port: 8080
    tools:
    - name: triage-sentinel-alert
      description: Given a Sentinel alert ID, enrich with Splunk data, create a ServiceNow incident, and notify the SOC.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Microsoft Sentinel alert ID.
      steps:
      - name: get-alert
        type: call
        call: sentinel-api.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: correlate-logs
        type: call
        call: splunk-soc.create-search
        with:
          search: index=security {{get-alert.entities}} earliest=-1h
      - name: create-incident
        type: call
        call: snow-soc.create-incident
        with:
          short_description: 'Sentinel: {{get-alert.display_name}}'
          description: 'Severity: {{get-alert.severity}}

            Correlated events: {{correlate-logs.result_count}}'
          priority: '2'
  consumes:
  - type: http
    namespace: sentinel-api
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: alerts
      path: /providers/Microsoft.SecurityInsights/incidents/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-alert
        method: GET
  - type: http
    namespace: splunk-soc
    baseUri: https://splunk.morganstanley.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: create-search
        method: POST
  - type: http
    namespace: snow-soc
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → microsoft-sentinel-alert-triage.yml

When a New Relic alert condition fires, retrieves violation details, creates a PagerDuty incident, and posts a notification to the engineering Slack channel.

naftiko: '0.5'
info:
  label: New Relic Alert to PagerDuty Escalation
  description: When a New Relic alert condition fires, retrieves violation details, creates a PagerDuty incident, and posts a notification to the engineering Slack channel.
  tags:
  - monitoring
  - incident-response
  - new-relic
  - pagerduty
  - slack
capability:
  exposes:
  - type: mcp
    namespace: nr-escalation
    port: 8080
    tools:
    - name: escalate-nr-alert
      description: Given a New Relic violation ID, retrieve details, create a PagerDuty incident, and notify the engineering Slack channel.
      inputParameters:
      - name: violation_id
        in: body
        type: string
        description: New Relic alert violation ID.
      - name: slack_channel_id
        in: body
        type: string
        description: Slack channel ID for engineering notifications.
      steps:
      - name: get-violation
        type: call
        call: newrelic-api.get-violation
        with:
          violation_id: '{{violation_id}}'
      - name: create-incident
        type: call
        call: pagerduty-api.create-incident
        with:
          service_id: $secrets.pagerduty_infra_service_id
          summary: 'New Relic: {{get-violation.condition_name}} on {{get-violation.entity_name}}'
          severity: critical
      - name: notify-slack
        type: call
        call: slack-eng.post-message
        with:
          channel: '{{slack_channel_id}}'
          text: 'New Relic Alert: {{get-violation.condition_name}} | Entity: {{get-violation.entity_name}} | PagerDuty: {{create-incident.incidentId}}'
  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/{{violation_id}}.json
      inputParameters:
      - name: violation_id
        in: path
      operations:
      - name: get-violation
        method: GET
  - type: http
    namespace: pagerduty-api
    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: 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
Open in Framework → View in Fleet → new-relic-alert-to-pagerduty-escalation.yml

When a Datadog SLI breaches its SLO threshold, creates a ServiceNow problem record and posts an alert to the reliability engineering Slack channel.

naftiko: '0.5'
info:
  label: Datadog SLI Breach to ServiceNow Problem
  description: When a Datadog SLI breaches its SLO threshold, creates a ServiceNow problem record and posts an alert to the reliability engineering Slack channel.
  tags:
  - sre
  - reliability
  - datadog
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sli-breach
    port: 8080
    tools:
    - name: handle-sli-breach
      description: Given a Datadog SLO ID and service name, create a ServiceNow problem and notify the SRE team.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: Datadog SLO ID that breached.
      - name: service_name
        in: body
        type: string
        description: Name of the service with the SLO breach.
      steps:
      - name: get-slo-details
        type: call
        call: datadog-slo.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: create-problem
        type: call
        call: snow-sre.create-problem
        with:
          short_description: 'SLO breach: {{service_name}} - {{get-slo-details.name}}'
          description: 'SLO: {{get-slo-details.name}}

            Target: {{get-slo-details.target_threshold}}

            Current: {{get-slo-details.overall_status}}'
          assignment_group: Site_Reliability_Engineering
      - name: alert-sre
        type: call
        call: slack-sre.post-message
        with:
          channel: $secrets.sre_slack_channel
          text: 'SLO Breach: {{service_name}} | Target: {{get-slo-details.target_threshold}} | Problem: {{create-problem.number}}'
  consumes:
  - type: http
    namespace: datadog-slo
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo/{{slo_id}}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - type: http
    namespace: snow-sre
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: problems
      path: /table/problem
      operations:
      - name: create-problem
        method: POST
  - type: http
    namespace: slack-sre
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-sli-breach-to-servicenow-problem.yml

Aggregates sprint velocity metrics from Jira, stores historical data in Snowflake, and publishes a quarterly engineering report to Confluence.

naftiko: '0.5'
info:
  label: Jira Quarterly Velocity Report
  description: Aggregates sprint velocity metrics from Jira, stores historical data in Snowflake, and publishes a quarterly engineering report to Confluence.
  tags:
  - engineering
  - velocity
  - jira
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: velocity-report
    port: 8080
    tools:
    - name: generate-velocity-report
      description: Given a Jira board ID and quarter, generate a velocity report and publish to Confluence.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID.
      - name: quarter
        in: body
        type: string
        description: Quarter (e.g., Q1-2026).
      steps:
      - name: get-velocity
        type: call
        call: jira-vel.get-board-velocity
        with:
          board_id: '{{board_id}}'
      - name: store-metrics
        type: call
        call: snowflake-vel.insert-record
        with:
          table: ENGINEERING.VELOCITY_METRICS
          board_id: '{{board_id}}'
          quarter: '{{quarter}}'
          avg_velocity: '{{get-velocity.average}}'
      - name: publish-report
        type: call
        call: confluence-vel.create-page
        with:
          space: ENG
          title: Velocity Report - {{quarter}}
          body: 'Average velocity: {{get-velocity.average}} points

            Sprints completed: {{get-velocity.sprint_count}}'
  consumes:
  - type: http
    namespace: jira-vel
    baseUri: https://morganstanley.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: boards
      path: /board/{{board_id}}/sprint
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-board-velocity
        method: GET
  - type: http
    namespace: snowflake-vel
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
  - type: http
    namespace: confluence-vel
    baseUri: https://morganstanley.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → jira-quarterly-velocity-report.yml

Returns the current status, owner, and last published date for a Tableau workbook, supporting dashboard governance and monitoring.

naftiko: '0.5'
info:
  label: Tableau Workbook Status Check
  description: Returns the current status, owner, and last published date for a Tableau workbook, supporting dashboard governance and monitoring.
  tags:
  - reporting
  - visualization
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: tableau-status
    port: 8080
    tools:
    - name: get-workbook-status
      description: Given a Tableau workbook ID, return the workbook name, owner, project, and last updated timestamp.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau Server workbook ID.
      call: tableau-api.get-workbook
      with:
        id: '{{workbook_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.workbook.name
      - name: owner
        type: string
        mapping: $.workbook.owner.name
  consumes:
  - type: http
    namespace: tableau-api
    baseUri: https://tableau.morganstanley.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/default/workbooks/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-workbook
        method: GET
Open in Framework → View in Fleet → tableau-workbook-status-check.yml

Monitors Snowflake task execution history for financial data pipeline failures, creates ServiceNow incidents for repeated failures, and posts a pipeline health digest to the Data Engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Financial Data Pipeline Monitor
  description: Monitors Snowflake task execution history for financial data pipeline failures, creates ServiceNow incidents for repeated failures, and posts a pipeline health digest to the Data Engineering Microsoft Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - servicenow
  - microsoft-teams
  - pipeline-monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-pipeline-ops
    port: 8080
    tools:
    - name: monitor-financial-pipelines
      description: Given a Snowflake warehouse name and failure threshold, check task execution history for the last 24 hours, open ServiceNow incidents for failing tasks, and post a digest to the DataEngineering Teams channel.
      inputParameters:
      - name: warehouse_name
        in: body
        type: string
        description: Snowflake warehouse name to monitor task history for.
      - name: failure_threshold
        in: body
        type: integer
        description: Number of task failures in 24 hours that triggers a ServiceNow incident.
      steps:
      - name: get-task-failures
        type: call
        call: snowflake-pipeline.query-task-history
        with:
          warehouse: '{{warehouse_name}}'
          state: FAILED
      - name: create-snow-incident
        type: call
        call: servicenow-data.create-incident
        with:
          short_description: 'Snowflake pipeline failures: {{warehouse_name}} — {{get-task-failures.failure_count}} failures'
          category: data_engineering
          urgency: '2'
      - name: post-digest
        type: call
        call: msteams-dataeng.post-channel-message
        with:
          channel_id: DataEngineering
          text: 'Pipeline monitor: {{get-task-failures.failure_count}} task failures in {{warehouse_name}}. SNOW: {{create-snow-incident.number}}'
  consumes:
  - type: http
    namespace: snowflake-pipeline
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /databases/PROD/schemas/FINANCE/tasks/executions
      inputParameters:
      - name: warehouse
        in: query
      - name: state
        in: query
      operations:
      - name: query-task-history
        method: GET
  - type: http
    namespace: servicenow-data
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-financial-data-pipeline-monitor.yml

Retrieves operational runbook steps from Confluence, validates preconditions via Datadog health checks, and logs execution results to ServiceNow.

naftiko: '0.5'
info:
  label: Confluence Runbook Automated Execution
  description: Retrieves operational runbook steps from Confluence, validates preconditions via Datadog health checks, and logs execution results to ServiceNow.
  tags:
  - operations
  - runbooks
  - confluence
  - datadog
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: runbook-exec
    port: 8080
    tools:
    - name: execute-runbook
      description: Given a Confluence runbook page ID, validate preconditions and log execution results.
      inputParameters:
      - name: runbook_page_id
        in: body
        type: string
        description: Confluence runbook page ID.
      - name: service_name
        in: body
        type: string
        description: Target service for runbook execution.
      steps:
      - name: get-runbook
        type: call
        call: confluence-rb.get-page
        with:
          page_id: '{{runbook_page_id}}'
      - name: check-preconditions
        type: call
        call: datadog-rb.get-service-health
        with:
          service: '{{service_name}}'
      - name: log-execution
        type: call
        call: snow-rb.create-record
        with:
          short_description: 'Runbook executed: {{get-runbook.title}}'
          description: 'Service: {{service_name}}

            Precondition check: {{check-preconditions.overall_state}}'
  consumes:
  - type: http
    namespace: confluence-rb
    baseUri: https://morganstanley.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: datadog-rb
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: services
      path: /service_level_objectives
      operations:
      - name: get-service-health
        method: GET
  - type: http
    namespace: snow-rb
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/change_request
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → confluence-runbook-automated-execution.yml

Processes IT asset retirements by updating ServiceNow CMDB records, triggering data wipe verification via Jira, and logging to Snowflake for audit.

naftiko: '0.5'
info:
  label: ServiceNow Asset Lifecycle Retirement
  description: Processes IT asset retirements by updating ServiceNow CMDB records, triggering data wipe verification via Jira, and logging to Snowflake for audit.
  tags:
  - asset-management
  - lifecycle
  - servicenow
  - jira
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: asset-retire
    port: 8080
    tools:
    - name: retire-asset
      description: Given a ServiceNow asset tag, process the retirement workflow.
      inputParameters:
      - name: asset_tag
        in: body
        type: string
        description: ServiceNow asset tag to retire.
      steps:
      - name: get-asset
        type: call
        call: snow-asset.get-ci
        with:
          asset_tag: '{{asset_tag}}'
      - name: create-wipe-ticket
        type: call
        call: jira-asset.create-issue
        with:
          project_key: ITSEC
          issuetype: Task
          summary: 'Data wipe verification: {{asset_tag}}'
          description: 'Asset: {{get-asset.name}}

            Type: {{get-asset.ci_type}}

            Serial: {{get-asset.serial_number}}

            Verify data wipe before disposal.'
      - name: log-retirement
        type: call
        call: snowflake-asset.insert-record
        with:
          table: IT.ASSET_RETIREMENT_LOG
          asset_tag: '{{asset_tag}}'
          ci_type: '{{get-asset.ci_type}}'
          wipe_ticket: '{{create-wipe-ticket.key}}'
  consumes:
  - type: http
    namespace: snow-asset
    baseUri: https://morganstanley.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
  - type: http
    namespace: jira-asset
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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-asset
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → servicenow-asset-lifecycle-retirement.yml

Queries Snowflake for quarterly risk metrics, generates a summary report using Anthropic Claude, and publishes to Confluence with a Microsoft Teams notification.

naftiko: '0.5'
info:
  label: Quarterly Risk Report Generation
  description: Queries Snowflake for quarterly risk metrics, generates a summary report using Anthropic Claude, and publishes to Confluence with a Microsoft Teams notification.
  tags:
  - risk-management
  - reporting
  - snowflake
  - anthropic
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: risk-report
    port: 8080
    tools:
    - name: generate-quarterly-risk-report
      description: Given a fiscal quarter, generate a risk report from Snowflake data, summarize with Claude, and publish to Confluence.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter (e.g., Q1-2026).
      steps:
      - name: get-risk-metrics
        type: call
        call: snowflake-risk.execute-query
        with:
          statement: SELECT risk_category, var_95, expected_shortfall, stress_test_result FROM risk.quarterly_metrics WHERE quarter = '{{fiscal_quarter}}'
      - name: generate-summary
        type: call
        call: anthropic-risk.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Generate an executive summary of quarterly risk metrics for {{fiscal_quarter}}: {{get-risk-metrics.data}}. Include key findings and recommendations.'
      - name: publish-report
        type: call
        call: confluence-risk.create-page
        with:
          space: RISK
          title: Quarterly Risk Report - {{fiscal_quarter}}
          body: '{{generate-summary.text}}'
  consumes:
  - type: http
    namespace: snowflake-risk
    baseUri: https://morganstanley.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-risk
    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-risk
    baseUri: https://morganstanley.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → quarterly-risk-report-generation.yml

When Dependabot finds critical vulnerabilities, creates a prioritized Jira security ticket, assigns to the owning team, and tracks remediation SLA in Snowflake.

naftiko: '0.5'
info:
  label: GitHub Dependency Vulnerability Remediation
  description: When Dependabot finds critical vulnerabilities, creates a prioritized Jira security ticket, assigns to the owning team, and tracks remediation SLA in Snowflake.
  tags:
  - security
  - vulnerability
  - github
  - jira
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: vuln-remediation
    port: 8080
    tools:
    - name: handle-vulnerability
      description: Given a GitHub Dependabot alert, create a Jira ticket and track the remediation SLA.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository with the vulnerability.
      - name: alert_number
        in: body
        type: string
        description: Dependabot alert number.
      steps:
      - name: get-alert
        type: call
        call: github-vuln.get-dependabot-alert
        with:
          repo: '{{repo}}'
          alert_number: '{{alert_number}}'
      - name: create-ticket
        type: call
        call: jira-vuln.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Vulnerability: {{get-alert.package_name}} in {{repo}}'
          description: 'Severity: {{get-alert.severity}}

            Package: {{get-alert.package_name}}

            CVE: {{get-alert.cve_id}}

            Fixed version: {{get-alert.fixed_version}}'
          priority: High
      - name: track-sla
        type: call
        call: snowflake-vuln.insert-record
        with:
          table: SECURITY.VULNERABILITY_SLA_TRACKING
          repo: '{{repo}}'
          severity: '{{get-alert.severity}}'
          jira_key: '{{create-ticket.key}}'
  consumes:
  - type: http
    namespace: github-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://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: 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-vuln
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → github-dependency-vulnerability-remediation.yml

Compares ADP payroll run totals against Snowflake budget forecasts, creates a ServiceNow task for finance review if variance exceeds threshold, and notifies via Teams.

naftiko: '0.5'
info:
  label: ADP Payroll Variance Alert
  description: Compares ADP payroll run totals against Snowflake budget forecasts, creates a ServiceNow task for finance review if variance exceeds threshold, and notifies via Teams.
  tags:
  - finance
  - payroll
  - adp
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: payroll-variance
    port: 8080
    tools:
    - name: check-payroll-variance
      description: Given a payroll period, compare ADP actuals against Snowflake budget and alert if variance exceeds threshold.
      inputParameters:
      - name: payroll_period
        in: body
        type: string
        description: Payroll period identifier (e.g., 2026-03).
      - name: variance_threshold
        in: body
        type: number
        description: Percentage variance threshold.
      steps:
      - name: get-budget-forecast
        type: call
        call: snowflake-payroll.execute-query
        with:
          statement: SELECT department, budgeted_amount, actual_amount, ((actual_amount - budgeted_amount)/budgeted_amount * 100) as variance_pct FROM finance.payroll_budget WHERE period = '{{payroll_period}}' AND ABS(variance_pct) > {{variance_threshold}}
      - name: create-review-task
        type: call
        call: snow-finance.create-task
        with:
          short_description: 'Payroll variance alert: {{payroll_period}}'
          description: Departments exceeding {{variance_threshold}}% variance threshold identified.
          assignment_group: Finance_Payroll
      - name: notify-finance
        type: call
        call: teams-payroll.send-message
        with:
          channel_id: $secrets.finance_teams_channel
          text: 'Payroll Variance Alert: Period {{payroll_period}} has departments exceeding {{variance_threshold}}% variance. ServiceNow: {{create-review-task.number}}'
  consumes:
  - type: http
    namespace: snowflake-payroll
    baseUri: https://morganstanley.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: snow-finance
    baseUri: https://morganstanley.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: teams-payroll
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/$secrets.finance_team_id/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → adp-payroll-variance-alert.yml

Returns metadata for a GitHub repository including language breakdown, open issues count, last commit date, and CI status.

naftiko: '0.5'
info:
  label: GitHub Repository Info Lookup
  description: Returns metadata for a GitHub repository including language breakdown, open issues count, last commit date, and CI status.
  tags:
  - development
  - source-control
  - github
capability:
  exposes:
  - type: mcp
    namespace: gh-repo
    port: 8080
    tools:
    - name: get-repo-info
      description: Given an organization and repository name, return its description, primary language, open issues count, and default branch.
      inputParameters:
      - name: org
        in: body
        type: string
        description: GitHub organization name.
      - name: repo
        in: body
        type: string
        description: Repository name.
      call: github-api.get-repository
      with:
        owner: '{{org}}'
        repo: '{{repo}}'
      outputParameters:
      - name: description
        type: string
        mapping: $.description
      - name: language
        type: string
        mapping: $.language
  consumes:
  - type: http
    namespace: github-api
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{owner}}/{{repo}}
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      operations:
      - name: get-repository
        method: GET
Open in Framework → View in Fleet → github-repository-info-lookup.yml

Fetches completed Jira sprint metrics for the technology division, generates a sprint report, and posts a digest to the Technology Leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Jira Development Sprint Reporting
  description: Fetches completed Jira sprint metrics for the technology division, generates a sprint report, and posts a digest to the Technology Leadership Microsoft Teams channel.
  tags:
  - devops
  - engineering
  - jira
  - microsoft-teams
  - agile
  - sprint-reporting
capability:
  exposes:
  - type: mcp
    namespace: sprint-reporting
    port: 8080
    tools:
    - name: publish-sprint-report
      description: Given a Jira board ID and the number of sprints to analyze, calculate velocity, bug rate, and completion rate, then post a sprint report digest to the Technology Leadership Teams channel.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID to pull sprint data from.
      - name: sprint_count
        in: body
        type: integer
        description: Number of completed sprints to include in the report.
      steps:
      - name: get-sprint-data
        type: call
        call: jira-sprints.list-completed-sprints
        with:
          board_id: '{{board_id}}'
          limit: '{{sprint_count}}'
      - name: post-report
        type: call
        call: msteams-tech.post-channel-message
        with:
          channel_id: TechLeadership
          text: 'Sprint report for board {{board_id}}: Avg velocity {{get-sprint-data.avg_velocity}} pts | Bug rate {{get-sprint-data.bug_rate}}% | Completion rate {{get-sprint-data.completion_rate}}% over {{sprint_count}} sprints.'
  consumes:
  - type: http
    namespace: jira-sprints
    baseUri: https://morganstanley.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: board-sprints
      path: /board/{{board_id}}/sprint
      inputParameters:
      - name: board_id
        in: path
      - name: limit
        in: query
      operations:
      - name: list-completed-sprints
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → jira-development-sprint-reporting.yml

Queries Workday Learning for employees with overdue compliance training, sends reminder emails via Microsoft Graph, and logs outreach to Snowflake for tracking.

naftiko: '0.5'
info:
  label: Workday Learning Compliance Tracker
  description: Queries Workday Learning for employees with overdue compliance training, sends reminder emails via Microsoft Graph, and logs outreach to Snowflake for tracking.
  tags:
  - hr
  - compliance-training
  - workday
  - microsoft-teams
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: track-overdue-training
      description: Query Workday for overdue compliance training and send reminders via Teams.
      inputParameters:
      - name: training_program_id
        in: body
        type: string
        description: Workday training program identifier.
      steps:
      - name: get-overdue
        type: call
        call: workday-learning.get-overdue
        with:
          program_id: '{{training_program_id}}'
      - name: send-reminders
        type: call
        call: teams-training.send-message
        with:
          recipient_upn: '{{get-overdue.employee_email}}'
          text: 'Action Required: Your compliance training ''{{get-overdue.course_name}}'' is overdue. Please complete it in Workday Learning immediately.'
      - name: log-outreach
        type: call
        call: snowflake-training.insert-record
        with:
          table: HR.TRAINING_OUTREACH_LOG
          program_id: '{{training_program_id}}'
          overdue_count: '{{get-overdue.count}}'
  consumes:
  - type: http
    namespace: workday-learning
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: learning
      path: /morganstanley/learning/overdue
      operations:
      - name: get-overdue
        method: GET
  - type: http
    namespace: teams-training
    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: snowflake-training
    baseUri: https://morganstanley.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-record
        method: POST
Open in Framework → View in Fleet → workday-learning-compliance-tracker.yml

Analyzes client engagement metrics from Salesforce and Snowflake, identifies churn risk accounts, and creates retention tasks for relationship managers with Teams notifications.

naftiko: '0.5'
info:
  label: Salesforce Client Churn Risk Alert
  description: Analyzes client engagement metrics from Salesforce and Snowflake, identifies churn risk accounts, and creates retention tasks for relationship managers with Teams notifications.
  tags:
  - client-retention
  - analytics
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: churn-risk
    port: 8080
    tools:
    - name: identify-churn-risk
      description: Given a risk threshold score, identify at-risk accounts and create retention tasks.
      inputParameters:
      - name: risk_threshold
        in: body
        type: number
        description: Churn risk score threshold (0-100).
      steps:
      - name: get-risk-scores
        type: call
        call: snowflake-churn.execute-query
        with:
          statement: SELECT account_id, account_name, churn_risk_score, last_interaction_days FROM analytics.client_churn_model WHERE churn_risk_score > {{risk_threshold}} ORDER BY churn_risk_score DESC
      - name: create-retention-task
        type: call
        call: sfdc-churn.create-task
        with:
          subject: 'Retention outreach: {{get-risk-scores.account_name}}'
          description: 'Churn risk score: {{get-risk-scores.churn_risk_score}}

            Days since last interaction: {{get-risk-scores.last_interaction_days}}'
          priority: High
      - name: notify-rm
        type: call
        call: teams-churn.send-message
        with:
          channel_id: $secrets.wm_teams_channel
          text: 'Churn Risk Alert: {{get-risk-scores.account_name}} (Score: {{get-risk-scores.churn_risk_score}}). Retention task created in Salesforce.'
  consumes:
  - type: http
    namespace: snowflake-churn
    baseUri: https://morganstanley.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: sfdc-churn
    baseUri: https://morganstanley.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: teams-churn
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/$secrets.wm_team_id/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salesforce-client-churn-risk-alert.yml

Checks the status of an Informatica data integration job, returning job state, start time, and rows processed.

naftiko: '0.5'
info:
  label: Informatica Data Integration Status
  description: Checks the status of an Informatica data integration job, returning job state, start time, and rows processed.
  tags:
  - data-engineering
  - informatica
  - integration
capability:
  exposes:
  - type: mcp
    namespace: data-integration
    port: 8080
    tools:
    - name: get-integration-status
      description: Check Informatica job status by run ID.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: The Informatica run identifier.
      call: informatica.get-job-status
      with:
        run_id: '{{run_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: start_time
        type: string
        mapping: $.startTime
      - name: rows_processed
        type: string
        mapping: $.targetRowsInserted
  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: /activity/activityLog/{{run_id}}
      inputParameters:
      - name: run_id
        in: path
      operations:
      - name: get-job-status
        method: GET
Open in Framework → View in Fleet → informatica-data-integration-status.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 4
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-4
      path: /data-4/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-4
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-4.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 5
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-5
      path: /data-5/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-5
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-5.yml

Checks the status of an Oracle GoldenGate replication process, returning lag time, status, and checkpoint position.

naftiko: '0.5'
info:
  label: Oracle GoldenGate Replication Status
  description: Checks the status of an Oracle GoldenGate replication process, returning lag time, status, and checkpoint position.
  tags:
  - data-engineering
  - oracle-goldengate
  - replication
capability:
  exposes:
  - type: mcp
    namespace: data-replication
    port: 8080
    tools:
    - name: get-replication-status
      description: Check Oracle GoldenGate replication process status.
      inputParameters:
      - name: process_name
        in: body
        type: string
        description: The GoldenGate process name.
      call: goldengate.get-process
      with:
        process_name: '{{process_name}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: lag_seconds
        type: string
        mapping: $.lagSeconds
      - name: checkpoint
        type: string
        mapping: $.checkpointPosition
  consumes:
  - type: http
    namespace: goldengate
    baseUri: https://newyorklife-gg.oraclecloud.com/services/v2
    authentication:
      type: bearer
      token: $secrets.goldengate_token
    resources:
    - name: processes
      path: /deployments/current/processes/{{process_name}}
      inputParameters:
      - name: process_name
        in: path
      operations:
      - name: get-process
        method: GET
Open in Framework → View in Fleet → oracle-goldengate-replication-status.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 7
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-7
      path: /data-7/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-7
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-7.yml

Queries Datadog for the current health status of New York Life infrastructure, returning host count, alert counts, and critical monitors.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Health Check
  description: Queries Datadog for the current health status of New York Life infrastructure, returning host count, alert counts, and critical monitors.
  tags:
  - infrastructure
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-infra-health
      description: Retrieve Datadog infrastructure health summary.
      inputParameters:
      - name: environment
        in: body
        type: string
        description: The environment to check (production, staging).
      call: datadog.get-monitors
      with:
        environment: '{{environment}}'
      outputParameters:
      - name: total_hosts
        type: string
        mapping: $.total_hosts
      - name: active_alerts
        type: string
        mapping: $.alert_count
      - name: critical_monitors
        type: array
        mapping: $.critical_monitors
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor
      operations:
      - name: get-monitors
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-health-check.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 6
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-6
      path: /data-6/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-6.yml

Retrieves a customer service case from Salesforce Service Cloud by case number, returning status, subject, priority, and assigned agent.

naftiko: '0.5'
info:
  label: Salesforce Service Cloud Case Lookup
  description: Retrieves a customer service case from Salesforce Service Cloud by case number, returning status, subject, priority, and assigned agent.
  tags:
  - customer-service
  - salesforce-service-cloud
capability:
  exposes:
  - type: mcp
    namespace: customer-service
    port: 8080
    tools:
    - name: get-service-case
      description: Look up a Salesforce Service Cloud case by case number.
      inputParameters:
      - name: case_number
        in: body
        type: string
        description: The Salesforce case number.
      call: salesforce.get-case
      with:
        case_number: '{{case_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: subject
        type: string
        mapping: $.Subject
      - name: priority
        type: string
        mapping: $.Priority
      - name: owner
        type: string
        mapping: $.Owner.Name
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case/{{case_number}}
      inputParameters:
      - name: case_number
        in: path
      operations:
      - name: get-case
        method: GET
Open in Framework → View in Fleet → salesforce-service-cloud-case-lookup.yml

Generates and sends policyholder communications by pulling policy data from Salesforce, creating the communication in Adobe Campaign, and logging the outreach in ServiceNow.

naftiko: '0.5'
info:
  label: Policyholder Communication Orchestrator
  description: Generates and sends policyholder communications by pulling policy data from Salesforce, creating the communication in Adobe Campaign, and logging the outreach in ServiceNow.
  tags:
  - communications
  - policyholder
  - salesforce
  - adobe-campaign
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: policyholder-comms
    port: 8080
    tools:
    - name: send-policyholder-communication
      description: Given a policy number and communication type, pull policy data, trigger the Adobe Campaign email, and log the activity.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: communication_type
        in: body
        type: string
        description: Type of communication (renewal notice, premium reminder, beneficiary update).
      steps:
      - name: get-policy
        type: call
        call: salesforce.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: send-email
        type: call
        call: adobe-campaign.trigger-email
        with:
          template: '{{communication_type}}'
          recipient_email: '{{get-policy.policyholder_email}}'
          policy_number: '{{policy_number}}'
          policyholder_name: '{{get-policy.policyholder_name}}'
      - name: log-activity
        type: call
        call: servicenow.create-record
        with:
          table: communication_log
          policy_number: '{{policy_number}}'
          type: '{{communication_type}}'
          status: sent
          campaign_id: '{{send-email.campaign_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/newyorklife/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: email-triggers
      path: /profileAndServicesExt/aemTriggerEvent
      operations:
      - name: trigger-email
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → policyholder-communication-orchestrator.yml

Retrieves portfolio valuation data from SimCorp Dimension for a given fund, returning net asset value, security positions, and unrealized gains.

naftiko: '0.5'
info:
  label: SimCorp Portfolio Valuation
  description: Retrieves portfolio valuation data from SimCorp Dimension for a given fund, returning net asset value, security positions, and unrealized gains.
  tags:
  - wealth-management
  - portfolio-valuation
  - simcorp-dimension
capability:
  exposes:
  - type: mcp
    namespace: portfolio-valuation
    port: 8080
    tools:
    - name: get-portfolio-valuation
      description: Look up portfolio valuation in SimCorp Dimension by fund code.
      inputParameters:
      - name: fund_code
        in: body
        type: string
        description: The fund code identifier.
      call: simcorp.get-valuation
      with:
        fund_code: '{{fund_code}}'
      outputParameters:
      - name: nav
        type: string
        mapping: $.fund.net_asset_value
      - name: positions_count
        type: string
        mapping: $.fund.position_count
      - name: unrealized_gain
        type: string
        mapping: $.fund.unrealized_gain_loss
  consumes:
  - type: http
    namespace: simcorp
    baseUri: https://newyorklife.simcorpdimension.com/api/v1
    authentication:
      type: bearer
      token: $secrets.simcorp_token
    resources:
    - name: funds
      path: /funds/{{fund_code}}/valuation
      inputParameters:
      - name: fund_code
        in: path
      operations:
      - name: get-valuation
        method: GET
Open in Framework → View in Fleet → simcorp-portfolio-valuation.yml

When a new insurance application is submitted, runs the Azure ML risk model, creates the underwriting case in Salesforce, routes for medical review in ServiceNow, and notifies the underwriter via Microsoft Teams.

naftiko: '0.5'
info:
  label: Underwriting Application Pipeline
  description: When a new insurance application is submitted, runs the Azure ML risk model, creates the underwriting case in Salesforce, routes for medical review in ServiceNow, and notifies the underwriter via Microsoft Teams.
  tags:
  - underwriting
  - application-processing
  - azure-machine-learning
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: underwriting-pipeline
    port: 8080
    tools:
    - name: process-application
      description: Given an applicant ID and application data, score the risk, create the underwriting case, route for review, and notify the underwriter.
      inputParameters:
      - name: applicant_id
        in: body
        type: string
        description: The applicant identifier.
      - name: product_type
        in: body
        type: string
        description: Insurance product type (whole life, term, universal).
      - name: coverage_amount
        in: body
        type: string
        description: Requested coverage amount.
      steps:
      - name: score-risk
        type: call
        call: azureml.score-application
        with:
          applicant_id: '{{applicant_id}}'
          product: '{{product_type}}'
          amount: '{{coverage_amount}}'
      - name: create-case
        type: call
        call: salesforce.create-underwriting-case
        with:
          applicant_id: '{{applicant_id}}'
          risk_score: '{{score-risk.risk_score}}'
          risk_tier: '{{score-risk.risk_tier}}'
          product: '{{product_type}}'
      - name: route-review
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Underwriting Review: {{applicant_id}} - {{product_type}}'
          category: underwriting
          description: 'Risk score: {{score-risk.risk_score}}. Tier: {{score-risk.risk_tier}}. Coverage: {{coverage_amount}}'
      - name: notify-underwriter
        type: call
        call: msteams.send-message
        with:
          channel_id: underwriting-queue
          text: 'New application for review: {{applicant_id}}. Product: {{product_type}}. Coverage: {{coverage_amount}}. Risk: {{score-risk.risk_tier}} ({{score-risk.risk_score}}). Case: {{route-review.number}}'
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://newyorklife-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: score-application
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: underwriting-cases
      path: /sobjects/Underwriting_Case__c
      operations:
      - name: create-underwriting-case
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.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: send-message
        method: POST
Open in Framework → View in Fleet → underwriting-application-pipeline.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 2
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-2
      path: /data-2/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-2
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-2.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 3
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-3
      path: /data-3/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-3.yml

Retrieves application performance metrics from New Relic for New York Life digital services, including response time, throughput, and error rate.

naftiko: '0.5'
info:
  label: New Relic Application Performance Lookup
  description: Retrieves application performance metrics from New Relic for New York Life digital services, including response time, throughput, and error rate.
  tags:
  - monitoring
  - new-relic
  - application-performance
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Look up New Relic application performance by application name.
      inputParameters:
      - name: app_name
        in: body
        type: string
        description: The New Relic application name.
      call: newrelic.get-app-metrics
      with:
        app_name: '{{app_name}}'
      outputParameters:
      - name: response_time
        type: string
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: string
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: string
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications.json?filter[name]={{app_name}}
      inputParameters:
      - name: app_name
        in: query
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance-lookup.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 1
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-1
      path: /data-1/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-1
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-1.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 17
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-17
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-17
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-17.yml

Retrieves IVR call metrics from Cisco Voice Portal for the New York Life customer service line, returning call volume, average handle time, and abandonment rate.

naftiko: '0.5'
info:
  label: Cisco Voice Portal IVR Metrics
  description: Retrieves IVR call metrics from Cisco Voice Portal for the New York Life customer service line, returning call volume, average handle time, and abandonment rate.
  tags:
  - customer-service
  - cisco-voice-portal
  - telephony
capability:
  exposes:
  - type: mcp
    namespace: contact-center
    port: 8080
    tools:
    - name: get-ivr-metrics
      description: Retrieve Cisco Voice Portal IVR metrics for a given 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: cisco-cvp.get-metrics
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: total_calls
        type: string
        mapping: $.data.total_calls
      - name: avg_handle_time
        type: string
        mapping: $.data.avg_handle_time_seconds
      - name: abandonment_rate
        type: string
        mapping: $.data.abandonment_rate
  consumes:
  - type: http
    namespace: cisco-cvp
    baseUri: https://newyorklife-cvp.cisco.com/api/v1
    authentication:
      type: bearer
      token: $secrets.cisco_cvp_token
    resources:
    - name: metrics
      path: /reports/ivr-metrics
      operations:
      - name: get-metrics
        method: POST
Open in Framework → View in Fleet → cisco-voice-portal-ivr-metrics.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 6
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-6
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://newyorklife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-6.yml

Verifies agent licensing status by checking Workday employment records, querying the licensing database in Salesforce, validating continuing education credits, and flagging non-compliant agents in ServiceNow.

naftiko: '0.5'
info:
  label: Agent Licensing Verification Pipeline
  description: Verifies agent licensing status by checking Workday employment records, querying the licensing database in Salesforce, validating continuing education credits, and flagging non-compliant agents in ServiceNow.
  tags:
  - compliance
  - agent-licensing
  - workday
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: agent-compliance
    port: 8080
    tools:
    - name: verify-agent-licensing
      description: Given an agent ID and state, verify licensing status across Workday, Salesforce, and flag issues in ServiceNow.
      inputParameters:
      - name: agent_id
        in: body
        type: string
        description: The agent's employee identifier.
      - name: state_code
        in: body
        type: string
        description: The state code to verify licensing for.
      steps:
      - name: check-employment
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{agent_id}}'
      - name: check-license
        type: call
        call: salesforce.get-license
        with:
          agent_id: '{{agent_id}}'
          state: '{{state_code}}'
      - name: flag-noncompliant
        type: call
        call: servicenow.create-case
        with:
          short_description: 'License Verification: Agent {{agent_id}} - {{state_code}}'
          category: agent_compliance
          description: 'Employment status: {{check-employment.status}}. License status: {{check-license.license_status}}. Expiry: {{check-license.expiry_date}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: licenses
      path: /query/?q=SELECT+Id,Status__c,Expiry__c+FROM+Agent_License__c+WHERE+Agent_Id__c='{{agent_id}}'+AND+State__c='{{state}}'
      inputParameters:
      - name: agent_id
        in: query
      - name: state
        in: query
      operations:
      - name: get-license
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.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
Open in Framework → View in Fleet → agent-licensing-verification-pipeline.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 7
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-7
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-7
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-7.yml

Executes a policy analytics query against Teradata, returning policy counts, lapse rates, and average premium by product line.

naftiko: '0.5'
info:
  label: Teradata Policy Analytics Query
  description: Executes a policy analytics query against Teradata, returning policy counts, lapse rates, and average premium by product line.
  tags:
  - analytics
  - teradata
  - insurance
capability:
  exposes:
  - type: mcp
    namespace: policy-analytics
    port: 8080
    tools:
    - name: query-policy-analytics
      description: Run a Teradata policy analytics query by product line and date range.
      inputParameters:
      - name: product_line
        in: body
        type: string
        description: The insurance product line.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      call: teradata.query-policies
      with:
        product_line: '{{product_line}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: active_policies
        type: string
        mapping: $.results[0].active_count
      - name: lapse_rate
        type: string
        mapping: $.results[0].lapse_rate
      - name: avg_premium
        type: string
        mapping: $.results[0].avg_premium
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://newyorklife-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-policies
        method: POST
Open in Framework → View in Fleet → teradata-policy-analytics-query.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 16
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-16
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://newyorklife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-16.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 14
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-14
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-14.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 28
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-28
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://newyorklife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-28.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 5
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-5
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-5
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-5.yml

Generates a comprehensive financial plan by pulling client data from Salesforce, running projections in Azure ML, fetching portfolio performance from Bloomberg AIM, and delivering the plan via SharePoint and Microsoft Outlook.

naftiko: '0.5'
info:
  label: Client Financial Plan Orchestrator
  description: Generates a comprehensive financial plan by pulling client data from Salesforce, running projections in Azure ML, fetching portfolio performance from Bloomberg AIM, and delivering the plan via SharePoint and Microsoft Outlook.
  tags:
  - wealth-management
  - financial-planning
  - salesforce
  - azure-machine-learning
  - bloomberg-aim
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: financial-planning
    port: 8080
    tools:
    - name: generate-financial-plan
      description: Given a client ID and planning horizon, pull data, run projections, and deliver the comprehensive financial plan.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      - name: planning_horizon
        in: body
        type: string
        description: Planning horizon in years.
      - name: advisor_email
        in: body
        type: string
        description: The financial advisor's email.
      steps:
      - name: get-client-data
        type: call
        call: salesforce.get-client-profile
        with:
          client_id: '{{client_id}}'
      - name: get-portfolio
        type: call
        call: bloomberg-aim.get-portfolio
        with:
          account_id: '{{get-client-data.account_id}}'
      - name: run-projections
        type: call
        call: azureml.project-financial-plan
        with:
          client_data: '{{get-client-data}}'
          portfolio: '{{get-portfolio}}'
          horizon: '{{planning_horizon}}'
      - name: store-plan
        type: call
        call: sharepoint.upload-file
        with:
          site_id: financial_plans_site
          folder_path: Plans/{{client_id}}
          file_name: financial_plan_{{planning_horizon}}yr.pdf
          content: '{{run-projections.plan_content}}'
      - name: email-advisor
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{advisor_email}}'
          subject: 'Financial Plan Ready: Client {{get-client-data.client_name}}'
          body: 'The {{planning_horizon}}-year financial plan for {{get-client-data.client_name}} is ready. Portfolio value: {{get-portfolio.market_value}}. Projected growth: {{run-projections.projected_growth}}. Download: {{store-plan.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: clients
      path: /sobjects/Client__c/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-client-profile
        method: GET
  - type: http
    namespace: bloomberg-aim
    baseUri: https://aim.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: portfolios
      path: /portfolios/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-portfolio
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://newyorklife-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: projections
      path: /score
      operations:
      - name: project-financial-plan
        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: send-mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → client-financial-plan-orchestrator.yml

Generates a compliance audit trail by pulling policy transactions from Salesforce, investment activities from Bloomberg AIM, and employee actions from Workday, then storing the consolidated audit report in SharePoint.

naftiko: '0.5'
info:
  label: Compliance Audit Trail Generator
  description: Generates a compliance audit trail by pulling policy transactions from Salesforce, investment activities from Bloomberg AIM, and employee actions from Workday, then storing the consolidated audit report in SharePoint.
  tags:
  - compliance
  - audit
  - salesforce
  - bloomberg-aim
  - workday
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: compliance-audit
    port: 8080
    tools:
    - name: generate-audit-trail
      description: Given a date range and audit scope, pull data from Salesforce, Bloomberg AIM, and Workday, and generate a consolidated audit report in SharePoint.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Audit period start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Audit period end date in YYYY-MM-DD format.
      - name: audit_scope
        in: body
        type: string
        description: Scope of audit (policy-transactions, investment-activities, all).
      steps:
      - name: fetch-policy-data
        type: call
        call: salesforce.query-transactions
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: fetch-investment-data
        type: call
        call: bloomberg-aim.get-activity-log
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: fetch-employee-data
        type: call
        call: workday.get-audit-log
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: compliance_site
          folder_path: AuditTrails/{{start_date}}_{{end_date}}
          file_name: audit_trail_{{audit_scope}}.json
          content: 'Policies: {{fetch-policy-data.records}} | Investments: {{fetch-investment-data.activities}} | Employee: {{fetch-employee-data.events}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: transactions
      path: /query/?q=SELECT+Id,Type,Amount,CreatedDate+FROM+Transaction__c+WHERE+CreatedDate>={{start_date}}+AND+CreatedDate<={{end_date}}
      inputParameters:
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: query-transactions
        method: GET
  - type: http
    namespace: bloomberg-aim
    baseUri: https://aim.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: activity-log
      path: /activity
      operations:
      - name: get-activity-log
        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: audit-log
      path: /auditLogs
      operations:
      - name: get-audit-log
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → compliance-audit-trail-generator.yml

Retrieves the current status of a New York Life GitHub repository including open pull requests, recent commits, and branch information.

naftiko: '0.5'
info:
  label: GitHub Repository Status
  description: Retrieves the current status of a New York Life GitHub repository including open pull requests, recent commits, and branch information.
  tags:
  - development
  - github
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-repo-status
      description: Look up GitHub repository status by repo name.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: The GitHub repository name.
      call: github.get-repo
      with:
        repo: '{{repo_name}}'
      outputParameters:
      - name: open_prs
        type: string
        mapping: $.open_issues_count
      - name: default_branch
        type: string
        mapping: $.default_branch
      - name: last_push
        type: string
        mapping: $.pushed_at
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/newyorklife/{{repo}}
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-status.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 4
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-4
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://newyorklife.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-4.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 29
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-29
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-29
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-29.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 15
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-15
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-15
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-15.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 11
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-11
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-11
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-11.yml

Retrieves a document from Amazon S3 by bucket and key, returning the download URL, file size, and last modified timestamp.

naftiko: '0.5'
info:
  label: Amazon S3 Document Retrieval
  description: Retrieves a document from Amazon S3 by bucket and key, returning the download URL, file size, and last modified timestamp.
  tags:
  - document-management
  - amazon-s3
  - cloud-storage
capability:
  exposes:
  - type: mcp
    namespace: cloud-storage
    port: 8080
    tools:
    - name: get-s3-document
      description: Retrieve an S3 object by bucket and key.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: The S3 bucket name.
      - name: key
        in: body
        type: string
        description: The S3 object key.
      call: s3.get-object
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
      outputParameters:
      - name: content_type
        type: string
        mapping: $.ContentType
      - name: content_length
        type: string
        mapping: $.ContentLength
      - name: last_modified
        type: string
        mapping: $.LastModified
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: aws
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: get-object
        method: GET
Open in Framework → View in Fleet → amazon-s3-document-retrieval.yml

Checks the status of a Databricks machine learning pipeline run, returning run state, start time, and output metrics.

naftiko: '0.5'
info:
  label: Databricks ML Pipeline Status
  description: Checks the status of a Databricks machine learning pipeline run, returning run state, start time, and output metrics.
  tags:
  - data-science
  - databricks
  - machine-learning
capability:
  exposes:
  - type: mcp
    namespace: ml-ops
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Check the status of a Databricks pipeline run 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}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state.life_cycle_state
      - name: result_state
        type: string
        mapping: $.state.result_state
      - name: start_time
        type: string
        mapping: $.start_time
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://newyorklife.cloud.databricks.com/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
Open in Framework → View in Fleet → databricks-ml-pipeline-status.yml

Retrieves investment research data from FactSet for a given security, returning analyst ratings, price targets, and fundamental metrics.

naftiko: '0.5'
info:
  label: FactSet Investment Research Lookup
  description: Retrieves investment research data from FactSet for a given security, returning analyst ratings, price targets, and fundamental metrics.
  tags:
  - wealth-management
  - research
  - factset
capability:
  exposes:
  - type: mcp
    namespace: investment-research
    port: 8080
    tools:
    - name: get-factset-research
      description: Look up FactSet research data by security identifier.
      inputParameters:
      - name: security_id
        in: body
        type: string
        description: The FactSet security identifier.
      call: factset.get-research
      with:
        security_id: '{{security_id}}'
      outputParameters:
      - name: analyst_rating
        type: string
        mapping: $.data.consensus_rating
      - name: price_target
        type: string
        mapping: $.data.mean_price_target
      - name: pe_ratio
        type: string
        mapping: $.data.pe_ratio
  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: estimates
      path: /consensus-estimates
      operations:
      - name: get-research
        method: POST
Open in Framework → View in Fleet → factset-investment-research-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 1
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-1
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-1.yml

Executes a predefined analytics query against Snowflake and returns result rows for reporting dashboards.

naftiko: '0.5'
info:
  label: Snowflake Analytics Query
  description: Executes a predefined analytics query against Snowflake and returns result rows for reporting dashboards.
  tags:
  - analytics
  - snowflake
  - data-warehouse
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: run-analytics-query
      description: Execute a named analytics query in Snowflake and return results.
      inputParameters:
      - name: query_name
        in: body
        type: string
        description: The predefined query name.
      - name: parameters
        in: body
        type: string
        description: Query parameters as JSON string.
      call: snowflake.execute-query
      with:
        query_name: '{{query_name}}'
        parameters: '{{parameters}}'
      outputParameters:
      - name: row_count
        type: string
        mapping: $.resultSetMetaData.numRows
      - name: data
        type: array
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://newyorklife.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-analytics-query.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 10
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-10
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://newyorklife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-10.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 12
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-12
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-12
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-12.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 3
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-3
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-3
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-3.yml

Checks Microsoft Entra identity governance access reviews for a user, returning pending reviews and last certification date.

naftiko: '0.5'
info:
  label: Microsoft Entra Identity Governance
  description: Checks Microsoft Entra identity governance access reviews for a user, returning pending reviews and last certification date.
  tags:
  - security
  - microsoft-entra
  - identity-governance
capability:
  exposes:
  - type: mcp
    namespace: identity-governance
    port: 8080
    tools:
    - name: get-access-reviews
      description: Check pending access reviews for a user in Microsoft Entra.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The user principal name.
      call: entra.get-reviews
      with:
        user_id: '{{user_id}}'
      outputParameters:
      - name: pending_reviews
        type: string
        mapping: $.value.length
      - name: last_certification
        type: string
        mapping: $.value[0].lastCertifiedDateTime
  consumes:
  - type: http
    namespace: entra
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: access-reviews
      path: /identityGovernance/accessReviews/definitions?$filter=reviewers/any(r:r/id eq '{{user_id}}')
      inputParameters:
      - name: user_id
        in: query
      operations:
      - name: get-reviews
        method: GET
Open in Framework → View in Fleet → microsoft-entra-identity-governance.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 2
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-2
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-2.yml

When a premium payment is received, validates the policy in Salesforce, processes the payment via Mastercard gateway, updates the policy ledger in SAP, and sends a confirmation via Adobe Campaign email.

naftiko: '0.5'
info:
  label: Premium Payment Processing Pipeline
  description: When a premium payment is received, validates the policy in Salesforce, processes the payment via Mastercard gateway, updates the policy ledger in SAP, and sends a confirmation via Adobe Campaign email.
  tags:
  - payments
  - premium
  - salesforce
  - mastercard
  - sap
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: payment-processing
    port: 8080
    tools:
    - name: process-premium-payment
      description: Given a policy number, payment amount, and payment method, validate, process, update ledger, and send confirmation.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: payment_amount
        in: body
        type: string
        description: The payment amount.
      - name: payment_method
        in: body
        type: string
        description: Payment method identifier (card token).
      steps:
      - name: validate-policy
        type: call
        call: salesforce.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: process-payment
        type: call
        call: mastercard.process-payment
        with:
          amount: '{{payment_amount}}'
          payment_method: '{{payment_method}}'
          reference: '{{policy_number}}'
      - name: update-ledger
        type: call
        call: sap.post-payment
        with:
          policy_number: '{{policy_number}}'
          amount: '{{payment_amount}}'
          transaction_id: '{{process-payment.transaction_id}}'
      - name: send-confirmation
        type: call
        call: adobe-campaign.trigger-email
        with:
          template: payment_confirmation
          recipient_email: '{{validate-policy.policyholder_email}}'
          amount: '{{payment_amount}}'
          transaction_id: '{{process-payment.transaction_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: mastercard
    baseUri: https://gateway.mastercard.com/api/rest/version/73
    authentication:
      type: basic
      username: $secrets.mastercard_merchant_id
      password: $secrets.mastercard_api_password
    resources:
    - name: payments
      path: /merchant/{{merchant_id}}/order/{{order_id}}/transaction/{{transaction_id}}
      inputParameters:
      - name: merchant_id
        in: path
      - name: order_id
        in: path
      - name: transaction_id
        in: path
      operations:
      - name: process-payment
        method: PUT
  - type: http
    namespace: sap
    baseUri: https://newyorklife-s4.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: payments
      path: /PAYMENT_POSTING_SRV/PostPayment
      operations:
      - name: post-payment
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/newyorklife/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: email-triggers
      path: /profileAndServicesExt/aemTriggerEvent
      operations:
      - name: trigger-email
        method: POST
Open in Framework → View in Fleet → premium-payment-processing-pipeline.yml

When a new claim is filed, creates the claim record in Salesforce Service Cloud, opens a ServiceNow case for the claims processing team, uploads supporting documents to SharePoint, and notifies the claims adjuster via Microsoft Teams.

naftiko: '0.5'
info:
  label: Claims Intake Orchestrator
  description: When a new claim is filed, creates the claim record in Salesforce Service Cloud, opens a ServiceNow case for the claims processing team, uploads supporting documents to SharePoint, and notifies the claims adjuster via Microsoft Teams.
  tags:
  - claims
  - salesforce-service-cloud
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: claims
    port: 8080
    tools:
    - name: process-claim-intake
      description: Given a policy number, claimant name, and claim type, create the claim record, open a processing case, store documents, and notify the adjuster.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number associated with the claim.
      - name: claimant_name
        in: body
        type: string
        description: The name of the claimant.
      - name: claim_type
        in: body
        type: string
        description: Type of claim (death benefit, disability, accelerated benefit).
      - name: claim_description
        in: body
        type: string
        description: Description of the claim circumstances.
      steps:
      - name: create-claim
        type: call
        call: salesforce.create-claim
        with:
          policy_number: '{{policy_number}}'
          claimant: '{{claimant_name}}'
          type: '{{claim_type}}'
          description: '{{claim_description}}'
      - name: open-case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Claim Processing: {{claim_type}} - Policy {{policy_number}}'
          category: claims_processing
          description: 'Claim {{create-claim.claim_id}} filed by {{claimant_name}}. Type: {{claim_type}}. {{claim_description}}'
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: claims_site
          folder_path: Claims/{{create-claim.claim_id}}
      - name: notify-adjuster
        type: call
        call: msteams.send-message
        with:
          channel_id: claims-intake
          text: 'New claim filed: {{claim_type}} for policy {{policy_number}}. Claim ID: {{create-claim.claim_id}}. Claimant: {{claimant_name}}. ServiceNow: {{open-case.number}}. Documents: {{provision-folder.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/Claim__c
      operations:
      - name: create-claim
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.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
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → claims-intake-orchestrator.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 13
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-13
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-13.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 22
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-22
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://newyorklife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-22.yml

Prepares regulatory filings by pulling policy metrics from Snowflake, generating the filing document in SharePoint, submitting to the compliance system via ServiceNow, and notifying the legal team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Regulatory Filing Compliance Pipeline
  description: Prepares regulatory filings by pulling policy metrics from Snowflake, generating the filing document in SharePoint, submitting to the compliance system via ServiceNow, and notifying the legal team via Microsoft Teams.
  tags:
  - compliance
  - regulatory
  - snowflake
  - sharepoint
  - servicenow
  - microsoft-teams
  - legal
capability:
  exposes:
  - type: mcp
    namespace: regulatory-compliance
    port: 8080
    tools:
    - name: prepare-regulatory-filing
      description: Given a filing type and reporting period, pull metrics, generate the filing, submit for review, and notify legal.
      inputParameters:
      - name: filing_type
        in: body
        type: string
        description: Type of regulatory filing (statutory, GAAP, risk-based capital).
      - name: reporting_period
        in: body
        type: string
        description: The reporting period (e.g., 2025-Q4).
      steps:
      - name: pull-metrics
        type: call
        call: snowflake.query-filing-metrics
        with:
          type: '{{filing_type}}'
          period: '{{reporting_period}}'
      - name: generate-filing
        type: call
        call: sharepoint.upload-file
        with:
          site_id: regulatory_site
          folder_path: Filings/{{filing_type}}/{{reporting_period}}
          file_name: filing_{{filing_type}}_{{reporting_period}}.xlsx
          content: '{{pull-metrics.data}}'
      - name: submit-review
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Regulatory Filing Review: {{filing_type}} - {{reporting_period}}'
          category: regulatory_compliance
          description: 'Filing document: {{generate-filing.url}}'
      - name: notify-legal
        type: call
        call: msteams.send-message
        with:
          channel_id: legal-regulatory
          text: 'Regulatory filing prepared: {{filing_type}} for {{reporting_period}}. Review case: {{submit-review.number}}. Document: {{generate-filing.url}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://newyorklife.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-filing-metrics
        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: servicenow
    baseUri: https://newyorklife.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: send-message
        method: POST
Open in Framework → View in Fleet → regulatory-filing-compliance-pipeline.yml

Creates a Zoom meeting for a given topic and attendees, and sends the invite details via Microsoft Teams.

naftiko: '0.5'
info:
  label: Zoom Meeting Scheduler
  description: Creates a Zoom meeting for a given topic and attendees, and sends the invite details via Microsoft Teams.
  tags:
  - collaboration
  - zoom
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: schedule-zoom-meeting
      description: Given a topic, start time, and attendees, create a Zoom meeting and notify via Microsoft Teams.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: The meeting topic.
      - name: start_time
        in: body
        type: string
        description: Meeting start time in ISO 8601 format.
      - name: duration
        in: body
        type: string
        description: Meeting duration in minutes.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}}'
          start_time: '{{start_time}}'
          duration: '{{duration}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: general
          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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → zoom-meeting-scheduler.yml

Calculates agent commissions by pulling policy sales data from Salesforce Sales Cloud, applying commission rules from SAP, and posting the results to the agent's Workday compensation record.

naftiko: '0.5'
info:
  label: Agent Commission Calculator
  description: Calculates agent commissions by pulling policy sales data from Salesforce Sales Cloud, applying commission rules from SAP, and posting the results to the agent's Workday compensation record.
  tags:
  - commissions
  - salesforce-sales-cloud
  - sap
  - workday
  - finance
capability:
  exposes:
  - type: mcp
    namespace: agent-commissions
    port: 8080
    tools:
    - name: calculate-commissions
      description: Given an agent ID and commission period, pull sales data, apply commission rules, and update the compensation record.
      inputParameters:
      - name: agent_id
        in: body
        type: string
        description: The agent's employee identifier.
      - name: commission_period
        in: body
        type: string
        description: The commission period (e.g., 2025-Q1).
      steps:
      - name: fetch-sales
        type: call
        call: salesforce.get-agent-sales
        with:
          agent_id: '{{agent_id}}'
          period: '{{commission_period}}'
      - name: apply-rules
        type: call
        call: sap.calculate-commission
        with:
          sales_data: '{{fetch-sales.records}}'
          agent_tier: '{{fetch-sales.agent_tier}}'
      - name: update-compensation
        type: call
        call: workday.update-compensation
        with:
          worker_id: '{{agent_id}}'
          commission_amount: '{{apply-rules.total_commission}}'
          period: '{{commission_period}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: agent-sales
      path: /query/?q=SELECT+Id,Amount,Product__c+FROM+Policy_Sale__c+WHERE+Agent_Id__c='{{agent_id}}'+AND+Period__c='{{period}}'
      inputParameters:
      - name: agent_id
        in: query
      - name: period
        in: query
      operations:
      - name: get-agent-sales
        method: GET
  - type: http
    namespace: sap
    baseUri: https://newyorklife-s4.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: commissions
      path: /COMMISSION_CALC_SRV/Calculate
      operations:
      - name: calculate-commission
        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: compensation
      path: /workers/{{worker_id}}/compensation
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: update-compensation
        method: PATCH
Open in Framework → View in Fleet → agent-commission-calculator.yml

Monitors trade execution via Bloomberg EMSX, captures fill status, and logs completed trades in Snowflake for compliance reporting.

naftiko: '0.5'
info:
  label: Investment Trade Execution Monitor
  description: Monitors trade execution via Bloomberg EMSX, captures fill status, and logs completed trades in Snowflake for compliance reporting.
  tags:
  - wealth-management
  - trading
  - bloomberg-emsx
  - snowflake
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: trade-monitoring
    port: 8080
    tools:
    - name: monitor-trade-execution
      description: Given a trade order ID, check execution status in Bloomberg EMSX and log the result in Snowflake.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Bloomberg EMSX order identifier.
      - name: account_id
        in: body
        type: string
        description: The investment account identifier.
      steps:
      - name: check-execution
        type: call
        call: bloomberg-emsx.get-order-status
        with:
          order_id: '{{order_id}}'
      - name: log-trade
        type: call
        call: snowflake.insert-trade-record
        with:
          order_id: '{{order_id}}'
          account_id: '{{account_id}}'
          status: '{{check-execution.status}}'
          fill_price: '{{check-execution.fill_price}}'
          fill_quantity: '{{check-execution.fill_quantity}}'
          execution_time: '{{check-execution.execution_time}}'
  consumes:
  - type: http
    namespace: bloomberg-emsx
    baseUri: https://emsx.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_emsx_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order-status
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://newyorklife.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-trade-record
        method: POST
Open in Framework → View in Fleet → investment-trade-execution-monitor.yml

Queries Dynatrace for application health metrics for New York Life digital services, returning availability, response time, and failure rate.

naftiko: '0.5'
info:
  label: Dynatrace Application Health Check
  description: Queries Dynatrace for application health metrics for New York Life digital services, returning availability, response time, and failure rate.
  tags:
  - monitoring
  - dynatrace
  - application-health
capability:
  exposes:
  - type: mcp
    namespace: app-health
    port: 8080
    tools:
    - name: get-dynatrace-health
      description: Retrieve Dynatrace application health metrics by entity ID.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The Dynatrace application entity ID.
      call: dynatrace.get-app-health
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: availability
        type: string
        mapping: $.result[0].data[0].values[0]
      - name: response_time
        type: string
        mapping: $.result[1].data[0].values[0]
      - name: failure_rate
        type: string
        mapping: $.result[2].data[0].values[0]
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://newyorklife.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: metrics
      path: /metrics/query
      operations:
      - name: get-app-health
        method: POST
Open in Framework → View in Fleet → dynatrace-application-health-check.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 23
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-23
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-23
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-23.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 35
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-35
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-35
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-35.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 21
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-21
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-21
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-21.yml

Processes a beneficiary change request by validating the policy in Salesforce, updating the beneficiary record, creating a compliance review in ServiceNow, and sending confirmation to the policyholder via Microsoft Teams.

naftiko: '0.5'
info:
  label: Beneficiary Change Request Processor
  description: Processes a beneficiary change request by validating the policy in Salesforce, updating the beneficiary record, creating a compliance review in ServiceNow, and sending confirmation to the policyholder via Microsoft Teams.
  tags:
  - insurance
  - beneficiary
  - salesforce
  - servicenow
  - microsoft-teams
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: beneficiary-changes
    port: 8080
    tools:
    - name: process-beneficiary-change
      description: Given a policy number, new beneficiary details, and change reason, update the beneficiary, create compliance review, and send confirmation.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: new_beneficiary_name
        in: body
        type: string
        description: The new beneficiary's full name.
      - name: relationship
        in: body
        type: string
        description: Relationship to policyholder (spouse, child, trust, etc.).
      - name: allocation_pct
        in: body
        type: string
        description: Benefit allocation percentage.
      steps:
      - name: validate-policy
        type: call
        call: salesforce.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: update-beneficiary
        type: call
        call: salesforce.update-beneficiary
        with:
          policy_number: '{{policy_number}}'
          beneficiary_name: '{{new_beneficiary_name}}'
          relationship: '{{relationship}}'
          allocation: '{{allocation_pct}}'
      - name: compliance-review
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Beneficiary Change Review: Policy {{policy_number}}'
          category: compliance_review
          description: Beneficiary changed to {{new_beneficiary_name}} ({{relationship}}) at {{allocation_pct}}% for policy {{policy_number}}.
      - name: send-confirmation
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{validate-policy.policyholder_email}}'
          text: 'Your beneficiary change for policy {{policy_number}} has been submitted. New beneficiary: {{new_beneficiary_name}} ({{relationship}}). Compliance review: {{compliance-review.number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
    - name: beneficiaries
      path: /sobjects/Beneficiary__c
      operations:
      - name: update-beneficiary
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → beneficiary-change-request-processor.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 20
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-20
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://newyorklife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-20.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 34
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-34
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://newyorklife.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-34.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 18
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-18
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://newyorklife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-18.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 30
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-30
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://newyorklife.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-30.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 24
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-24
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-24
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-24.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 9
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-9
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-9
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-9.yml

Queries Cloudflare analytics for New York Life web properties to return bandwidth usage, cache hit ratio, and threat event counts.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Check
  description: Queries Cloudflare analytics for New York Life web properties to return bandwidth usage, cache hit ratio, and threat event counts.
  tags:
  - infrastructure
  - cloudflare
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: cdn
    port: 8080
    tools:
    - name: get-cdn-performance
      description: Retrieve Cloudflare CDN performance metrics for a given zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone identifier.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: bandwidth
        type: string
        mapping: $.result.totals.bandwidth.all
      - name: cache_hit_ratio
        type: string
        mapping: $.result.totals.bandwidth.cached
      - name: threats
        type: string
        mapping: $.result.totals.threats.all
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: zone-analytics
      path: /zones/{{zone_id}}/analytics/dashboard
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-performance-check.yml

Sends a notification message to a Slack channel for cross-team communication and alerts.

naftiko: '0.5'
info:
  label: Slack Channel Notification
  description: Sends a notification message to a Slack channel for cross-team communication and alerts.
  tags:
  - collaboration
  - slack
  - notifications
capability:
  exposes:
  - type: mcp
    namespace: notifications
    port: 8080
    tools:
    - name: send-slack-notification
      description: Send a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel name or ID.
      - name: message
        in: body
        type: string
        description: The message text.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{message}}'
      outputParameters:
      - name: message_ts
        type: string
        mapping: $.ts
      - name: channel_id
        type: string
        mapping: $.channel
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-channel-notification.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 8
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-8
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://newyorklife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-8.yml

Retrieves an insurance policy record from Salesforce by policy number and returns the current status, coverage amount, premium due date, and policyholder name.

naftiko: '0.5'
info:
  label: Policy Status Lookup
  description: Retrieves an insurance policy record from Salesforce by policy number and returns the current status, coverage amount, premium due date, and policyholder name.
  tags:
  - insurance
  - policy-management
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: policy-ops
    port: 8080
    tools:
    - name: get-policy-status
      description: Look up a life insurance policy by number. Returns status, coverage amount, premium due date, and policyholder.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The insurance policy number.
      call: salesforce.get-policy
      with:
        policy_number: '{{policy_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Policy_Status__c
      - name: coverage_amount
        type: string
        mapping: $.Coverage_Amount__c
      - name: premium_due_date
        type: string
        mapping: $.Premium_Due_Date__c
      - name: policyholder
        type: string
        mapping: $.Policyholder_Name__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: policies
      path: /sobjects/Policy__c/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
Open in Framework → View in Fleet → policy-status-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 25
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-25
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-25.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 31
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-31
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-31
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-31.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 19
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-19
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-19
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-19.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 27
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-27
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-27
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-27.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 33
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-33
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-33
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-33.yml

Manages New York Life LinkedIn corporate campaigns by creating sponsored content, pulling engagement analytics, and syncing results to Salesforce for lead tracking.

naftiko: '0.5'
info:
  label: LinkedIn Corporate Brand Campaign Manager
  description: Manages New York Life LinkedIn corporate campaigns by creating sponsored content, pulling engagement analytics, and syncing results to Salesforce for lead tracking.
  tags:
  - marketing
  - linkedin
  - salesforce
  - brand
capability:
  exposes:
  - type: mcp
    namespace: brand-marketing
    port: 8080
    tools:
    - name: manage-linkedin-campaign
      description: Given a campaign brief and target audience, create sponsored content on LinkedIn, fetch metrics, and sync leads to Salesforce.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The campaign name.
      - name: content_text
        in: body
        type: string
        description: The sponsored content text.
      - name: target_audience
        in: body
        type: string
        description: Target audience description.
      steps:
      - name: create-content
        type: call
        call: linkedin.create-sponsored-content
        with:
          campaign_name: '{{campaign_name}}'
          text: '{{content_text}}'
          audience: '{{target_audience}}'
      - name: fetch-metrics
        type: call
        call: linkedin.get-campaign-analytics
        with:
          campaign_id: '{{create-content.campaign_id}}'
      - name: sync-leads
        type: call
        call: salesforce.create-leads
        with:
          campaign_id: '{{create-content.campaign_id}}'
          leads: '{{fetch-metrics.lead_forms}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: sponsored-content
      path: /adCreativesV2
      operations:
      - name: create-sponsored-content
        method: POST
    - name: analytics
      path: /adAnalyticsV2
      operations:
      - name: get-campaign-analytics
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://newyorklife.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead
      operations:
      - name: create-leads
        method: POST
Open in Framework → View in Fleet → linkedin-corporate-brand-campaign-manager.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 32
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-32
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-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: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://newyorklife-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-32.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.

naftiko: '0.5'
info:
  label: New York Life Workflow 26
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: new-york-life-workflow-26
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for New York Life.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: newyorklife-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: newyorklife-ops
    baseUri: https://api.newyorklife.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://newyorklife.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → new-york-life-workflow-26.yml

Generates an annuity product illustration by pulling rate tables from SAP, running Monte Carlo projections via Azure Machine Learning, creating the illustration document in SharePoint, and emailing it to the agent via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Annuity Illustration Generator
  description: Generates an annuity product illustration by pulling rate tables from SAP, running Monte Carlo projections via Azure Machine Learning, creating the illustration document in SharePoint, and emailing it to the agent via Microsoft Outlook.
  tags:
  - insurance
  - annuity
  - sap
  - azure-machine-learning
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: product-illustration
    port: 8080
    tools:
    - name: generate-annuity-illustration
      description: Given product type, premium amount, and client age, generate a full annuity illustration with projections.
      inputParameters:
      - name: product_type
        in: body
        type: string
        description: Annuity product type (fixed, variable, indexed).
      - name: premium_amount
        in: body
        type: string
        description: The premium amount.
      - name: client_age
        in: body
        type: string
        description: The client's current age.
      - name: agent_email
        in: body
        type: string
        description: The agent's email address.
      steps:
      - name: get-rates
        type: call
        call: sap.get-annuity-rates
        with:
          product: '{{product_type}}'
      - name: run-projection
        type: call
        call: azureml.project-annuity
        with:
          rates: '{{get-rates.rate_table}}'
          premium: '{{premium_amount}}'
          age: '{{client_age}}'
          product: '{{product_type}}'
      - name: create-illustration
        type: call
        call: sharepoint.upload-file
        with:
          site_id: product_illustrations
          folder_path: Annuity/{{product_type}}
          file_name: illustration_{{client_age}}_{{premium_amount}}.pdf
          content: '{{run-projection.illustration_content}}'
      - name: email-agent
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{agent_email}}'
          subject: 'Annuity Illustration: {{product_type}} - ${{premium_amount}}'
          body: 'Your annuity illustration is ready. Projected accumulation: {{run-projection.projected_value}}. Download: {{create-illustration.url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://newyorklife-s4.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: annuity-rates
      path: /ANNUITY_RATE_SRV/Rates
      operations:
      - name: get-annuity-rates
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://newyorklife-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: projections
      path: /score
      operations:
      - name: project-annuity
        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: send-mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → annuity-illustration-generator.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 10
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-10
      path: /data-10/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-10
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-10.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 11
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-11
      path: /data-11/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-11
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-11.yml

Retrieves a client's investment portfolio summary from Bloomberg AIM, returning total market value, asset allocation breakdown, and year-to-date performance.

naftiko: '0.5'
info:
  label: Wealth Management Portfolio Summary
  description: Retrieves a client's investment portfolio summary from Bloomberg AIM, returning total market value, asset allocation breakdown, and year-to-date performance.
  tags:
  - wealth-management
  - portfolio
  - bloomberg-aim
capability:
  exposes:
  - type: mcp
    namespace: wealth
    port: 8080
    tools:
    - name: get-portfolio-summary
      description: Look up a client's investment portfolio in Bloomberg AIM by account ID.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Bloomberg AIM account identifier.
      call: bloomberg-aim.get-portfolio
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: market_value
        type: string
        mapping: $.portfolio.total_market_value
      - name: asset_allocation
        type: object
        mapping: $.portfolio.allocation
      - name: ytd_return
        type: string
        mapping: $.portfolio.ytd_return
  consumes:
  - type: http
    namespace: bloomberg-aim
    baseUri: https://aim.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: portfolios
      path: /portfolios/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-portfolio
        method: GET
Open in Framework → View in Fleet → wealth-management-portfolio-summary.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 13
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-13
      path: /data-13/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-13
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-13.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 12
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-12
      path: /data-12/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-12.yml

Executes a named analytics query against Amazon Redshift and returns the result set for reporting purposes.

naftiko: '0.5'
info:
  label: Amazon Redshift Analytics Query
  description: Executes a named analytics query against Amazon Redshift and returns the result set for reporting purposes.
  tags:
  - analytics
  - amazon-redshift
  - data-warehouse
capability:
  exposes:
  - type: mcp
    namespace: analytics-warehouse
    port: 8080
    tools:
    - name: run-redshift-query
      description: Execute a named query in Amazon Redshift.
      inputParameters:
      - name: query_name
        in: body
        type: string
        description: The predefined query name.
      - name: parameters
        in: body
        type: string
        description: Query parameters as JSON string.
      call: redshift.execute-statement
      with:
        query_name: '{{query_name}}'
        parameters: '{{parameters}}'
      outputParameters:
      - name: statement_id
        type: string
        mapping: $.Id
      - name: status
        type: string
        mapping: $.Status
  consumes:
  - type: http
    namespace: redshift
    baseUri: https://redshift-data.us-east-1.amazonaws.com
    authentication:
      type: aws
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: statements
      path: /execute-statement
      operations:
      - name: execute-statement
        method: POST
Open in Framework → View in Fleet → amazon-redshift-analytics-query.yml

Retrieves the current sprint status from Jira for a given project board, returning sprint name, story points completed, and remaining items.

naftiko: '0.5'
info:
  label: Jira Sprint Status Lookup
  description: Retrieves the current sprint status from Jira for a given project board, returning sprint name, story points completed, and remaining items.
  tags:
  - development
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-sprint-status
      description: Look up Jira sprint status by board ID.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board identifier.
      call: jira.get-active-sprint
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: start_date
        type: string
        mapping: $.values[0].startDate
      - name: end_date
        type: string
        mapping: $.values[0].endDate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://newyorklife.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint?state=active
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-status-lookup.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 8
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-8
      path: /data-8/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-8
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-8.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 15
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-15
      path: /data-15/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-15.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 14
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-14
      path: /data-14/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-14
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-14.yml

Retrieves operational data for New York Life insurance workflows.

naftiko: '0.5'
info:
  label: New York Life Data Lookup 9
  description: Retrieves operational data for New York Life insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: newyorklife-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for New York Life insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: newyorklife-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: newyorklife-data
    baseUri: https://api.newyorklife.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nyl_api_token
    resources:
    - name: data-9
      path: /data-9/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → new-york-life-data-lookup-9.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 4
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-4
      path: /data-4/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-4
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-4.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 5
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-5
      path: /data-5/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-5
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-5.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 7
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-7
      path: /data-7/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-7
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-7.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 6
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-6
      path: /data-6/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-6.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 2
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-2
      path: /data-2/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-2
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-2.yml

Creates a Zoom meeting for advisor-client consultations and notifies the advisor via Microsoft Teams.

naftiko: '0.5'
info:
  label: Zoom Client Meeting Scheduler
  description: Creates a Zoom meeting for advisor-client consultations and notifies the advisor via Microsoft Teams.
  tags:
  - collaboration
  - zoom
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: schedule-client-meeting
      description: Given a topic, start time, and duration, create a Zoom meeting and notify via Teams.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: The meeting topic.
      - name: start_time
        in: body
        type: string
        description: Meeting start time in ISO 8601.
      - name: duration
        in: body
        type: string
        description: Duration in minutes.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}}'
          start_time: '{{start_time}}'
          duration: '{{duration}}'
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          channel_id: advisor-meetings
          text: 'Client 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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → zoom-client-meeting-scheduler.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 3
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-3
      path: /data-3/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-3.yml

Projects retirement outcomes by pulling client data and goals from Salesforce, running retirement simulations in Azure ML, and delivering the projection report via SharePoint.

naftiko: '0.5'
info:
  label: Retirement Plan Projector
  description: Projects retirement outcomes by pulling client data and goals from Salesforce, running retirement simulations in Azure ML, and delivering the projection report via SharePoint.
  tags:
  - financial-planning
  - retirement
  - salesforce
  - azure-machine-learning
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: retirement-planning
    port: 8080
    tools:
    - name: project-retirement
      description: Given a client ID, current age, and target retirement age, run projection and deliver report.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      - name: current_age
        in: body
        type: string
        description: Client's current age.
      - name: retirement_age
        in: body
        type: string
        description: Target retirement age.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-client-profile
        with:
          client_id: '{{client_id}}'
      - name: run-simulation
        type: call
        call: azureml.simulate-retirement
        with:
          client_data: '{{get-client}}'
          current_age: '{{current_age}}'
          retirement_age: '{{retirement_age}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: financial_plans_site
          folder_path: RetirementProjections/{{client_id}}
          file_name: retirement_projection.pdf
          content: '{{run-simulation.report}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: clients
      path: /sobjects/Client__c/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-client-profile
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://northwesternmutual-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: simulations
      path: /score
      operations:
      - name: simulate-retirement
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → retirement-plan-projector.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 1
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-1
      path: /data-1/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-1
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-1.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 17
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-17
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-17
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-17.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 6
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-6
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://northwesternmutual.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-6.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 7
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-7
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-7
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-7.yml

Assesses disability insurance claims by pulling medical data from the claims system, running the disability assessment model in Azure ML, creating the assessment report in SharePoint, and routing for adjudicator review in ServiceNow.

naftiko: '0.5'
info:
  label: Disability Insurance Claim Assessment Pipeline
  description: Assesses disability insurance claims by pulling medical data from the claims system, running the disability assessment model in Azure ML, creating the assessment report in SharePoint, and routing for adjudicator review in ServiceNow.
  tags:
  - insurance
  - disability
  - claims
  - azure-machine-learning
  - sharepoint
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: disability-claims
    port: 8080
    tools:
    - name: assess-disability-claim
      description: Given a claim ID and policy number, run the disability assessment model and route for review.
      inputParameters:
      - name: claim_id
        in: body
        type: string
        description: The claim identifier.
      - name: policy_number
        in: body
        type: string
        description: The associated policy number.
      steps:
      - name: get-claim-data
        type: call
        call: salesforce.get-claim
        with:
          claim_id: '{{claim_id}}'
      - name: run-assessment
        type: call
        call: azureml.assess-disability
        with:
          claim_data: '{{get-claim-data}}'
          policy_number: '{{policy_number}}'
      - name: store-assessment
        type: call
        call: sharepoint.upload-file
        with:
          site_id: claims_site
          folder_path: DisabilityAssessments/{{claim_id}}
          file_name: assessment_report.pdf
          content: '{{run-assessment.report}}'
      - name: route-review
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Disability Claim Review: {{claim_id}}'
          category: disability_claims
          description: 'Assessment score: {{run-assessment.score}}. Recommendation: {{run-assessment.recommendation}}. Report: {{store-assessment.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: claims
      path: /sobjects/Claim__c/{{claim_id}}
      inputParameters:
      - name: claim_id
        in: path
      operations:
      - name: get-claim
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://northwesternmutual-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: assessments
      path: /score
      operations:
      - name: assess-disability
        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: servicenow
    baseUri: https://northwesternmutual.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
Open in Framework → View in Fleet → disability-insurance-claim-assessment-pipeline.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 16
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-16
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://northwesternmutual.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-16.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 14
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-14
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://northwesternmutual.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-14.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 28
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-28
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://northwesternmutual.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-28.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 5
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-5
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-5
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-5.yml

Retrieves a Zendesk support ticket by ID.

naftiko: '0.5'
info:
  label: Zendesk Customer Support Ticket Lookup
  description: Retrieves a Zendesk support ticket by ID.
  tags:
  - customer-service
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: get-support-ticket
      description: Look up a Zendesk support ticket by ID.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket identifier.
      call: zendesk.get-ticket
      with:
        ticket_id: '{{ticket_id}}'
      outputParameters:
      - name: subject
        type: string
        mapping: $.ticket.subject
      - name: status
        type: string
        mapping: $.ticket.status
      - name: priority
        type: string
        mapping: $.ticket.priority
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://northwesternmutual.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
Open in Framework → View in Fleet → zendesk-customer-support-ticket-lookup.yml

Verifies advisor licensing by checking Workday employment, querying Salesforce licensing records, and flagging non-compliant advisors in ServiceNow.

naftiko: '0.5'
info:
  label: Advisor Licensing Verification Pipeline
  description: Verifies advisor licensing by checking Workday employment, querying Salesforce licensing records, and flagging non-compliant advisors in ServiceNow.
  tags:
  - compliance
  - advisor-licensing
  - workday
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: advisor-compliance
    port: 8080
    tools:
    - name: verify-advisor-licensing
      description: Given an advisor ID and state, verify licensing across systems.
      inputParameters:
      - name: advisor_id
        in: body
        type: string
        description: The advisor's employee identifier.
      - name: state_code
        in: body
        type: string
        description: The state code to verify.
      steps:
      - name: check-employment
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{advisor_id}}'
      - name: check-license
        type: call
        call: salesforce.get-license
        with:
          advisor_id: '{{advisor_id}}'
          state: '{{state_code}}'
      - name: flag-noncompliant
        type: call
        call: servicenow.create-case
        with:
          short_description: 'License Verification: Advisor {{advisor_id}} - {{state_code}}'
          category: advisor_compliance
          description: 'Employment: {{check-employment.status}}. License: {{check-license.license_status}}. Expiry: {{check-license.expiry_date}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: licenses
      path: /query/?q=SELECT+Id,Status__c,Expiry__c+FROM+Advisor_License__c+WHERE+Advisor_Id__c='{{advisor_id}}'+AND+State__c='{{state}}'
      inputParameters:
      - name: advisor_id
        in: query
      - name: state
        in: query
      operations:
      - name: get-license
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://northwesternmutual.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
Open in Framework → View in Fleet → advisor-licensing-verification-pipeline.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 4
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-4
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: INSURA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://northwesternmutual.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-4.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 29
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-29
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-29
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-29.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 15
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-15
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-15
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-15.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 11
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-11
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-11
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-11.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 1
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-1
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-1.yml

Retrieves Perforce depot status for a given depot path, returning changelist count and last submit information.

naftiko: '0.5'
info:
  label: Perforce Version Control Status
  description: Retrieves Perforce depot status for a given depot path, returning changelist count and last submit information.
  tags:
  - development
  - perforce
  - version-control
capability:
  exposes:
  - type: mcp
    namespace: version-control
    port: 8080
    tools:
    - name: get-depot-status
      description: Check Perforce depot status by depot path.
      inputParameters:
      - name: depot_path
        in: body
        type: string
        description: The Perforce depot path.
      call: perforce.get-changes
      with:
        depot_path: '{{depot_path}}'
      outputParameters:
      - name: latest_changelist
        type: string
        mapping: $.data[0].change
      - name: last_user
        type: string
        mapping: $.data[0].user
      - name: last_description
        type: string
        mapping: $.data[0].desc
  consumes:
  - type: http
    namespace: perforce
    baseUri: https://northwesternmutual-p4.perforce.com/api/v1
    authentication:
      type: bearer
      token: $secrets.perforce_token
    resources:
    - name: changes
      path: /changes?path={{depot_path}}&max=1
      inputParameters:
      - name: depot_path
        in: query
      operations:
      - name: get-changes
        method: GET
Open in Framework → View in Fleet → perforce-version-control-status.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 10
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-10
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://northwesternmutual.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-10.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 12
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-12
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-12
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-12.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 3
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-3
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-3
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-3.yml

Checks Microsoft Entra identity governance access reviews for a user.

naftiko: '0.5'
info:
  label: Microsoft Entra Access Review
  description: Checks Microsoft Entra identity governance access reviews for a user.
  tags:
  - security
  - microsoft-entra
  - identity-governance
capability:
  exposes:
  - type: mcp
    namespace: identity-governance
    port: 8080
    tools:
    - name: get-access-reviews
      description: Check pending access reviews for a user.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The user principal name.
      call: entra.get-reviews
      with:
        user_id: '{{user_id}}'
      outputParameters:
      - name: pending_reviews
        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: access-reviews
      path: /identityGovernance/accessReviews/definitions
      operations:
      - name: get-reviews
        method: GET
Open in Framework → View in Fleet → microsoft-entra-access-review.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 2
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-2
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://northwesternmutual.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-2.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 13
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-13
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-13.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 22
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-22
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://northwesternmutual.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-22.yml

Retrieves a client's financial planning goals from Salesforce, returning goal name, target amount, current progress, and target date.

naftiko: '0.5'
info:
  label: Financial Planning Goal Tracker
  description: Retrieves a client's financial planning goals from Salesforce, returning goal name, target amount, current progress, and target date.
  tags:
  - financial-planning
  - goals
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: financial-planning
    port: 8080
    tools:
    - name: get-client-goals
      description: Look up a client's financial planning goals by client ID.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      call: salesforce.get-goals
      with:
        client_id: '{{client_id}}'
      outputParameters:
      - name: goals
        type: array
        mapping: $.records
      - name: total_goals
        type: string
        mapping: $.totalSize
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: goals
      path: /query/?q=SELECT+Id,Goal_Name__c,Target_Amount__c,Current_Progress__c,Target_Date__c+FROM+Financial_Goal__c+WHERE+Client_Id__c='{{client_id}}'
      inputParameters:
      - name: client_id
        in: query
      operations:
      - name: get-goals
        method: GET
Open in Framework → View in Fleet → financial-planning-goal-tracker.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 23
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-23
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-23
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-23.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 35
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-35
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-35
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /contacts
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-35.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 21
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-21
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-21
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-21.yml

Retrieves the status of an AWS EC2 instance, returning instance state, type, and public IP.

naftiko: '0.5'
info:
  label: EC2 Instance Status Check
  description: Retrieves the status of an AWS EC2 instance, returning instance state, type, and public IP.
  tags:
  - cloud
  - ec2
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: cloud-infra
    port: 8080
    tools:
    - name: get-ec2-status
      description: Check the status of an EC2 instance by instance ID.
      inputParameters:
      - name: instance_id
        in: body
        type: string
        description: The EC2 instance identifier.
      call: ec2.describe-instance
      with:
        instance_id: '{{instance_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.Reservations[0].Instances[0].State.Name
      - name: instance_type
        type: string
        mapping: $.Reservations[0].Instances[0].InstanceType
      - name: public_ip
        type: string
        mapping: $.Reservations[0].Instances[0].PublicIpAddress
  consumes:
  - type: http
    namespace: ec2
    baseUri: https://ec2.us-east-1.amazonaws.com
    authentication:
      type: aws
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: instances
      path: /?Action=DescribeInstances&InstanceId.1={{instance_id}}
      inputParameters:
      - name: instance_id
        in: query
      operations:
      - name: describe-instance
        method: GET
Open in Framework → View in Fleet → ec2-instance-status-check.yml

Prepares regulatory filings by pulling metrics from Snowflake, generating the filing in SharePoint, submitting for review in ServiceNow, and notifying legal via Microsoft Teams.

naftiko: '0.5'
info:
  label: Regulatory Filing Pipeline
  description: Prepares regulatory filings by pulling metrics from Snowflake, generating the filing in SharePoint, submitting for review in ServiceNow, and notifying legal via Microsoft Teams.
  tags:
  - compliance
  - regulatory
  - snowflake
  - sharepoint
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: regulatory-compliance
    port: 8080
    tools:
    - name: prepare-regulatory-filing
      description: Given a filing type and period, pull metrics, generate filing, submit review, and notify.
      inputParameters:
      - name: filing_type
        in: body
        type: string
        description: Type of filing (statutory, GAAP, risk-based capital).
      - name: reporting_period
        in: body
        type: string
        description: The reporting period.
      steps:
      - name: pull-metrics
        type: call
        call: snowflake.query-filing-metrics
        with:
          type: '{{filing_type}}'
          period: '{{reporting_period}}'
      - name: generate-filing
        type: call
        call: sharepoint.upload-file
        with:
          site_id: regulatory_site
          folder_path: Filings/{{filing_type}}/{{reporting_period}}
          file_name: filing.xlsx
          content: '{{pull-metrics.data}}'
      - name: submit-review
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Filing Review: {{filing_type}} - {{reporting_period}}'
          category: regulatory_compliance
      - name: notify-legal
        type: call
        call: msteams.send-message
        with:
          channel_id: legal-regulatory
          text: 'Filing prepared: {{filing_type}} for {{reporting_period}}. Review: {{submit-review.number}}. Document: {{generate-filing.url}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://northwesternmutual.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-filing-metrics
        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: servicenow
    baseUri: https://northwesternmutual.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: send-message
        method: POST
Open in Framework → View in Fleet → regulatory-filing-pipeline.yml

Calculates advisor commissions by pulling policy sales from Salesforce, applying commission rules from SAP, and updating the Workday compensation record.

naftiko: '0.5'
info:
  label: Advisor Commission Calculator
  description: Calculates advisor commissions by pulling policy sales from Salesforce, applying commission rules from SAP, and updating the Workday compensation record.
  tags:
  - commissions
  - salesforce
  - sap
  - workday
  - finance
capability:
  exposes:
  - type: mcp
    namespace: advisor-commissions
    port: 8080
    tools:
    - name: calculate-commissions
      description: Given an advisor ID and period, pull sales, apply rules, and update compensation.
      inputParameters:
      - name: advisor_id
        in: body
        type: string
        description: The advisor's employee identifier.
      - name: commission_period
        in: body
        type: string
        description: The commission period (e.g., 2025-Q1).
      steps:
      - name: fetch-sales
        type: call
        call: salesforce.get-advisor-sales
        with:
          advisor_id: '{{advisor_id}}'
          period: '{{commission_period}}'
      - name: apply-rules
        type: call
        call: sap.calculate-commission
        with:
          sales_data: '{{fetch-sales.records}}'
          advisor_tier: '{{fetch-sales.advisor_tier}}'
      - name: update-compensation
        type: call
        call: workday.update-compensation
        with:
          worker_id: '{{advisor_id}}'
          commission_amount: '{{apply-rules.total_commission}}'
          period: '{{commission_period}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: advisor-sales
      path: /query/?q=SELECT+Id,Amount,Product__c+FROM+Policy_Sale__c+WHERE+Advisor_Id__c='{{advisor_id}}'+AND+Period__c='{{period}}'
      inputParameters:
      - name: advisor_id
        in: query
      - name: period
        in: query
      operations:
      - name: get-advisor-sales
        method: GET
  - type: http
    namespace: sap
    baseUri: https://northwesternmutual-s4.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: commissions
      path: /COMMISSION_CALC_SRV/Calculate
      operations:
      - name: calculate-commission
        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: compensation
      path: /workers/{{worker_id}}/compensation
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: update-compensation
        method: PATCH
Open in Framework → View in Fleet → advisor-commission-calculator.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 20
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-20
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://northwesternmutual-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-20.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 34
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-34
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://northwesternmutual.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: upload-document
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-34.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 18
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-18
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://northwesternmutual.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-18.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 30
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-30
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INSU
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://northwesternmutual.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issues
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-30.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 24
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-24
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: insurance.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-24
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: submit-metrics
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-24.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 9
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-9
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-9
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-9.yml

Retrieves an expense report from SAP Concur by report ID.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Lookup
  description: Retrieves an expense report from SAP Concur by report ID.
  tags:
  - finance
  - sap-concur
  - expense-management
capability:
  exposes:
  - type: mcp
    namespace: expense
    port: 8080
    tools:
    - name: get-expense-report
      description: Look up a Concur expense report by ID.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The expense report identifier.
      call: concur.get-report
      with:
        report_id: '{{report_id}}'
      outputParameters:
      - name: total_amount
        type: string
        mapping: $.Total
      - name: approval_status
        type: string
        mapping: $.ApprovalStatusName
  consumes:
  - type: http
    namespace: concur
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: reports
      path: /expense/reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → sap-concur-expense-report-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 8
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-8
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://northwesternmutual-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-8.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 25
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-25
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /accounts
      operations:
      - name: create-account
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-25.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 31
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-31
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-31
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-31.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 19
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-19
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: insurance
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-19
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-19.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 27
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-27
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#insurance'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-27
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-27.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 33
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-33
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-33
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-33.yml

Retrieves Qlik Sense dashboard metadata and data, returning app name, sheet count, and last reload time.

naftiko: '0.5'
info:
  label: Qlik Sense Dashboard Lookup
  description: Retrieves Qlik Sense dashboard metadata and data, returning app name, sheet count, and last reload time.
  tags:
  - analytics
  - qlik-sense
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: get-qlik-dashboard
      description: Look up a Qlik Sense app by ID.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The Qlik Sense app identifier.
      call: qliksense.get-app
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: app_name
        type: string
        mapping: $.name
      - name: last_reload
        type: string
        mapping: $.lastReloadTime
      - name: published
        type: string
        mapping: $.published
  consumes:
  - type: http
    namespace: qliksense
    baseUri: https://northwesternmutual.us.qlikcloud.com/api/v1
    authentication:
      type: bearer
      token: $secrets.qliksense_token
    resources:
    - name: apps
      path: /apps/{{app_id}}
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app
        method: GET
Open in Framework → View in Fleet → qlik-sense-dashboard-lookup.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 32
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-32
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-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: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://northwesternmutual-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-32.yml

Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.

naftiko: '0.5'
info:
  label: Northwestern Mutual Workflow 26
  description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
  tags:
  - insurance
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: northwestern-mutual-workflow-26
      description: Orchestrates insurance operations including data retrieval, processing, and automated notification for Northwestern Mutual.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: northwesternmutual-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: northwesternmutual-ops
    baseUri: https://api.northwesternmutual.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://northwesternmutual.service-now.com/api/now/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → northwestern-mutual-workflow-26.yml

Generates a comprehensive financial plan by pulling client data from Salesforce, running Monte Carlo projections in Azure ML, fetching portfolio performance from Bloomberg AIM, and delivering the plan via SharePoint and Microsoft Outlook.

naftiko: '0.5'
info:
  label: Comprehensive Financial Plan Generator
  description: Generates a comprehensive financial plan by pulling client data from Salesforce, running Monte Carlo projections in Azure ML, fetching portfolio performance from Bloomberg AIM, and delivering the plan via SharePoint and Microsoft Outlook.
  tags:
  - financial-planning
  - wealth-management
  - salesforce
  - azure-machine-learning
  - bloomberg-aim
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: financial-plan-gen
    port: 8080
    tools:
    - name: generate-financial-plan
      description: Given a client ID and planning horizon, pull data, run projections, and deliver the plan.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      - name: planning_horizon
        in: body
        type: string
        description: Planning horizon in years.
      - name: advisor_email
        in: body
        type: string
        description: The financial advisor's email.
      steps:
      - name: get-client-data
        type: call
        call: salesforce.get-client-profile
        with:
          client_id: '{{client_id}}'
      - name: get-portfolio
        type: call
        call: bloomberg-aim.get-portfolio
        with:
          account_id: '{{get-client-data.account_id}}'
      - name: run-projections
        type: call
        call: azureml.project-financial-plan
        with:
          client_data: '{{get-client-data}}'
          portfolio: '{{get-portfolio}}'
          horizon: '{{planning_horizon}}'
      - name: store-plan
        type: call
        call: sharepoint.upload-file
        with:
          site_id: financial_plans_site
          folder_path: Plans/{{client_id}}
          file_name: financial_plan_{{planning_horizon}}yr.pdf
          content: '{{run-projections.plan_content}}'
      - name: email-advisor
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{advisor_email}}'
          subject: 'Financial Plan Ready: {{get-client-data.client_name}}'
          body: 'The {{planning_horizon}}-year plan for {{get-client-data.client_name}} is ready. Portfolio: ${{get-portfolio.market_value}}. Projected growth: {{run-projections.projected_growth}}. Download: {{store-plan.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: clients
      path: /sobjects/Client__c/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-client-profile
        method: GET
  - type: http
    namespace: bloomberg-aim
    baseUri: https://aim.bloomberg.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: portfolios
      path: /portfolios/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-portfolio
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://northwesternmutual-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: projections
      path: /score
      operations:
      - name: project-financial-plan
        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: send-mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → comprehensive-financial-plan-generator.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 10
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-10
      path: /data-10/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-10
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-10.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 11
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-11
      path: /data-11/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-11
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-11.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 13
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-13
      path: /data-13/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-13
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-13.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 12
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-12
      path: /data-12/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-12.yml

Retrieves Tableau dashboard metadata for Northwestern Mutual reporting.

naftiko: '0.5'
info:
  label: Tableau Reporting Dashboard Lookup
  description: Retrieves Tableau dashboard metadata for Northwestern Mutual reporting.
  tags:
  - analytics
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: tableau-reporting
    port: 8080
    tools:
    - name: get-tableau-dashboard
      description: Look up a Tableau workbook by ID.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: The Tableau workbook identifier.
      call: tableau.get-workbook
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.workbook.name
      - name: view_count
        type: string
        mapping: $.workbook.viewCount
      - name: updated_at
        type: string
        mapping: $.workbook.updatedAt
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://northwesternmutual.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}
      inputParameters:
      - name: site_id
        in: path
      - name: workbook_id
        in: path
      operations:
      - name: get-workbook
        method: GET
Open in Framework → View in Fleet → tableau-reporting-dashboard-lookup.yml

Manages Northwestern Mutual LinkedIn campaigns for advisor recruitment and brand awareness.

naftiko: '0.5'
info:
  label: LinkedIn Advisor Brand Campaign
  description: Manages Northwestern Mutual LinkedIn campaigns for advisor recruitment and brand awareness.
  tags:
  - marketing
  - linkedin
  - brand
capability:
  exposes:
  - type: mcp
    namespace: brand-marketing
    port: 8080
    tools:
    - name: get-linkedin-campaign
      description: Retrieve LinkedIn campaign analytics by campaign ID.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The LinkedIn campaign identifier.
      call: linkedin.get-campaign-analytics
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.elements[0].impressions
      - name: clicks
        type: string
        mapping: $.elements[0].clicks
      - name: spend
        type: string
        mapping: $.elements[0].costInLocalCurrency
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: analytics
      path: /adAnalyticsV2
      operations:
      - name: get-campaign-analytics
        method: GET
Open in Framework → View in Fleet → linkedin-advisor-brand-campaign.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 8
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-8
      path: /data-8/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-8
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-8.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 15
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-15
      path: /data-15/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-15.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 14
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-14
      path: /data-14/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-14
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-14.yml

Retrieves operational data for Northwestern Mutual insurance workflows.

naftiko: '0.5'
info:
  label: Northwestern Mutual Data Lookup 9
  description: Retrieves operational data for Northwestern Mutual insurance workflows.
  tags:
  - insurance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: northwesternmutual-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for Northwestern Mutual insurance workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: northwesternmutual-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: northwesternmutual-data
    baseUri: https://api.northwesternmutual.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nwm_api_token
    resources:
    - name: data-9
      path: /data-9/{{identifier}}
      inputParameters:
      - name: identifier
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → northwestern-mutual-data-lookup-9.yml

Generates estate planning documents by pulling client estate data from Salesforce, running tax projection models in Azure ML, creating the document package in SharePoint, and emailing the advisor via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Estate Planning Document Generator
  description: Generates estate planning documents by pulling client estate data from Salesforce, running tax projection models in Azure ML, creating the document package in SharePoint, and emailing the advisor via Microsoft Outlook.
  tags:
  - financial-planning
  - estate-planning
  - salesforce
  - azure-machine-learning
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: estate-planning
    port: 8080
    tools:
    - name: generate-estate-plan
      description: Given a client ID and estate value, generate tax projections and estate planning documents.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The client identifier.
      - name: estate_value
        in: body
        type: string
        description: Estimated estate value.
      - name: advisor_email
        in: body
        type: string
        description: The advisor's email.
      steps:
      - name: get-estate-data
        type: call
        call: salesforce.get-estate-profile
        with:
          client_id: '{{client_id}}'
      - name: run-tax-projection
        type: call
        call: azureml.project-estate-tax
        with:
          estate_value: '{{estate_value}}'
          beneficiaries: '{{get-estate-data.beneficiaries}}'
      - name: create-documents
        type: call
        call: sharepoint.upload-file
        with:
          site_id: estate_planning_site
          folder_path: EstatePlans/{{client_id}}
          file_name: estate_plan.pdf
          content: '{{run-tax-projection.plan_content}}'
      - name: email-advisor
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{advisor_email}}'
          subject: 'Estate Plan Ready: {{get-estate-data.client_name}}'
          body: 'Estate plan for {{get-estate-data.client_name}} is ready. Estate value: ${{estate_value}}. Projected tax: ${{run-tax-projection.estimated_tax}}. Download: {{create-documents.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://northwesternmutual.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: estate-profiles
      path: /sobjects/Estate_Profile__c/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-estate-profile
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://northwesternmutual-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: projections
      path: /score
      operations:
      - name: project-estate-tax
        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: send-mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → estate-planning-document-generator.yml

Orchestrates pension benefit estimation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Pension Benefit Estimation Pipeline
  description: Orchestrates pension benefit estimation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - pension
  - prudential-financial
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: pension
    port: 8080
    tools:
    - name: pension-benefit-estimation-pipeline
      description: Orchestrates pension benefit estimation pipeline across financial services and insurance 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/pension
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/pension
      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/pension
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → pension-benefit-estimation-pipeline.yml

Orchestrates client digital experience pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Digital Experience Pipeline
  description: Orchestrates client digital experience pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - teams
  - workday
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-digital-experience-pipeline
      description: Orchestrates client digital experience pipeline across financial services and insurance 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: workday.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/client
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/client
      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/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-digital-experience-pipeline.yml

Retrieves a real estate property valuation from the PGIM Real Estate platform, returning property address, current appraised value, cap rate, occupancy rate, and net operating income.

naftiko: '0.5'
info:
  label: PGIM Real Estate Property Valuation
  description: Retrieves a real estate property valuation from the PGIM Real Estate platform, returning property address, current appraised value, cap rate, occupancy rate, and net operating income.
  tags:
  - wealth
  - real-estate
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: real-estate
    port: 8080
    tools:
    - name: get-property-valuation
      description: Look up a real estate property valuation from PGIM Real Estate.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The PGIM Real Estate property identifier.
      call: pgim-re.get-valuation
      with:
        property_id: '{{property_id}}'
      outputParameters:
      - name: address
        type: string
        mapping: $.data.address
      - name: appraised_value
        type: string
        mapping: $.data.appraisedValue
      - name: cap_rate
        type: string
        mapping: $.data.capRate
      - name: occupancy
        type: string
        mapping: $.data.occupancyRate
      - name: noi
        type: string
        mapping: $.data.netOperatingIncome
  consumes:
  - type: http
    namespace: pgim-re
    baseUri: https://api.pgim.com/real-estate/v2
    authentication:
      type: bearer
      token: $secrets.pgim_re_token
    resources:
    - name: valuations
      path: /properties/{{property_id}}/valuation
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-valuation
        method: GET
Open in Framework → View in Fleet → pgim-real-estate-property-valuation.yml

Processes a policy loan against a permanent life insurance policy's cash value, verifying the available loan amount and creating the disbursement.

naftiko: '0.5'
info:
  label: Policy Loan Request Processing
  description: Processes a policy loan against a permanent life insurance policy's cash value, verifying the available loan amount and creating the disbursement.
  tags:
  - insurance
  - policy
  - finance
capability:
  exposes:
  - type: mcp
    namespace: policy-loans
    port: 8080
    tools:
    - name: process-policy-loan
      description: Process a policy loan request against the cash value of a life insurance policy.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: loan_amount
        in: body
        type: string
        description: Requested loan amount.
      call: policy-admin.create-loan
      with:
        policy_number: '{{policy_number}}'
        amount: '{{loan_amount}}'
      outputParameters:
      - name: loan_id
        type: string
        mapping: $.data.loanId
      - name: interest_rate
        type: string
        mapping: $.data.interestRate
      - name: remaining_cash_value
        type: string
        mapping: $.data.remainingCashValue
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: loans
      path: /policies/{{policy_number}}/loans
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: create-loan
        method: POST
Open in Framework → View in Fleet → policy-loan-request-processing.yml

Orchestrates insurance fraud detection pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Insurance Fraud Detection Pipeline
  description: Orchestrates insurance fraud detection pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - insurance
  - prudential-financial
  - tableau
  - prudential
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: insurance-fraud-detection-pipeline
      description: Orchestrates insurance fraud detection pipeline across financial services and insurance 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: tableau.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: prudential.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: salesforce.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/insurance
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/insurance
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/insurance
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → insurance-fraud-detection-pipeline.yml

Orchestrates esg investment screening pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esg Investment Screening Pipeline
  description: Orchestrates esg investment screening pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esg
  - prudential-financial
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: esg
    port: 8080
    tools:
    - name: esg-investment-screening-pipeline
      description: Orchestrates esg investment screening pipeline across financial services and insurance 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/esg
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/esg
      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/esg
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esg-investment-screening-pipeline.yml

Orchestrates worksite benefits enrollment pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Worksite Benefits Enrollment Pipeline
  description: Orchestrates worksite benefits enrollment pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - worksite
  - prudential-financial
  - bloomberg
  - tableau
  - prudential
capability:
  exposes:
  - type: mcp
    namespace: worksite
    port: 8080
    tools:
    - name: worksite-benefits-enrollment-pipeline
      description: Orchestrates worksite benefits enrollment pipeline across financial services and insurance 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: tableau.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: prudential.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/worksite
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/worksite
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/worksite
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → worksite-benefits-enrollment-pipeline.yml

Orchestrates client data privacy pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Data Privacy Pipeline
  description: Orchestrates client data privacy pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - workday
  - bloomberg
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-data-privacy-pipeline
      description: Orchestrates client data privacy pipeline across financial services and insurance 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: workday.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: tableau.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/client
      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/client
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-data-privacy-pipeline.yml

Pulls the daily market risk exposure report from the PGIM risk platform, returning VaR, stress test results, and sector concentration for a given portfolio.

naftiko: '0.5'
info:
  label: Market Risk Report
  description: Pulls the daily market risk exposure report from the PGIM risk platform, returning VaR, stress test results, and sector concentration for a given portfolio.
  tags:
  - wealth
  - risk
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: risk-management
    port: 8080
    tools:
    - name: get-market-risk-report
      description: Retrieve daily market risk metrics for a portfolio from PGIM.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The portfolio identifier.
      - name: as_of_date
        in: body
        type: string
        description: Report date in YYYY-MM-DD format.
      call: pgim-risk.get-daily-risk
      with:
        portfolio_id: '{{portfolio_id}}'
        date: '{{as_of_date}}'
      outputParameters:
      - name: var_95
        type: string
        mapping: $.data.valueAtRisk95
      - name: stress_test_loss
        type: string
        mapping: $.data.stressTestMaxLoss
      - name: sector_concentration
        type: string
        mapping: $.data.sectorConcentration
  consumes:
  - type: http
    namespace: pgim-risk
    baseUri: https://api.pgim.com/risk/v2
    authentication:
      type: bearer
      token: $secrets.pgim_risk_token
    resources:
    - name: daily-risk
      path: /portfolios/{{portfolio_id}}/risk
      inputParameters:
      - name: portfolio_id
        in: path
      - name: date
        in: query
      operations:
      - name: get-daily-risk
        method: GET
Open in Framework → View in Fleet → market-risk-report.yml

Calculates a projected retirement income estimate for a plan participant based on current balance, contribution rate, expected returns, and retirement age.

naftiko: '0.5'
info:
  label: Retirement Income Projection
  description: Calculates a projected retirement income estimate for a plan participant based on current balance, contribution rate, expected returns, and retirement age.
  tags:
  - retirement
  - planning
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: retirement-planning
    port: 8080
    tools:
    - name: project-retirement-income
      description: Calculate projected retirement income for a participant.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      - name: retirement_age
        in: body
        type: string
        description: Expected retirement age.
      call: pgim-rk.project-income
      with:
        participant_id: '{{participant_id}}'
        plan_id: '{{plan_id}}'
        retirement_age: '{{retirement_age}}'
      outputParameters:
      - name: projected_monthly_income
        type: string
        mapping: $.data.projectedMonthlyIncome
      - name: projected_balance
        type: string
        mapping: $.data.projectedBalanceAtRetirement
      - name: income_replacement_ratio
        type: string
        mapping: $.data.incomeReplacementRatio
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: projections
      path: /plans/{{plan_id}}/participants/{{participant_id}}/income-projection
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: project-income
        method: POST
Open in Framework → View in Fleet → retirement-income-projection.yml

Rebalances a client's investment portfolio by comparing current allocations from Charles River IMS against the target model, generating trade orders, and notifying the advisor in Salesforce with the rebalance summary.

naftiko: '0.5'
info:
  label: Portfolio Rebalancing Orchestrator
  description: Rebalances a client's investment portfolio by comparing current allocations from Charles River IMS against the target model, generating trade orders, and notifying the advisor in Salesforce with the rebalance summary.
  tags:
  - wealth
  - investment
  - charles-river
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: portfolio-mgmt
    port: 8080
    tools:
    - name: rebalance-portfolio
      description: Given a client account ID and target model, compare allocations, generate trades, and notify the advisor.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The investment account identifier.
      - name: model_id
        in: body
        type: string
        description: The target allocation model identifier.
      steps:
      - name: get-current-positions
        type: call
        call: charles-river.get-positions
        with:
          account_id: '{{account_id}}'
      - name: get-target-model
        type: call
        call: charles-river.get-model
        with:
          model_id: '{{model_id}}'
      - name: generate-trades
        type: call
        call: charles-river.create-rebalance-orders
        with:
          account_id: '{{account_id}}'
          current_positions: '{{get-current-positions.positions}}'
          target_allocations: '{{get-target-model.allocations}}'
      - name: notify-advisor
        type: call
        call: salesforce.create-task
        with:
          subject: 'Portfolio rebalanced: {{account_id}}'
          description: '{{generate-trades.trade_count}} trades generated. Net cash impact: ${{generate-trades.net_cash}}.'
          related_to: '{{account_id}}'
  consumes:
  - type: http
    namespace: charles-river
    baseUri: https://crd.prudential.com/api/v2
    authentication:
      type: bearer
      token: $secrets.charles_river_token
    resources:
    - name: positions
      path: /accounts/{{account_id}}/positions
      inputParameters:
      - name: account_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
    - name: rebalance
      path: /accounts/{{account_id}}/rebalance
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: create-rebalance-orders
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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
Open in Framework → View in Fleet → portfolio-rebalancing-orchestrator.yml

Orchestrates policy conversion eligibility pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Policy Conversion Eligibility Pipeline
  description: Orchestrates policy conversion eligibility pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - policy
  - prudential-financial
  - workday
  - bloomberg
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: policy
    port: 8080
    tools:
    - name: policy-conversion-eligibility-pipeline
      description: Orchestrates policy conversion eligibility pipeline across financial services and insurance 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: workday.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: tableau.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/policy
      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/policy
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/policy
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → policy-conversion-eligibility-pipeline.yml

Runs annual retirement plan compliance tests by pulling plan data from the recordkeeping system, running ADP/ACP tests through the compliance engine, and filing results with the plan sponsor via Salesforce and SharePoint.

naftiko: '0.5'
info:
  label: Retirement Plan Compliance Testing Orchestrator
  description: Runs annual retirement plan compliance tests by pulling plan data from the recordkeeping system, running ADP/ACP tests through the compliance engine, and filing results with the plan sponsor via Salesforce and SharePoint.
  tags:
  - retirement
  - compliance
  - pgim
  - salesforce
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: plan-compliance
    port: 8080
    tools:
    - name: run-compliance-tests
      description: Given a plan ID and test year, pull plan data, run ADP/ACP tests, and share results.
      inputParameters:
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      - name: test_year
        in: body
        type: string
        description: The compliance testing year.
      steps:
      - name: get-plan-data
        type: call
        call: pgim-rk.get-plan-census
        with:
          plan_id: '{{plan_id}}'
          year: '{{test_year}}'
      - name: run-tests
        type: call
        call: compliance-engine.run-adp-acp
        with:
          plan_id: '{{plan_id}}'
          census_data: '{{get-plan-data.census}}'
          year: '{{test_year}}'
      - name: upload-results
        type: call
        call: sharepoint.upload-file
        with:
          site_id: retirement_compliance
          file_path: ComplianceTests/{{plan_id}}/{{test_year}}_results.pdf
          content: '{{run-tests.report}}'
      - name: notify-sponsor
        type: call
        call: salesforce.create-task
        with:
          subject: Plan {{plan_id}} compliance test results for {{test_year}}
          description: 'ADP test: {{run-tests.adp_result}}. ACP test: {{run-tests.acp_result}}. Report: {{upload-results.url}}'
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: census
      path: /plans/{{plan_id}}/census
      inputParameters:
      - name: plan_id
        in: path
      - name: year
        in: query
      operations:
      - name: get-plan-census
        method: GET
  - type: http
    namespace: compliance-engine
    baseUri: https://api.prudential.com/internal/plan-compliance/v1
    authentication:
      type: bearer
      token: $secrets.plan_compliance_token
    resources:
    - name: tests
      path: /adp-acp-tests
      operations:
      - name: run-adp-acp
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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
Open in Framework → View in Fleet → retirement-plan-compliance-testing-orchestrator.yml

Orchestrates insurance product pricing pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Insurance Product Pricing Pipeline
  description: Orchestrates insurance product pricing pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - insurance
  - prudential-financial
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: insurance-product-pricing-pipeline
      description: Orchestrates insurance product pricing pipeline across financial services and insurance 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://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/insurance
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/insurance
      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/insurance
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → insurance-product-pricing-pipeline.yml

Processes voluntary benefits enrollment (accident, critical illness, hospital indemnity) by validating employee eligibility, creating the enrollment, calculating premium, and sending the enrollment confirmation.

naftiko: '0.5'
info:
  label: Voluntary Benefits Enrollment Orchestrator
  description: Processes voluntary benefits enrollment (accident, critical illness, hospital indemnity) by validating employee eligibility, creating the enrollment, calculating premium, and sending the enrollment confirmation.
  tags:
  - insurance
  - group-benefits
  - voluntary
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: voluntary-benefits
    port: 8080
    tools:
    - name: enroll-voluntary-benefits
      description: Given employee and benefit selections, validate eligibility, enroll, calculate premium, and confirm.
      inputParameters:
      - name: employer_id
        in: body
        type: string
        description: The employer group identifier.
      - name: employee_id
        in: body
        type: string
        description: The employee identifier.
      - name: benefit_selections
        in: body
        type: string
        description: JSON of selected voluntary benefits.
      steps:
      - name: validate-eligibility
        type: call
        call: group-admin.check-voluntary-eligibility
        with:
          employer_id: '{{employer_id}}'
          employee_id: '{{employee_id}}'
      - name: create-enrollment
        type: call
        call: group-admin.enroll-voluntary
        with:
          employer_id: '{{employer_id}}'
          employee_id: '{{employee_id}}'
          selections: '{{benefit_selections}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: voluntary_enrollment_confirmation
          to: '{{validate-eligibility.email}}'
          merge_benefits: '{{benefit_selections}}'
          merge_premium: '{{create-enrollment.monthly_premium}}'
  consumes:
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: voluntary-eligibility
      path: /employers/{{employer_id}}/employees/{{employee_id}}/voluntary-eligibility
      inputParameters:
      - name: employer_id
        in: path
      - name: employee_id
        in: path
      operations:
      - name: check-voluntary-eligibility
        method: GET
    - name: voluntary-enrollment
      path: /employers/{{employer_id}}/employees/{{employee_id}}/voluntary-enrollment
      inputParameters:
      - name: employer_id
        in: path
      - name: employee_id
        in: path
      operations:
      - name: enroll-voluntary
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → voluntary-benefits-enrollment-orchestrator.yml

Orchestrates advisor licensing renewal pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Advisor Licensing Renewal Pipeline
  description: Orchestrates advisor licensing renewal pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - advisor
  - prudential-financial
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: advisor
    port: 8080
    tools:
    - name: advisor-licensing-renewal-pipeline
      description: Orchestrates advisor licensing renewal pipeline across financial services and insurance 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://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/advisor
      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/advisor
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/advisor
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → advisor-licensing-renewal-pipeline.yml

Orchestrates retirement plan forfeit reallocation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Retirement Plan Forfeit Reallocation Pipeline
  description: Orchestrates retirement plan forfeit reallocation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - retirement
  - prudential-financial
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-forfeit-reallocation-pipeline
      description: Orchestrates retirement plan forfeit reallocation pipeline across financial services and insurance 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://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/retirement
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/retirement
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/retirement
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → retirement-plan-forfeit-reallocation-pipeline.yml

Compiles quarterly earnings data by pulling financial results from SAP, investment performance from PGIM, and policy metrics from the admin systems, then pushes the compiled data to Power BI and notifies IR team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Quarterly Earnings Reporting Orchestrator
  description: Compiles quarterly earnings data by pulling financial results from SAP, investment performance from PGIM, and policy metrics from the admin systems, then pushes the compiled data to Power BI and notifies IR team in Microsoft Teams.
  tags:
  - finance
  - reporting
  - sap
  - pgim
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: earnings-reporting
    port: 8080
    tools:
    - name: compile-quarterly-earnings
      description: Given a quarter, aggregate financial, investment, and policy data, push to Power BI, and notify the IR team.
      inputParameters:
      - name: quarter
        in: body
        type: string
        description: Quarter in YYYY-Q# format.
      steps:
      - name: get-financials
        type: call
        call: sap.get-quarterly-results
        with:
          period: '{{quarter}}'
      - name: get-investment-performance
        type: call
        call: pgim-platform.get-aum-summary
        with:
          period: '{{quarter}}'
      - name: push-to-powerbi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: quarterly_earnings
          rows_revenue: '{{get-financials.total_revenue}}'
          rows_net_income: '{{get-financials.net_income}}'
          rows_aum: '{{get-investment-performance.total_aum}}'
      - name: notify-ir
        type: call
        call: msteams.send-message
        with:
          channel_id: investor-relations
          text: 'Q{{quarter}} earnings data compiled. Revenue: ${{get-financials.total_revenue}}M, Net Income: ${{get-financials.net_income}}M, AUM: ${{get-investment-performance.total_aum}}B. Dashboard updated.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://prudential-s4.sap.com/sap/opu/odata/sap/FI_GL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: results
      path: /A_GLAccountBalance
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-quarterly-results
        method: GET
  - type: http
    namespace: pgim-platform
    baseUri: https://api.pgim.com/platform/v2
    authentication:
      type: bearer
      token: $secrets.pgim_platform_token
    resources:
    - name: aum
      path: /aum-summary
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-aum-summary
        method: GET
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/tables/Earnings/rows
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: push-rows
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → quarterly-earnings-reporting-orchestrator.yml

Retrieves product details from the insurance product catalog, returning product name, available riders, state availability, and current rate class information.

naftiko: '0.5'
info:
  label: Insurance Product Catalog Lookup
  description: Retrieves product details from the insurance product catalog, returning product name, available riders, state availability, and current rate class information.
  tags:
  - insurance
  - product
capability:
  exposes:
  - type: mcp
    namespace: product-info
    port: 8080
    tools:
    - name: get-product-details
      description: Look up insurance product details from the product catalog.
      inputParameters:
      - name: product_code
        in: body
        type: string
        description: The insurance product code.
      call: product-catalog.get-product
      with:
        product_code: '{{product_code}}'
      outputParameters:
      - name: product_name
        type: string
        mapping: $.data.productName
      - name: riders
        type: string
        mapping: $.data.availableRiders
      - name: state_availability
        type: string
        mapping: $.data.availableStates
      - name: rate_classes
        type: string
        mapping: $.data.rateClasses
  consumes:
  - type: http
    namespace: product-catalog
    baseUri: https://api.prudential.com/internal/products/v1
    authentication:
      type: bearer
      token: $secrets.product_catalog_token
    resources:
    - name: products
      path: /products/{{product_code}}
      inputParameters:
      - name: product_code
        in: path
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → insurance-product-catalog-lookup.yml

Retrieves retirement plan hardship eligibility data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Retirement Plan Hardship Eligibility
  description: Retrieves retirement plan hardship eligibility data from the Prudential Financial financial services and insurance systems.
  tags:
  - retirement
  - prudential-financial
  - eligibility
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-hardship-eligibility
      description: Retrieves retirement plan hardship eligibility data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.retirement-plan-hardship-eligibility
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /retirement/plan/hardship/eligibility/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: retirement-plan-hardship-eligibility
        method: GET
Open in Framework → View in Fleet → retirement-plan-hardship-eligibility.yml

Orchestrates investment trade compliance pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Investment Trade Compliance Pipeline
  description: Orchestrates investment trade compliance pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - investment
  - prudential-financial
  - prudential
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-trade-compliance-pipeline
      description: Orchestrates investment trade compliance pipeline across financial services and insurance 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: prudential.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: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/investment
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/investment
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → investment-trade-compliance-pipeline.yml

Launches a retirement plan enrollment campaign by pulling eligible employees from the plan sponsor's HR feed, sending enrollment invitation emails via Salesforce Marketing Cloud, and tracking enrollment progress in the recordkeeping system.

naftiko: '0.5'
info:
  label: Retirement Enrollment Campaign Orchestrator
  description: Launches a retirement plan enrollment campaign by pulling eligible employees from the plan sponsor's HR feed, sending enrollment invitation emails via Salesforce Marketing Cloud, and tracking enrollment progress in the recordkeeping system.
  tags:
  - retirement
  - enrollment
  - pgim
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: retirement-enrollment
    port: 8080
    tools:
    - name: launch-enrollment-campaign
      description: Given a plan ID and enrollment window, pull eligible employees, send invitations, and track progress.
      inputParameters:
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      - name: enrollment_start
        in: body
        type: string
        description: Enrollment start date in YYYY-MM-DD format.
      - name: enrollment_end
        in: body
        type: string
        description: Enrollment end date in YYYY-MM-DD format.
      steps:
      - name: get-eligible-employees
        type: call
        call: pgim-rk.get-eligible-participants
        with:
          plan_id: '{{plan_id}}'
      - name: send-invitations
        type: call
        call: sfmc.send-batch-email
        with:
          template: enrollment_invitation
          recipients: '{{get-eligible-employees.emails}}'
          merge_plan: '{{plan_id}}'
          merge_start: '{{enrollment_start}}'
          merge_end: '{{enrollment_end}}'
      - name: create-tracking
        type: call
        call: pgim-rk.create-enrollment-window
        with:
          plan_id: '{{plan_id}}'
          start_date: '{{enrollment_start}}'
          end_date: '{{enrollment_end}}'
          eligible_count: '{{get-eligible-employees.count}}'
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: eligible
      path: /plans/{{plan_id}}/eligible-participants
      inputParameters:
      - name: plan_id
        in: path
      operations:
      - name: get-eligible-participants
        method: GET
    - name: enrollment-windows
      path: /plans/{{plan_id}}/enrollment-windows
      inputParameters:
      - name: plan_id
        in: path
      operations:
      - name: create-enrollment-window
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: batch-emails
      path: /messaging/v1/email/messages/batch
      operations:
      - name: send-batch-email
        method: POST
Open in Framework → View in Fleet → retirement-enrollment-campaign-orchestrator.yml

Processes a fund transfer within a variable annuity contract, moving allocations between sub-accounts and recording the transfer.

naftiko: '0.5'
info:
  label: Variable Annuity Fund Transfer
  description: Processes a fund transfer within a variable annuity contract, moving allocations between sub-accounts and recording the transfer.
  tags:
  - insurance
  - annuity
  - investment
capability:
  exposes:
  - type: mcp
    namespace: annuity-transfers
    port: 8080
    tools:
    - name: transfer-annuity-funds
      description: Transfer funds between sub-accounts within a variable annuity.
      inputParameters:
      - name: contract_number
        in: body
        type: string
        description: The annuity contract number.
      - name: from_fund
        in: body
        type: string
        description: Source fund code.
      - name: to_fund
        in: body
        type: string
        description: Destination fund code.
      - name: amount
        in: body
        type: string
        description: Transfer amount.
      call: annuity-admin.transfer-funds
      with:
        contract: '{{contract_number}}'
        from: '{{from_fund}}'
        to: '{{to_fund}}'
        amount: '{{amount}}'
      outputParameters:
      - name: confirmation_id
        type: string
        mapping: $.data.transferId
      - name: new_balance_from
        type: string
        mapping: $.data.fromFundBalance
      - name: new_balance_to
        type: string
        mapping: $.data.toFundBalance
  consumes:
  - type: http
    namespace: annuity-admin
    baseUri: https://api.prudential.com/internal/annuity/v2
    authentication:
      type: bearer
      token: $secrets.annuity_admin_token
    resources:
    - name: transfers
      path: /contracts/{{contract}}/transfers
      inputParameters:
      - name: contract
        in: path
      operations:
      - name: transfer-funds
        method: POST
Open in Framework → View in Fleet → variable-annuity-fund-transfer.yml

Retrieves policy premium projection data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Policy Premium Projection
  description: Retrieves policy premium projection data from the Prudential Financial financial services and insurance systems.
  tags:
  - policy
  - prudential-financial
  - projection
capability:
  exposes:
  - type: mcp
    namespace: policy
    port: 8080
    tools:
    - name: policy-premium-projection
      description: Retrieves policy premium projection data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.policy-premium-projection
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /policy/premium/projection/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: policy-premium-projection
        method: GET
Open in Framework → View in Fleet → policy-premium-projection.yml

Retrieves the duration and convexity metrics for a PGIM fixed income portfolio, returning effective duration, modified duration, spread duration, and key rate durations.

naftiko: '0.5'
info:
  label: Fixed Income Portfolio Duration Check
  description: Retrieves the duration and convexity metrics for a PGIM fixed income portfolio, returning effective duration, modified duration, spread duration, and key rate durations.
  tags:
  - wealth
  - investment
  - pgim
  - fixed-income
capability:
  exposes:
  - type: mcp
    namespace: fixed-income
    port: 8080
    tools:
    - name: get-portfolio-duration
      description: Retrieve duration metrics for a fixed income portfolio from PGIM.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The portfolio identifier.
      call: pgim-fi.get-duration
      with:
        portfolio_id: '{{portfolio_id}}'
      outputParameters:
      - name: effective_duration
        type: string
        mapping: $.data.effectiveDuration
      - name: modified_duration
        type: string
        mapping: $.data.modifiedDuration
      - name: spread_duration
        type: string
        mapping: $.data.spreadDuration
  consumes:
  - type: http
    namespace: pgim-fi
    baseUri: https://api.pgim.com/fixed-income/v2
    authentication:
      type: bearer
      token: $secrets.pgim_fi_token
    resources:
    - name: duration
      path: /portfolios/{{portfolio_id}}/duration
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-duration
        method: GET
Open in Framework → View in Fleet → fixed-income-portfolio-duration-check.yml

Retrieves the performance data for a PGIM investment fund, returning NAV, YTD return, 1-year return, 3-year return, and expense ratio from the fund data platform.

naftiko: '0.5'
info:
  label: Investment Fund Performance Lookup
  description: Retrieves the performance data for a PGIM investment fund, returning NAV, YTD return, 1-year return, 3-year return, and expense ratio from the fund data platform.
  tags:
  - wealth
  - investment
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: fund-data
    port: 8080
    tools:
    - name: get-fund-performance
      description: Look up performance metrics for a PGIM investment fund.
      inputParameters:
      - name: fund_ticker
        in: body
        type: string
        description: The fund ticker symbol.
      call: fund-platform.get-performance
      with:
        ticker: '{{fund_ticker}}'
      outputParameters:
      - name: nav
        type: string
        mapping: $.data.nav
      - name: ytd_return
        type: string
        mapping: $.data.ytdReturn
      - name: one_year_return
        type: string
        mapping: $.data.oneYearReturn
      - name: three_year_return
        type: string
        mapping: $.data.threeYearReturn
      - name: expense_ratio
        type: string
        mapping: $.data.expenseRatio
  consumes:
  - type: http
    namespace: fund-platform
    baseUri: https://api.pgim.com/fund-data/v2
    authentication:
      type: bearer
      token: $secrets.pgim_fund_token
    resources:
    - name: performance
      path: /funds/{{ticker}}/performance
      inputParameters:
      - name: ticker
        in: path
      operations:
      - name: get-performance
        method: GET
Open in Framework → View in Fleet → investment-fund-performance-lookup.yml

Creates a customer service case in Salesforce Service Cloud for policyholder inquiries, routing to the appropriate queue based on product line and issue type.

naftiko: '0.5'
info:
  label: Customer Service Ticket Creation
  description: Creates a customer service case in Salesforce Service Cloud for policyholder inquiries, routing to the appropriate queue based on product line and issue type.
  tags:
  - customer-service
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: customer-service
    port: 8080
    tools:
    - name: create-service-case
      description: Create a customer service case in Salesforce.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce contact ID.
      - name: product_line
        in: body
        type: string
        description: Product line (life, annuity, retirement, disability, wealth).
      - name: issue_type
        in: body
        type: string
        description: Type of issue (billing, claim, account_change, general_inquiry).
      - name: description
        in: body
        type: string
        description: Description of the customer's issue.
      call: salesforce.create-case
      with:
        contact_id: '{{customer_id}}'
        product_line: '{{product_line}}'
        type: '{{issue_type}}'
        description: '{{description}}'
      outputParameters:
      - name: case_number
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → customer-service-ticket-creation.yml

Retrieves group disability benefit calculator data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Group Disability Benefit Calculator
  description: Retrieves group disability benefit calculator data from the Prudential Financial financial services and insurance systems.
  tags:
  - group
  - prudential-financial
  - calculator
capability:
  exposes:
  - type: mcp
    namespace: group
    port: 8080
    tools:
    - name: group-disability-benefit-calculator
      description: Retrieves group disability benefit calculator data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.group-disability-benefit-calculator
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /group/disability/benefit/calculator/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: group-disability-benefit-calculator
        method: GET
Open in Framework → View in Fleet → group-disability-benefit-calculator.yml

Coordinates estate settlement by pulling all policies for a deceased insured, generating a consolidated benefits statement, filing claims across all lines, and notifying the estate executor via email.

naftiko: '0.5'
info:
  label: Estate Settlement Orchestrator
  description: Coordinates estate settlement by pulling all policies for a deceased insured, generating a consolidated benefits statement, filing claims across all lines, and notifying the estate executor via email.
  tags:
  - insurance
  - claims
  - estate
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: estate-settlement
    port: 8080
    tools:
    - name: initiate-estate-settlement
      description: Given a deceased insured's ID, find all policies, file claims, and notify executor.
      inputParameters:
      - name: insured_id
        in: body
        type: string
        description: The deceased insured's identifier.
      - name: executor_email
        in: body
        type: string
        description: Estate executor's email address.
      - name: date_of_death
        in: body
        type: string
        description: Date of death in YYYY-MM-DD format.
      steps:
      - name: find-policies
        type: call
        call: policy-admin.find-policies-by-insured
        with:
          insured_id: '{{insured_id}}'
      - name: file-claims
        type: call
        call: claims-engine.file-death-claims-batch
        with:
          policies: '{{find-policies.policy_numbers}}'
          date_of_death: '{{date_of_death}}'
      - name: notify-executor
        type: call
        call: sfmc.send-email
        with:
          template: estate_settlement
          to: '{{executor_email}}'
          merge_policies: '{{find-policies.count}}'
          merge_total_benefit: '{{file-claims.total_benefit}}'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: search
      path: /policies/search
      operations:
      - name: find-policies-by-insured
        method: POST
  - type: http
    namespace: claims-engine
    baseUri: https://api.prudential.com/internal/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_engine_token
    resources:
    - name: batch-claims
      path: /death-claims/batch
      operations:
      - name: file-death-claims-batch
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → estate-settlement-orchestrator.yml

Orchestrates retirement distribution tax pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Retirement Distribution Tax Pipeline
  description: Orchestrates retirement distribution tax pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - retirement
  - prudential-financial
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-distribution-tax-pipeline
      description: Orchestrates retirement distribution tax pipeline across financial services and insurance 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/retirement
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/retirement
      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/retirement
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → retirement-distribution-tax-pipeline.yml

Retrieves the status of a group disability claim from the disability claims system, returning claim state, disability type, benefit amount, and return-to-work date.

naftiko: '0.5'
info:
  label: Disability Claim Status
  description: Retrieves the status of a group disability claim from the disability claims system, returning claim state, disability type, benefit amount, and return-to-work date.
  tags:
  - insurance
  - disability
  - claims
capability:
  exposes:
  - type: mcp
    namespace: disability-claims
    port: 8080
    tools:
    - name: get-disability-claim
      description: Look up a disability claim by claim number.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The disability claim number.
      call: disability-system.get-claim
      with:
        claim_number: '{{claim_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.claimStatus
      - name: disability_type
        type: string
        mapping: $.data.disabilityType
      - name: benefit_amount
        type: string
        mapping: $.data.weeklyBenefit
      - name: return_to_work_date
        type: string
        mapping: $.data.expectedReturnDate
  consumes:
  - type: http
    namespace: disability-system
    baseUri: https://api.prudential.com/internal/disability/v2
    authentication:
      type: bearer
      token: $secrets.disability_token
    resources:
    - name: claims
      path: /claims/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim
        method: GET
Open in Framework → View in Fleet → disability-claim-status.yml

Processes a 401(k) rollover by verifying the source plan, initiating the transfer through the custodian, updating the participant's account in the recordkeeping system, and sending confirmation via email.

naftiko: '0.5'
info:
  label: Retirement Plan Rollover Orchestrator
  description: Processes a 401(k) rollover by verifying the source plan, initiating the transfer through the custodian, updating the participant's account in the recordkeeping system, and sending confirmation via email.
  tags:
  - retirement
  - rollover
  - pgim
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: retirement-rollovers
    port: 8080
    tools:
    - name: process-rollover
      description: Given participant and source plan details, verify, initiate transfer, update account, and confirm.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: target_plan_id
        in: body
        type: string
        description: The Prudential target plan identifier.
      - name: source_plan_name
        in: body
        type: string
        description: Name of the source plan/provider.
      - name: rollover_amount
        in: body
        type: string
        description: Amount to roll over.
      steps:
      - name: verify-participant
        type: call
        call: pgim-rk.get-account
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{target_plan_id}}'
      - name: initiate-transfer
        type: call
        call: custodian.initiate-rollover
        with:
          target_account: '{{participant_id}}'
          source_plan: '{{source_plan_name}}'
          amount: '{{rollover_amount}}'
      - name: update-account
        type: call
        call: pgim-rk.record-rollover
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{target_plan_id}}'
          amount: '{{rollover_amount}}'
          transfer_id: '{{initiate-transfer.transfer_id}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: rollover_confirmation
          to: '{{verify-participant.email}}'
          merge_amount: '{{rollover_amount}}'
          merge_source: '{{source_plan_name}}'
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: accounts
      path: /plans/{{plan_id}}/participants/{{participant_id}}/account
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: get-account
        method: GET
    - name: rollovers
      path: /plans/{{plan_id}}/participants/{{participant_id}}/rollovers
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: record-rollover
        method: POST
  - type: http
    namespace: custodian
    baseUri: https://api.prudential.com/internal/custody/v1
    authentication:
      type: bearer
      token: $secrets.custodian_token
    resources:
    - name: rollovers
      path: /rollovers
      operations:
      - name: initiate-rollover
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → retirement-plan-rollover-orchestrator.yml

Manages the return-to-work process for a disability claimant by updating the claim status, coordinating with the employer through the group admin system, and sending the RTW plan to the claimant via email.

naftiko: '0.5'
info:
  label: Disability Return-to-Work Orchestrator
  description: Manages the return-to-work process for a disability claimant by updating the claim status, coordinating with the employer through the group admin system, and sending the RTW plan to the claimant via email.
  tags:
  - insurance
  - disability
  - claims
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: rtw-management
    port: 8080
    tools:
    - name: process-return-to-work
      description: Given a claim number and RTW date, update claim, notify employer, and send plan to claimant.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The disability claim number.
      - name: return_date
        in: body
        type: string
        description: Planned return-to-work date.
      - name: work_restrictions
        in: body
        type: string
        description: Any work restrictions or accommodations needed.
      steps:
      - name: update-claim
        type: call
        call: disability-system.update-claim
        with:
          claim_number: '{{claim_number}}'
          return_date: '{{return_date}}'
          restrictions: '{{work_restrictions}}'
      - name: notify-employer
        type: call
        call: group-admin.send-rtw-notice
        with:
          claim_number: '{{claim_number}}'
          return_date: '{{return_date}}'
          restrictions: '{{work_restrictions}}'
      - name: send-plan
        type: call
        call: sfmc.send-email
        with:
          template: rtw_plan
          to: '{{update-claim.claimant_email}}'
          merge_date: '{{return_date}}'
          merge_restrictions: '{{work_restrictions}}'
  consumes:
  - type: http
    namespace: disability-system
    baseUri: https://api.prudential.com/internal/disability/v2
    authentication:
      type: bearer
      token: $secrets.disability_token
    resources:
    - name: claims
      path: /claims/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: update-claim
        method: PATCH
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: rtw
      path: /rtw-notices
      operations:
      - name: send-rtw-notice
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → disability-return-to-work-orchestrator.yml

Retrieves the ESG (Environmental, Social, Governance) score for a PGIM investment portfolio, returning overall ESG score, environmental score, social score, and governance score.

naftiko: '0.5'
info:
  label: ESG Portfolio Score
  description: Retrieves the ESG (Environmental, Social, Governance) score for a PGIM investment portfolio, returning overall ESG score, environmental score, social score, and governance score.
  tags:
  - wealth
  - investment
  - pgim
  - esg
capability:
  exposes:
  - type: mcp
    namespace: esg-analytics
    port: 8080
    tools:
    - name: get-esg-score
      description: Retrieve ESG scores for an investment portfolio from PGIM.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The portfolio identifier.
      call: pgim-esg.get-scores
      with:
        portfolio_id: '{{portfolio_id}}'
      outputParameters:
      - name: overall_esg
        type: string
        mapping: $.data.overallScore
      - name: environmental
        type: string
        mapping: $.data.environmentalScore
      - name: social
        type: string
        mapping: $.data.socialScore
      - name: governance
        type: string
        mapping: $.data.governanceScore
  consumes:
  - type: http
    namespace: pgim-esg
    baseUri: https://api.pgim.com/esg/v1
    authentication:
      type: bearer
      token: $secrets.pgim_esg_token
    resources:
    - name: scores
      path: /portfolios/{{portfolio_id}}/esg-scores
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-scores
        method: GET
Open in Framework → View in Fleet → esg-portfolio-score.yml

Orchestrates investment portfolio risk rebalancer across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Investment Portfolio Risk Rebalancer
  description: Orchestrates investment portfolio risk rebalancer across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - investment
  - prudential-financial
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-portfolio-risk-rebalancer
      description: Orchestrates investment portfolio risk rebalancer across financial services and insurance 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/investment
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/investment
      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/investment
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → investment-portfolio-risk-rebalancer.yml

Generates a life insurance policy illustration by pulling product rates from the product catalog, running the illustration engine, and sharing the PDF with the agent via Salesforce and Box.

naftiko: '0.5'
info:
  label: Illustration Generation Orchestrator
  description: Generates a life insurance policy illustration by pulling product rates from the product catalog, running the illustration engine, and sharing the PDF with the agent via Salesforce and Box.
  tags:
  - insurance
  - sales
  - salesforce
  - box
capability:
  exposes:
  - type: mcp
    namespace: illustrations
    port: 8080
    tools:
    - name: generate-illustration
      description: Given product and applicant details, generate a policy illustration, store in Box, and share with the agent.
      inputParameters:
      - name: product_code
        in: body
        type: string
        description: The insurance product code.
      - name: face_amount
        in: body
        type: string
        description: Requested face amount.
      - name: applicant_age
        in: body
        type: string
        description: Applicant's current age.
      - name: agent_id
        in: body
        type: string
        description: The agent's Salesforce user ID.
      steps:
      - name: get-rates
        type: call
        call: product-catalog.get-rates
        with:
          product_code: '{{product_code}}'
          face_amount: '{{face_amount}}'
          age: '{{applicant_age}}'
      - name: generate-pdf
        type: call
        call: illustration-engine.create-illustration
        with:
          product_code: '{{product_code}}'
          face_amount: '{{face_amount}}'
          premium: '{{get-rates.annual_premium}}'
          age: '{{applicant_age}}'
      - name: upload-to-box
        type: call
        call: box.upload-file
        with:
          folder_id: illustrations
          file_name: Illustration_{{product_code}}_{{applicant_age}}.pdf
          content: '{{generate-pdf.pdf_content}}'
      - name: notify-agent
        type: call
        call: salesforce.create-task
        with:
          owner_id: '{{agent_id}}'
          subject: 'Illustration ready: {{product_code}} ${{face_amount}}'
          description: 'Premium: ${{get-rates.annual_premium}}/year. Download: {{upload-to-box.shared_link}}'
  consumes:
  - type: http
    namespace: product-catalog
    baseUri: https://api.prudential.com/internal/products/v1
    authentication:
      type: bearer
      token: $secrets.product_catalog_token
    resources:
    - name: rates
      path: /products/{{product_code}}/rates
      inputParameters:
      - name: product_code
        in: path
      operations:
      - name: get-rates
        method: POST
  - type: http
    namespace: illustration-engine
    baseUri: https://api.prudential.com/internal/illustrations/v1
    authentication:
      type: bearer
      token: $secrets.illustration_token
    resources:
    - name: illustrations
      path: /illustrations
      operations:
      - name: create-illustration
        method: POST
  - type: http
    namespace: box
    baseUri: https://upload.box.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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
Open in Framework → View in Fleet → illustration-generation-orchestrator.yml

Retrieves insurance illustration lookup data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Insurance Illustration Lookup
  description: Retrieves insurance illustration lookup data from the Prudential Financial financial services and insurance systems.
  tags:
  - insurance
  - prudential-financial
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: insurance
    port: 8080
    tools:
    - name: insurance-illustration-lookup
      description: Retrieves insurance illustration lookup data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.insurance-illustration-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /insurance/illustration/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: insurance-illustration-lookup
        method: GET
Open in Framework → View in Fleet → insurance-illustration-lookup.yml

Retrieves group benefits enrollment details for an employee from the group admin platform, returning enrolled coverages, dependents, coverage amounts, and effective dates.

naftiko: '0.5'
info:
  label: Group Benefits Enrollment Lookup
  description: Retrieves group benefits enrollment details for an employee from the group admin platform, returning enrolled coverages, dependents, coverage amounts, and effective dates.
  tags:
  - insurance
  - group-benefits
capability:
  exposes:
  - type: mcp
    namespace: group-benefits
    port: 8080
    tools:
    - name: get-enrollment
      description: Look up group benefits enrollment for an employee.
      inputParameters:
      - name: employer_id
        in: body
        type: string
        description: The employer group identifier.
      - name: employee_ssn_last4
        in: body
        type: string
        description: Last 4 digits of the employee's SSN.
      call: group-admin.get-enrollment
      with:
        employer_id: '{{employer_id}}'
        ssn_last4: '{{employee_ssn_last4}}'
      outputParameters:
      - name: coverages
        type: string
        mapping: $.data.enrolledCoverages
      - name: dependents
        type: string
        mapping: $.data.dependents
      - name: effective_date
        type: string
        mapping: $.data.effectiveDate
  consumes:
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: enrollments
      path: /employers/{{employer_id}}/employees
      inputParameters:
      - name: employer_id
        in: path
      - name: ssn_last4
        in: query
      operations:
      - name: get-enrollment
        method: GET
Open in Framework → View in Fleet → group-benefits-enrollment-lookup.yml

Orchestrates group benefits annual renewal pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Group Benefits Annual Renewal Pipeline
  description: Orchestrates group benefits annual renewal pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - group
  - prudential-financial
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: group
    port: 8080
    tools:
    - name: group-benefits-annual-renewal-pipeline
      description: Orchestrates group benefits annual renewal pipeline across financial services and insurance 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://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/group
      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/group
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/group
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → group-benefits-annual-renewal-pipeline.yml

Orchestrates death benefit payout pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Death Benefit Payout Pipeline
  description: Orchestrates death benefit payout pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - death
  - prudential-financial
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: death
    port: 8080
    tools:
    - name: death-benefit-payout-pipeline
      description: Orchestrates death benefit payout pipeline across financial services and insurance 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://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/death
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/death
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/death
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → death-benefit-payout-pipeline.yml

Orchestrates disability claim return to work pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Disability Claim Return To Work Pipeline
  description: Orchestrates disability claim return to work pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - disability
  - prudential-financial
  - bloomberg
  - tableau
  - prudential
capability:
  exposes:
  - type: mcp
    namespace: disability
    port: 8080
    tools:
    - name: disability-claim-return-to-work-pipeline
      description: Orchestrates disability claim return to work pipeline across financial services and insurance 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: tableau.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: prudential.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/disability
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/disability
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/disability
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → disability-claim-return-to-work-pipeline.yml

Orchestrates group open enrollment orchestrator across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Group Open Enrollment Orchestrator
  description: Orchestrates group open enrollment orchestrator across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - group
  - prudential-financial
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: group
    port: 8080
    tools:
    - name: group-open-enrollment-orchestrator
      description: Orchestrates group open enrollment orchestrator across financial services and insurance 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://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/group
      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/group
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/group
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → group-open-enrollment-orchestrator.yml

Retrieves retirement plan fee disclosure data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Retirement Plan Fee Disclosure
  description: Retrieves retirement plan fee disclosure data from the Prudential Financial financial services and insurance systems.
  tags:
  - retirement
  - prudential-financial
  - disclosure
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-fee-disclosure
      description: Retrieves retirement plan fee disclosure data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.retirement-plan-fee-disclosure
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /retirement/plan/fee/disclosure/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: retirement-plan-fee-disclosure
        method: GET
Open in Framework → View in Fleet → retirement-plan-fee-disclosure.yml

Executes a securities trade through the Charles River IMS order management system, returning trade confirmation, execution price, and settlement date.

naftiko: '0.5'
info:
  label: Investment Trade Execution
  description: Executes a securities trade through the Charles River IMS order management system, returning trade confirmation, execution price, and settlement date.
  tags:
  - wealth
  - investment
  - charles-river
capability:
  exposes:
  - type: mcp
    namespace: trade-execution
    port: 8080
    tools:
    - name: execute-trade
      description: Execute a securities trade through Charles River IMS.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The investment account identifier.
      - name: security
        in: body
        type: string
        description: Security ticker symbol.
      - name: side
        in: body
        type: string
        description: Trade side (buy, sell).
      - name: quantity
        in: body
        type: string
        description: Number of shares.
      call: charles-river.submit-order
      with:
        account_id: '{{account_id}}'
        security: '{{security}}'
        side: '{{side}}'
        quantity: '{{quantity}}'
      outputParameters:
      - name: order_id
        type: string
        mapping: $.data.orderId
      - name: execution_price
        type: string
        mapping: $.data.executionPrice
      - name: settlement_date
        type: string
        mapping: $.data.settlementDate
  consumes:
  - type: http
    namespace: charles-river
    baseUri: https://crd.prudential.com/api/v2
    authentication:
      type: bearer
      token: $secrets.charles_river_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: submit-order
        method: POST
Open in Framework → View in Fleet → investment-trade-execution.yml

Checks an employee's compliance training completion status from the LMS, returning completed courses, overdue trainings, and next due date.

naftiko: '0.5'
info:
  label: Compliance Training Completion Check
  description: Checks an employee's compliance training completion status from the LMS, returning completed courses, overdue trainings, and next due date.
  tags:
  - compliance
  - hr
  - training
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: check-training-status
      description: Check compliance training completion for an employee.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The employee identifier.
      call: lms.get-compliance-status
      with:
        user_id: '{{employee_id}}'
      outputParameters:
      - name: completed_courses
        type: string
        mapping: $.data.completedCount
      - name: overdue_count
        type: string
        mapping: $.data.overdueCount
      - name: next_due
        type: string
        mapping: $.data.nextDueDate
  consumes:
  - type: http
    namespace: lms
    baseUri: https://api.prudential.com/internal/lms/v1
    authentication:
      type: bearer
      token: $secrets.lms_token
    resources:
    - name: compliance
      path: /users/{{user_id}}/compliance-status
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: get-compliance-status
        method: GET
Open in Framework → View in Fleet → compliance-training-completion-check.yml

Orchestrates financial advisor compensation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Financial Advisor Compensation Pipeline
  description: Orchestrates financial advisor compensation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - financial
  - prudential-financial
  - teams
  - workday
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: financial
    port: 8080
    tools:
    - name: financial-advisor-compensation-pipeline
      description: Orchestrates financial advisor compensation pipeline across financial services and insurance 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: workday.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/financial
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/financial
      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/financial
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → financial-advisor-compensation-pipeline.yml

Retrieves group life certificate lookup data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Group Life Certificate Lookup
  description: Retrieves group life certificate lookup data from the Prudential Financial financial services and insurance systems.
  tags:
  - group
  - prudential-financial
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: group
    port: 8080
    tools:
    - name: group-life-certificate-lookup
      description: Retrieves group life certificate lookup data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.group-life-certificate-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /group/life/certificate/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: group-life-certificate-lookup
        method: GET
Open in Framework → View in Fleet → group-life-certificate-lookup.yml

Retrieves a participant's retirement account balance from the PGIM recordkeeping system, returning total balance, vested balance, investment allocations, and last contribution date.

naftiko: '0.5'
info:
  label: Retirement Account Balance Lookup
  description: Retrieves a participant's retirement account balance from the PGIM recordkeeping system, returning total balance, vested balance, investment allocations, and last contribution date.
  tags:
  - retirement
  - account
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: get-retirement-balance
      description: Look up a retirement plan participant's account balance.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      call: pgim-rk.get-account
      with:
        participant_id: '{{participant_id}}'
        plan_id: '{{plan_id}}'
      outputParameters:
      - name: total_balance
        type: string
        mapping: $.data.totalBalance
      - name: vested_balance
        type: string
        mapping: $.data.vestedBalance
      - name: allocations
        type: string
        mapping: $.data.investmentAllocations
      - name: last_contribution
        type: string
        mapping: $.data.lastContributionDate
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: accounts
      path: /plans/{{plan_id}}/participants/{{participant_id}}/account
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → retirement-account-balance-lookup.yml

Runs a suitability review for an annuity or investment sale by pulling the client's financial profile from Salesforce, comparing against the product requirements, and logging the suitability determination in the compliance system.

naftiko: '0.5'
info:
  label: Suitability Review Orchestrator
  description: Runs a suitability review for an annuity or investment sale by pulling the client's financial profile from Salesforce, comparing against the product requirements, and logging the suitability determination in the compliance system.
  tags:
  - compliance
  - wealth
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: suitability
    port: 8080
    tools:
    - name: run-suitability-review
      description: Given a client ID and product, evaluate suitability based on financial profile and product requirements.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client contact ID.
      - name: product_code
        in: body
        type: string
        description: The product code being considered.
      - name: investment_amount
        in: body
        type: string
        description: Proposed investment amount.
      steps:
      - name: get-client-profile
        type: call
        call: salesforce.get-financial-profile
        with:
          contact_id: '{{client_id}}'
      - name: get-product-requirements
        type: call
        call: product-catalog.get-suitability-criteria
        with:
          product_code: '{{product_code}}'
      - name: evaluate-suitability
        type: call
        call: compliance-system.evaluate-suitability
        with:
          client_age: '{{get-client-profile.age}}'
          income: '{{get-client-profile.annual_income}}'
          net_worth: '{{get-client-profile.net_worth}}'
          risk_tolerance: '{{get-client-profile.risk_tolerance}}'
          product_code: '{{product_code}}'
          amount: '{{investment_amount}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: profiles
      path: /sobjects/FinancialProfile__c
      inputParameters:
      - name: contact_id
        in: query
      operations:
      - name: get-financial-profile
        method: GET
  - type: http
    namespace: product-catalog
    baseUri: https://api.prudential.com/internal/products/v1
    authentication:
      type: bearer
      token: $secrets.product_catalog_token
    resources:
    - name: suitability
      path: /products/{{product_code}}/suitability
      inputParameters:
      - name: product_code
        in: path
      operations:
      - name: get-suitability-criteria
        method: GET
  - type: http
    namespace: compliance-system
    baseUri: https://api.prudential.com/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: suitability
      path: /suitability-evaluations
      operations:
      - name: evaluate-suitability
        method: POST
Open in Framework → View in Fleet → suitability-review-orchestrator.yml

Orchestrates client net promoter score pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Net Promoter Score Pipeline
  description: Orchestrates client net promoter score pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - prudential
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-net-promoter-score-pipeline
      description: Orchestrates client net promoter score pipeline across financial services and insurance 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: prudential.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: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/client
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-net-promoter-score-pipeline.yml

Orchestrates policy underwriting decision pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Policy Underwriting Decision Pipeline
  description: Orchestrates policy underwriting decision pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - policy
  - prudential-financial
  - jira
  - teams
  - workday
capability:
  exposes:
  - type: mcp
    namespace: policy
    port: 8080
    tools:
    - name: policy-underwriting-decision-pipeline
      description: Orchestrates policy underwriting decision pipeline across financial services and insurance 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: workday.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/policy
      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/policy
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/policy
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → policy-underwriting-decision-pipeline.yml

Runs anti-money laundering and know-your-customer screening on a new client by checking identity against LexisNexis, screening OFAC/sanctions lists, running PEP checks, and logging results in the compliance system.

naftiko: '0.5'
info:
  label: AML/KYC Screening Orchestrator
  description: Runs anti-money laundering and know-your-customer screening on a new client by checking identity against LexisNexis, screening OFAC/sanctions lists, running PEP checks, and logging results in the compliance system.
  tags:
  - compliance
  - aml
  - kyc
  - lexisnexis
capability:
  exposes:
  - type: mcp
    namespace: aml-kyc
    port: 8080
    tools:
    - name: screen-client
      description: Given client details, run AML/KYC screening across identity verification, sanctions, and PEP databases.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Full name of the client.
      - name: date_of_birth
        in: body
        type: string
        description: Date of birth in YYYY-MM-DD format.
      - name: country
        in: body
        type: string
        description: Country of residence ISO code.
      steps:
      - name: verify-identity
        type: call
        call: lexisnexis.verify-identity
        with:
          name: '{{client_name}}'
          dob: '{{date_of_birth}}'
      - name: screen-sanctions
        type: call
        call: sanctions-api.screen
        with:
          name: '{{client_name}}'
          country: '{{country}}'
      - name: check-pep
        type: call
        call: sanctions-api.check-pep
        with:
          name: '{{client_name}}'
          country: '{{country}}'
      - name: log-results
        type: call
        call: compliance-system.create-screening-record
        with:
          client_name: '{{client_name}}'
          identity_verified: '{{verify-identity.verified}}'
          sanctions_hit: '{{screen-sanctions.hit}}'
          pep_status: '{{check-pep.is_pep}}'
  consumes:
  - type: http
    namespace: lexisnexis
    baseUri: https://api.lexisnexis.com/identity/v2
    authentication:
      type: bearer
      token: $secrets.lexisnexis_token
    resources:
    - name: identity
      path: /verifications
      operations:
      - name: verify-identity
        method: POST
  - type: http
    namespace: sanctions-api
    baseUri: https://api.prudential.com/internal/sanctions/v1
    authentication:
      type: bearer
      token: $secrets.sanctions_token
    resources:
    - name: screening
      path: /screen
      operations:
      - name: screen
        method: POST
    - name: pep
      path: /pep-check
      operations:
      - name: check-pep
        method: POST
  - type: http
    namespace: compliance-system
    baseUri: https://api.prudential.com/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: screenings
      path: /screening-records
      operations:
      - name: create-screening-record
        method: POST
Open in Framework → View in Fleet → aml-kyc-screening-orchestrator.yml

Retrieves reinsurance treaty details from the reinsurance management system, returning treaty type, retention limit, ceded percentage, and reinsurer name.

naftiko: '0.5'
info:
  label: Reinsurance Treaty Lookup
  description: Retrieves reinsurance treaty details from the reinsurance management system, returning treaty type, retention limit, ceded percentage, and reinsurer name.
  tags:
  - insurance
  - reinsurance
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: reinsurance
    port: 8080
    tools:
    - name: get-treaty-details
      description: Look up reinsurance treaty details by treaty number.
      inputParameters:
      - name: treaty_number
        in: body
        type: string
        description: The reinsurance treaty number.
      call: reinsurance-system.get-treaty
      with:
        treaty_number: '{{treaty_number}}'
      outputParameters:
      - name: treaty_type
        type: string
        mapping: $.data.treatyType
      - name: retention_limit
        type: string
        mapping: $.data.retentionLimit
      - name: ceded_percentage
        type: string
        mapping: $.data.cededPercentage
      - name: reinsurer
        type: string
        mapping: $.data.reinsurerName
  consumes:
  - type: http
    namespace: reinsurance-system
    baseUri: https://api.prudential.com/internal/reinsurance/v1
    authentication:
      type: bearer
      token: $secrets.reinsurance_token
    resources:
    - name: treaties
      path: /treaties/{{treaty_number}}
      inputParameters:
      - name: treaty_number
        in: path
      operations:
      - name: get-treaty
        method: GET
Open in Framework → View in Fleet → reinsurance-treaty-lookup.yml

Manages group benefits open enrollment by pulling eligible employee census from the employer, sending enrollment invitations via Salesforce Marketing Cloud, and tracking enrollment progress in the group admin system.

naftiko: '0.5'
info:
  label: Group Benefits Open Enrollment Orchestrator
  description: Manages group benefits open enrollment by pulling eligible employee census from the employer, sending enrollment invitations via Salesforce Marketing Cloud, and tracking enrollment progress in the group admin system.
  tags:
  - insurance
  - group-benefits
  - enrollment
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: group-enrollment
    port: 8080
    tools:
    - name: launch-open-enrollment
      description: Given an employer ID and enrollment window, pull eligible employees, send invitations, and track.
      inputParameters:
      - name: employer_id
        in: body
        type: string
        description: The employer group identifier.
      - name: enrollment_start
        in: body
        type: string
        description: Enrollment start date.
      - name: enrollment_end
        in: body
        type: string
        description: Enrollment end date.
      steps:
      - name: get-eligible
        type: call
        call: group-admin.get-eligible-employees
        with:
          employer_id: '{{employer_id}}'
      - name: send-invitations
        type: call
        call: sfmc.send-batch-email
        with:
          template: oe_invitation
          recipients: '{{get-eligible.emails}}'
          merge_start: '{{enrollment_start}}'
          merge_end: '{{enrollment_end}}'
      - name: create-window
        type: call
        call: group-admin.create-enrollment-window
        with:
          employer_id: '{{employer_id}}'
          start: '{{enrollment_start}}'
          end: '{{enrollment_end}}'
          eligible_count: '{{get-eligible.count}}'
  consumes:
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: eligible
      path: /employers/{{employer_id}}/eligible-employees
      inputParameters:
      - name: employer_id
        in: path
      operations:
      - name: get-eligible-employees
        method: GET
    - name: enrollment-windows
      path: /employers/{{employer_id}}/enrollment-windows
      inputParameters:
      - name: employer_id
        in: path
      operations:
      - name: create-enrollment-window
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: batch-emails
      path: /messaging/v1/email/messages/batch
      operations:
      - name: send-batch-email
        method: POST
Open in Framework → View in Fleet → group-benefits-open-enrollment-orchestrator.yml

Retrieves investment fund prospectus lookup data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Investment Fund Prospectus Lookup
  description: Retrieves investment fund prospectus lookup data from the Prudential Financial financial services and insurance systems.
  tags:
  - investment
  - prudential-financial
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-fund-prospectus-lookup
      description: Retrieves investment fund prospectus lookup data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.investment-fund-prospectus-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /investment/fund/prospectus/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: investment-fund-prospectus-lookup
        method: GET
Open in Framework → View in Fleet → investment-fund-prospectus-lookup.yml

Orchestrates policy reinstatement pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Policy Reinstatement Pipeline
  description: Orchestrates policy reinstatement pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - policy
  - prudential-financial
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: policy
    port: 8080
    tools:
    - name: policy-reinstatement-pipeline
      description: Orchestrates policy reinstatement pipeline across financial services and insurance 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://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/policy
      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/policy
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/policy
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → policy-reinstatement-pipeline.yml

Orchestrates annual policy review pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Annual Policy Review Pipeline
  description: Orchestrates annual policy review pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - annual
  - prudential-financial
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: annual
    port: 8080
    tools:
    - name: annual-policy-review-pipeline
      description: Orchestrates annual policy review pipeline across financial services and insurance 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://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/annual
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/annual
      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/annual
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → annual-policy-review-pipeline.yml

Orchestrates group billing reconciliation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Group Billing Reconciliation Pipeline
  description: Orchestrates group billing reconciliation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - group
  - prudential-financial
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: group
    port: 8080
    tools:
    - name: group-billing-reconciliation-pipeline
      description: Orchestrates group billing reconciliation pipeline across financial services and insurance 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://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/group
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/group
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/group
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → group-billing-reconciliation-pipeline.yml

Processes a beneficiary change request by updating the policy record, generating a DocuSign envelope for signature, and sending a confirmation email to the policyholder via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Policy Beneficiary Change Orchestrator
  description: Processes a beneficiary change request by updating the policy record, generating a DocuSign envelope for signature, and sending a confirmation email to the policyholder via Salesforce Marketing Cloud.
  tags:
  - insurance
  - policy
  - docusign
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: policy-changes
    port: 8080
    tools:
    - name: change-beneficiary
      description: Given a policy number and new beneficiary details, update the policy, send DocuSign for signature, and confirm.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: new_beneficiary_name
        in: body
        type: string
        description: Name of the new beneficiary.
      - name: new_beneficiary_relationship
        in: body
        type: string
        description: Relationship to the insured.
      - name: new_beneficiary_percentage
        in: body
        type: string
        description: Beneficiary percentage (0-100).
      steps:
      - name: update-policy
        type: call
        call: policy-admin.update-beneficiary
        with:
          policy_number: '{{policy_number}}'
          name: '{{new_beneficiary_name}}'
          relationship: '{{new_beneficiary_relationship}}'
          percentage: '{{new_beneficiary_percentage}}'
      - name: send-docusign
        type: call
        call: docusign.create-envelope
        with:
          template_id: beneficiary_change
          signer_email: '{{update-policy.insured_email}}'
          signer_name: '{{update-policy.insured_name}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: beneficiary_change_confirmation
          to: '{{update-policy.insured_email}}'
          merge_name: '{{update-policy.insured_name}}'
          merge_beneficiary: '{{new_beneficiary_name}}'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: beneficiaries
      path: /policies/{{policy_number}}/beneficiaries
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: update-beneficiary
        method: PUT
  - type: http
    namespace: docusign
    baseUri: https://na4.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/{{account_id}}/envelopes
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: create-envelope
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → policy-beneficiary-change-orchestrator.yml

Orchestrates client life event trigger pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Life Event Trigger Pipeline
  description: Orchestrates client life event trigger pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-life-event-trigger-pipeline
      description: Orchestrates client life event trigger pipeline across financial services and insurance 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://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/client
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/client
      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/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-life-event-trigger-pipeline.yml

Queries an insurance agent's licensing status from the NIPR licensing database, returning active licenses, states, expiration dates, and lines of authority.

naftiko: '0.5'
info:
  label: Agent Licensing Status Check
  description: Queries an insurance agent's licensing status from the NIPR licensing database, returning active licenses, states, expiration dates, and lines of authority.
  tags:
  - compliance
  - agent
  - nipr
capability:
  exposes:
  - type: mcp
    namespace: agent-licensing
    port: 8080
    tools:
    - name: get-agent-licenses
      description: Look up an agent's licensing status from NIPR.
      inputParameters:
      - name: npn
        in: body
        type: string
        description: The agent's National Producer Number.
      call: nipr.get-producer
      with:
        npn: '{{npn}}'
      outputParameters:
      - name: licenses
        type: string
        mapping: $.data.licenses
      - name: active_states
        type: string
        mapping: $.data.activeStates
  consumes:
  - type: http
    namespace: nipr
    baseUri: https://api.nipr.com/v2
    authentication:
      type: bearer
      token: $secrets.nipr_token
    resources:
    - name: producers
      path: /producers/{{npn}}
      inputParameters:
      - name: npn
        in: path
      operations:
      - name: get-producer
        method: GET
Open in Framework → View in Fleet → agent-licensing-status-check.yml

Processes a life insurance death claim by verifying the policy in the admin system, pulling the death certificate from DocuSign, calculating the benefit payout, notifying the beneficiary via email, and creating the payment in SAP.

naftiko: '0.5'
info:
  label: Death Claim Processing Orchestrator
  description: Processes a life insurance death claim by verifying the policy in the admin system, pulling the death certificate from DocuSign, calculating the benefit payout, notifying the beneficiary via email, and creating the payment in SAP.
  tags:
  - insurance
  - claims
  - docusign
  - sap
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: death-claims
    port: 8080
    tools:
    - name: process-death-claim
      description: Given a policy number and death certificate ID, verify, calculate payout, notify beneficiary, and create payment.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The life insurance policy number.
      - name: death_certificate_envelope_id
        in: body
        type: string
        description: The DocuSign envelope ID containing the death certificate.
      - name: date_of_death
        in: body
        type: string
        description: Date of death in YYYY-MM-DD format.
      steps:
      - name: verify-policy
        type: call
        call: policy-admin.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: get-death-cert
        type: call
        call: docusign.get-envelope
        with:
          envelope_id: '{{death_certificate_envelope_id}}'
      - name: calculate-benefit
        type: call
        call: claims-engine.calculate-death-benefit
        with:
          policy_number: '{{policy_number}}'
          face_amount: '{{verify-policy.faceAmount}}'
          date_of_death: '{{date_of_death}}'
      - name: notify-beneficiary
        type: call
        call: sfmc.send-email
        with:
          template: death_claim_notification
          to: '{{verify-policy.beneficiaryEmail}}'
          merge_name: '{{verify-policy.beneficiaryName}}'
          merge_amount: '{{calculate-benefit.payout_amount}}'
      - name: create-payment
        type: call
        call: sap.create-payment
        with:
          payee: '{{verify-policy.beneficiaryName}}'
          amount: '{{calculate-benefit.payout_amount}}'
          reference: DC-{{policy_number}}
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        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/{{account_id}}/envelopes/{{envelope_id}}
      inputParameters:
      - name: account_id
        in: path
      - name: envelope_id
        in: path
      operations:
      - name: get-envelope
        method: GET
  - type: http
    namespace: claims-engine
    baseUri: https://api.prudential.com/internal/claims/v2
    authentication:
      type: bearer
      token: $secrets.claims_engine_token
    resources:
    - name: calculations
      path: /death-benefit-calculations
      operations:
      - name: calculate-death-benefit
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: sap
    baseUri: https://prudential-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_Payment
      operations:
      - name: create-payment
        method: POST
Open in Framework → View in Fleet → death-claim-processing-orchestrator.yml

Orchestrates retirement plan audit pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Retirement Plan Audit Pipeline
  description: Orchestrates retirement plan audit pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - retirement
  - prudential-financial
  - tableau
  - prudential
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-audit-pipeline
      description: Orchestrates retirement plan audit pipeline across financial services and insurance 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: tableau.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: prudential.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: salesforce.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/retirement
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/retirement
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/retirement
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → retirement-plan-audit-pipeline.yml

Orchestrates regulatory exam preparation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Regulatory Exam Preparation Pipeline
  description: Orchestrates regulatory exam preparation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - regulatory
  - prudential-financial
  - jira
  - teams
  - workday
capability:
  exposes:
  - type: mcp
    namespace: regulatory
    port: 8080
    tools:
    - name: regulatory-exam-preparation-pipeline
      description: Orchestrates regulatory exam preparation pipeline across financial services and insurance 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: workday.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/regulatory
      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/regulatory
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/regulatory
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → regulatory-exam-preparation-pipeline.yml

Retrieves an annuity contract summary from the annuity administration system, returning contract value, guaranteed minimum, surrender charge, income payment amount, and beneficiary.

naftiko: '0.5'
info:
  label: Annuity Contract Summary
  description: Retrieves an annuity contract summary from the annuity administration system, returning contract value, guaranteed minimum, surrender charge, income payment amount, and beneficiary.
  tags:
  - insurance
  - annuity
capability:
  exposes:
  - type: mcp
    namespace: annuity
    port: 8080
    tools:
    - name: get-annuity-contract
      description: Look up an annuity contract by contract number.
      inputParameters:
      - name: contract_number
        in: body
        type: string
        description: The annuity contract number.
      call: annuity-admin.get-contract
      with:
        contract_number: '{{contract_number}}'
      outputParameters:
      - name: contract_value
        type: string
        mapping: $.data.contractValue
      - name: guaranteed_minimum
        type: string
        mapping: $.data.guaranteedMinimum
      - name: surrender_charge
        type: string
        mapping: $.data.surrenderCharge
      - name: income_amount
        type: string
        mapping: $.data.incomePaymentAmount
      - name: beneficiary
        type: string
        mapping: $.data.beneficiaryName
  consumes:
  - type: http
    namespace: annuity-admin
    baseUri: https://api.prudential.com/internal/annuity/v2
    authentication:
      type: bearer
      token: $secrets.annuity_admin_token
    resources:
    - name: contracts
      path: /contracts/{{contract_number}}
      inputParameters:
      - name: contract_number
        in: path
      operations:
      - name: get-contract
        method: GET
Open in Framework → View in Fleet → annuity-contract-summary.yml

Orchestrates retirement plan correction pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Retirement Plan Correction Pipeline
  description: Orchestrates retirement plan correction pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - retirement
  - prudential-financial
  - prudential
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-correction-pipeline
      description: Orchestrates retirement plan correction pipeline across financial services and insurance 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: prudential.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: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/retirement
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/retirement
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/retirement
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → retirement-plan-correction-pipeline.yml

Retrieves a financial advisor's commission and production report from the compensation system, returning total commissions, product mix, and trailing 12-month production.

naftiko: '0.5'
info:
  label: Financial Advisor Commission Report
  description: Retrieves a financial advisor's commission and production report from the compensation system, returning total commissions, product mix, and trailing 12-month production.
  tags:
  - wealth
  - agent
  - compensation
capability:
  exposes:
  - type: mcp
    namespace: advisor-comp
    port: 8080
    tools:
    - name: get-advisor-commissions
      description: Look up advisor commission and production data.
      inputParameters:
      - name: advisor_id
        in: body
        type: string
        description: The advisor identifier.
      - name: period
        in: body
        type: string
        description: Period in YYYY-MM format.
      call: comp-system.get-commissions
      with:
        advisor_id: '{{advisor_id}}'
        period: '{{period}}'
      outputParameters:
      - name: total_commissions
        type: string
        mapping: $.data.totalCommissions
      - name: product_mix
        type: string
        mapping: $.data.productMix
      - name: trailing_12m
        type: string
        mapping: $.data.trailing12MonthProduction
  consumes:
  - type: http
    namespace: comp-system
    baseUri: https://api.prudential.com/internal/compensation/v1
    authentication:
      type: bearer
      token: $secrets.comp_system_token
    resources:
    - name: commissions
      path: /advisors/{{advisor_id}}/commissions
      inputParameters:
      - name: advisor_id
        in: path
      - name: period
        in: query
      operations:
      - name: get-commissions
        method: GET
Open in Framework → View in Fleet → financial-advisor-commission-report.yml

Retrieves long term care benefit summary data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Long Term Care Benefit Summary
  description: Retrieves long term care benefit summary data from the Prudential Financial financial services and insurance systems.
  tags:
  - long
  - prudential-financial
  - summary
capability:
  exposes:
  - type: mcp
    namespace: long
    port: 8080
    tools:
    - name: long-term-care-benefit-summary
      description: Retrieves long term care benefit summary data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.long-term-care-benefit-summary
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /long/term/care/benefit/summary/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: long-term-care-benefit-summary
        method: GET
Open in Framework → View in Fleet → long-term-care-benefit-summary.yml

Creates a client risk profile by pulling their financial data from Salesforce, running a risk tolerance assessment, and storing the profile in the wealth management platform for suitability purposes.

naftiko: '0.5'
info:
  label: Client Risk Profiling Orchestrator
  description: Creates a client risk profile by pulling their financial data from Salesforce, running a risk tolerance assessment, and storing the profile in the wealth management platform for suitability purposes.
  tags:
  - wealth
  - risk
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: risk-profiling
    port: 8080
    tools:
    - name: create-risk-profile
      description: Given a client ID and assessment responses, generate risk profile and store for suitability.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client contact ID.
      - name: risk_responses
        in: body
        type: string
        description: JSON of risk assessment questionnaire responses.
      steps:
      - name: get-financials
        type: call
        call: salesforce.get-financial-profile
        with:
          contact_id: '{{client_id}}'
      - name: assess-risk
        type: call
        call: risk-assessment.evaluate
        with:
          income: '{{get-financials.annual_income}}'
          net_worth: '{{get-financials.net_worth}}'
          responses: '{{risk_responses}}'
      - name: store-profile
        type: call
        call: wealth-platform.save-risk-profile
        with:
          client_id: '{{client_id}}'
          risk_score: '{{assess-risk.score}}'
          risk_category: '{{assess-risk.category}}'
          time_horizon: '{{assess-risk.time_horizon}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: profiles
      path: /sobjects/FinancialProfile__c
      inputParameters:
      - name: contact_id
        in: query
      operations:
      - name: get-financial-profile
        method: GET
  - type: http
    namespace: risk-assessment
    baseUri: https://api.prudential.com/internal/risk-assessment/v1
    authentication:
      type: bearer
      token: $secrets.risk_assessment_token
    resources:
    - name: evaluations
      path: /evaluations
      operations:
      - name: evaluate
        method: POST
  - type: http
    namespace: wealth-platform
    baseUri: https://api.prudential.com/internal/wealth/v2
    authentication:
      type: bearer
      token: $secrets.wealth_platform_token
    resources:
    - name: risk-profiles
      path: /clients/{{client_id}}/risk-profile
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: save-risk-profile
        method: PUT
Open in Framework → View in Fleet → client-risk-profiling-orchestrator.yml

Calculates a pension benefit estimate for a plan participant based on years of service, final average salary, and benefit formula.

naftiko: '0.5'
info:
  label: Pension Benefit Calculation
  description: Calculates a pension benefit estimate for a plan participant based on years of service, final average salary, and benefit formula.
  tags:
  - retirement
  - pension
capability:
  exposes:
  - type: mcp
    namespace: pension
    port: 8080
    tools:
    - name: calculate-pension-benefit
      description: Calculate estimated pension benefit for a participant.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: plan_id
        in: body
        type: string
        description: The pension plan identifier.
      - name: retirement_date
        in: body
        type: string
        description: Projected retirement date.
      call: pension-system.calculate-benefit
      with:
        participant_id: '{{participant_id}}'
        plan_id: '{{plan_id}}'
        retirement_date: '{{retirement_date}}'
      outputParameters:
      - name: monthly_benefit
        type: string
        mapping: $.data.monthlyBenefit
      - name: years_of_service
        type: string
        mapping: $.data.yearsOfService
      - name: final_avg_salary
        type: string
        mapping: $.data.finalAverageSalary
  consumes:
  - type: http
    namespace: pension-system
    baseUri: https://api.prudential.com/internal/pension/v2
    authentication:
      type: bearer
      token: $secrets.pension_token
    resources:
    - name: calculations
      path: /benefit-calculations
      operations:
      - name: calculate-benefit
        method: POST
Open in Framework → View in Fleet → pension-benefit-calculation.yml

Orchestrates investment fund launch pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Investment Fund Launch Pipeline
  description: Orchestrates investment fund launch pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - investment
  - prudential-financial
  - jira
  - teams
  - workday
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-fund-launch-pipeline
      description: Orchestrates investment fund launch pipeline across financial services and insurance 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: workday.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://prudential.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/investment
      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/investment
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/investment
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → investment-fund-launch-pipeline.yml

Launches a workplace wellness program by creating the program in the wellness platform, enrolling eligible employees from the group admin system, and sending program invitations via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Workplace Benefits Wellness Program Orchestrator
  description: Launches a workplace wellness program by creating the program in the wellness platform, enrolling eligible employees from the group admin system, and sending program invitations via Salesforce Marketing Cloud.
  tags:
  - group-benefits
  - wellness
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: wellness
    port: 8080
    tools:
    - name: launch-wellness-program
      description: Given an employer ID and program details, create the program, enroll employees, and send invitations.
      inputParameters:
      - name: employer_id
        in: body
        type: string
        description: The employer group identifier.
      - name: program_type
        in: body
        type: string
        description: Program type (biometric_screening, fitness_challenge, mental_health).
      steps:
      - name: create-program
        type: call
        call: wellness-platform.create-program
        with:
          employer_id: '{{employer_id}}'
          type: '{{program_type}}'
      - name: get-eligible
        type: call
        call: group-admin.get-active-census
        with:
          employer_id: '{{employer_id}}'
      - name: send-invitations
        type: call
        call: sfmc.send-batch-email
        with:
          template: wellness_invitation
          recipients: '{{get-eligible.emails}}'
          merge_program: '{{program_type}}'
  consumes:
  - type: http
    namespace: wellness-platform
    baseUri: https://api.prudential.com/internal/wellness/v1
    authentication:
      type: bearer
      token: $secrets.wellness_token
    resources:
    - name: programs
      path: /programs
      operations:
      - name: create-program
        method: POST
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: census
      path: /employers/{{employer_id}}/active-census
      inputParameters:
      - name: employer_id
        in: path
      operations:
      - name: get-active-census
        method: GET
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: batch-emails
      path: /messaging/v1/email/messages/batch
      operations:
      - name: send-batch-email
        method: POST
Open in Framework → View in Fleet → workplace-benefits-wellness-program-orchestrator.yml

Creates an IT support incident in ServiceNow for Prudential employees, covering system access issues, application errors, and hardware requests.

naftiko: '0.5'
info:
  label: IT Incident Ticket Creation
  description: Creates an IT support incident in ServiceNow for Prudential employees, covering system access issues, application errors, and hardware requests.
  tags:
  - it-support
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: create-it-incident
      description: Submit an IT support incident to ServiceNow.
      inputParameters:
      - name: category
        in: body
        type: string
        description: IT category (access, application, hardware, network).
      - name: description
        in: body
        type: string
        description: Description of the issue.
      - name: priority
        in: body
        type: string
        description: Priority (low, medium, high, critical).
      call: servicenow.create-incident
      with:
        category: '{{category}}'
        short_description: 'IT Support: {{category}}'
        description: '{{description}}'
        priority: '{{priority}}'
      outputParameters:
      - name: incident_number
        type: string
        mapping: $.result.number
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → it-incident-ticket-creation.yml

Calculates projected income payments for an annuity contract based on current value, payout option, and start age, returning monthly income, guaranteed period, and total projected payout.

naftiko: '0.5'
info:
  label: Annuity Income Projection
  description: Calculates projected income payments for an annuity contract based on current value, payout option, and start age, returning monthly income, guaranteed period, and total projected payout.
  tags:
  - insurance
  - annuity
  - retirement
capability:
  exposes:
  - type: mcp
    namespace: annuity-projections
    port: 8080
    tools:
    - name: project-annuity-income
      description: Calculate projected income from an annuity contract.
      inputParameters:
      - name: contract_number
        in: body
        type: string
        description: The annuity contract number.
      - name: payout_option
        in: body
        type: string
        description: Payout option (life_only, life_with_period_certain, joint_survivor).
      - name: income_start_age
        in: body
        type: string
        description: Age at which income payments begin.
      call: annuity-admin.project-income
      with:
        contract_number: '{{contract_number}}'
        payout_option: '{{payout_option}}'
        start_age: '{{income_start_age}}'
      outputParameters:
      - name: monthly_income
        type: string
        mapping: $.data.monthlyIncome
      - name: guaranteed_period
        type: string
        mapping: $.data.guaranteedPeriodYears
      - name: total_projected_payout
        type: string
        mapping: $.data.totalProjectedPayout
  consumes:
  - type: http
    namespace: annuity-admin
    baseUri: https://api.prudential.com/internal/annuity/v2
    authentication:
      type: bearer
      token: $secrets.annuity_admin_token
    resources:
    - name: projections
      path: /contracts/{{contract_number}}/projections
      inputParameters:
      - name: contract_number
        in: path
      operations:
      - name: project-income
        method: POST
Open in Framework → View in Fleet → annuity-income-projection.yml

Retrieves policy dividend history data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Policy Dividend History
  description: Retrieves policy dividend history data from the Prudential Financial financial services and insurance systems.
  tags:
  - policy
  - prudential-financial
  - history
capability:
  exposes:
  - type: mcp
    namespace: policy
    port: 8080
    tools:
    - name: policy-dividend-history
      description: Retrieves policy dividend history data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.policy-dividend-history
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /policy/dividend/history/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: policy-dividend-history
        method: GET
Open in Framework → View in Fleet → policy-dividend-history.yml

Compiles a client wealth review by pulling investment positions from Charles River IMS, account balances from the custodian API, and client profile from Salesforce Financial Services Cloud, then shares the consolidated view via Box.

naftiko: '0.5'
info:
  label: Wealth Management Account Review Orchestrator
  description: Compiles a client wealth review by pulling investment positions from Charles River IMS, account balances from the custodian API, and client profile from Salesforce Financial Services Cloud, then shares the consolidated view via Box.
  tags:
  - wealth
  - investment
  - charles-river
  - salesforce
  - box
capability:
  exposes:
  - type: mcp
    namespace: wealth-review
    port: 8080
    tools:
    - name: generate-wealth-review
      description: Given a client ID, compile investment positions, balances, and profile data, then upload the review to Box.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client account ID.
      - name: as_of_date
        in: body
        type: string
        description: Review date in YYYY-MM-DD format.
      steps:
      - name: get-positions
        type: call
        call: charles-river.get-positions
        with:
          account_id: '{{client_id}}'
          as_of: '{{as_of_date}}'
      - name: get-balances
        type: call
        call: custodian.get-account-balance
        with:
          account_id: '{{client_id}}'
      - name: get-client-profile
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{client_id}}'
      - name: upload-review
        type: call
        call: box.upload-file
        with:
          folder_id: client_reviews
          file_name: WealthReview_{{client_id}}_{{as_of_date}}.pdf
          content: 'Client: {{get-client-profile.Name}}, Total AUM: ${{get-balances.total_value}}, Positions: {{get-positions.count}}'
  consumes:
  - type: http
    namespace: charles-river
    baseUri: https://crd.prudential.com/api/v2
    authentication:
      type: bearer
      token: $secrets.charles_river_token
    resources:
    - name: positions
      path: /accounts/{{account_id}}/positions
      inputParameters:
      - name: account_id
        in: path
      - name: as_of
        in: query
      operations:
      - name: get-positions
        method: GET
  - type: http
    namespace: custodian
    baseUri: https://api.prudential.com/internal/custody/v1
    authentication:
      type: bearer
      token: $secrets.custodian_token
    resources:
    - name: balances
      path: /accounts/{{account_id}}/balance
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account-balance
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: box
    baseUri: https://upload.box.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → wealth-management-account-review-orchestrator.yml

Processes a new life insurance application by running underwriting through the automated UW engine, ordering medical records from ExamOne, pulling MIB data, and creating the case in Salesforce for the agent.

naftiko: '0.5'
info:
  label: New Life Insurance Application Orchestrator
  description: Processes a new life insurance application by running underwriting through the automated UW engine, ordering medical records from ExamOne, pulling MIB data, and creating the case in Salesforce for the agent.
  tags:
  - insurance
  - underwriting
  - examone
  - mib
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: life-underwriting
    port: 8080
    tools:
    - name: process-life-application
      description: Given applicant details, run automated UW, order med records, pull MIB, and create Salesforce case.
      inputParameters:
      - name: applicant_name
        in: body
        type: string
        description: Full name of the applicant.
      - name: date_of_birth
        in: body
        type: string
        description: Date of birth in YYYY-MM-DD format.
      - name: face_amount
        in: body
        type: string
        description: Requested face amount.
      - name: agent_id
        in: body
        type: string
        description: The producing agent's Salesforce ID.
      steps:
      - name: run-auto-uw
        type: call
        call: uw-engine.evaluate-application
        with:
          applicant_name: '{{applicant_name}}'
          dob: '{{date_of_birth}}'
          face_amount: '{{face_amount}}'
      - name: order-exam
        type: call
        call: examone.order-exam
        with:
          applicant_name: '{{applicant_name}}'
          dob: '{{date_of_birth}}'
          exam_type: '{{run-auto-uw.required_exam}}'
      - name: pull-mib
        type: call
        call: mib.check-codes
        with:
          applicant_name: '{{applicant_name}}'
          dob: '{{date_of_birth}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Life app: {{applicant_name}} - ${{face_amount}}'
          description: 'Auto-UW decision: {{run-auto-uw.decision}}. Exam ordered: {{order-exam.order_id}}. MIB codes: {{pull-mib.codes}}.'
          owner_id: '{{agent_id}}'
  consumes:
  - type: http
    namespace: uw-engine
    baseUri: https://api.prudential.com/internal/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.uw_engine_token
    resources:
    - name: evaluations
      path: /evaluations
      operations:
      - name: evaluate-application
        method: POST
  - type: http
    namespace: examone
    baseUri: https://api.examone.com/v1
    authentication:
      type: bearer
      token: $secrets.examone_token
    resources:
    - name: exams
      path: /orders
      operations:
      - name: order-exam
        method: POST
  - type: http
    namespace: mib
    baseUri: https://api.mib.com/v1
    authentication:
      type: bearer
      token: $secrets.mib_token
    resources:
    - name: codes
      path: /code-checks
      operations:
      - name: check-codes
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → new-life-insurance-application-orchestrator.yml

Orchestrates client onboarding suitability pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Onboarding Suitability Pipeline
  description: Orchestrates client onboarding suitability pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - teams
  - workday
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-onboarding-suitability-pipeline
      description: Orchestrates client onboarding suitability pipeline across financial services and insurance 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: workday.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/client
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-resource
      path: /api/client
      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/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-onboarding-suitability-pipeline.yml

Checks the payment status of a vendor invoice in SAP, returning payment date, amount, payment method, and clearing document number.

naftiko: '0.5'
info:
  label: SAP Vendor Payment Status
  description: Checks the payment status of a vendor invoice in SAP, returning payment date, amount, payment method, and clearing document number.
  tags:
  - finance
  - sap
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-vendor-payment-status
      description: Look up vendor payment status from SAP.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP vendor invoice document number.
      call: sap.get-payment-status
      with:
        document_number: '{{invoice_number}}'
      outputParameters:
      - name: payment_date
        type: string
        mapping: $.d.PaymentDate
      - name: amount
        type: string
        mapping: $.d.Amount
      - name: payment_method
        type: string
        mapping: $.d.PaymentMethod
      - name: clearing_doc
        type: string
        mapping: $.d.ClearingDocument
  consumes:
  - type: http
    namespace: sap
    baseUri: https://prudential-s4.sap.com/sap/opu/odata/sap/FI_AP_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: payments
      path: /A_VendorPayment('{{document_number}}')
      inputParameters:
      - name: document_number
        in: path
      operations:
      - name: get-payment-status
        method: GET
Open in Framework → View in Fleet → sap-vendor-payment-status.yml

Orchestrates retirement enrollment orchestrator across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Retirement Enrollment Orchestrator
  description: Orchestrates retirement enrollment orchestrator across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - retirement
  - prudential-financial
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-enrollment-orchestrator
      description: Orchestrates retirement enrollment orchestrator across financial services and insurance 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://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/retirement
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/retirement
      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/retirement
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → retirement-enrollment-orchestrator.yml

Retrieves universal life cash value lookup data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Universal Life Cash Value Lookup
  description: Retrieves universal life cash value lookup data from the Prudential Financial financial services and insurance systems.
  tags:
  - universal
  - prudential-financial
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: universal
    port: 8080
    tools:
    - name: universal-life-cash-value-lookup
      description: Retrieves universal life cash value lookup data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.universal-life-cash-value-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /universal/life/cash/value/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: universal-life-cash-value-lookup
        method: GET
Open in Framework → View in Fleet → universal-life-cash-value-lookup.yml

Processes a life insurance premium payment through the billing system, accepting payment details and returning confirmation and updated account status.

naftiko: '0.5'
info:
  label: Premium Payment Processing
  description: Processes a life insurance premium payment through the billing system, accepting payment details and returning confirmation and updated account status.
  tags:
  - insurance
  - billing
capability:
  exposes:
  - type: mcp
    namespace: premium-billing
    port: 8080
    tools:
    - name: process-premium-payment
      description: Process a premium payment for a life insurance policy.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The policy number.
      - name: amount
        in: body
        type: string
        description: Payment amount.
      - name: payment_method
        in: body
        type: string
        description: Payment method (ach, credit_card, check).
      call: billing-system.process-payment
      with:
        policy: '{{policy_number}}'
        amount: '{{amount}}'
        method: '{{payment_method}}'
      outputParameters:
      - name: confirmation
        type: string
        mapping: $.data.confirmationNumber
      - name: next_due_date
        type: string
        mapping: $.data.nextPremiumDueDate
  consumes:
  - type: http
    namespace: billing-system
    baseUri: https://api.prudential.com/internal/billing/v2
    authentication:
      type: bearer
      token: $secrets.billing_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: process-payment
        method: POST
Open in Framework → View in Fleet → premium-payment-processing.yml

Orchestrates investment performance reporting pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Investment Performance Reporting Pipeline
  description: Orchestrates investment performance reporting pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - investment
  - prudential-financial
  - bloomberg
  - tableau
  - prudential
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-performance-reporting-pipeline
      description: Orchestrates investment performance reporting pipeline across financial services and insurance 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: tableau.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: prudential.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: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/investment
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/investment
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → investment-performance-reporting-pipeline.yml

Orchestrates regulatory filing automation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Regulatory Filing Automation Pipeline
  description: Orchestrates regulatory filing automation pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - regulatory
  - prudential-financial
  - workday
  - bloomberg
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: regulatory
    port: 8080
    tools:
    - name: regulatory-filing-automation-pipeline
      description: Orchestrates regulatory filing automation pipeline across financial services and insurance 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: workday.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: tableau.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl.workday.com/prudential/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workday-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: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/regulatory
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → regulatory-filing-automation-pipeline.yml

Retrieves investment account holdings lookup data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Investment Account Holdings Lookup
  description: Retrieves investment account holdings lookup data from the Prudential Financial financial services and insurance systems.
  tags:
  - investment
  - prudential-financial
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: investment
    port: 8080
    tools:
    - name: investment-account-holdings-lookup
      description: Retrieves investment account holdings lookup data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.investment-account-holdings-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /investment/account/holdings/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: investment-account-holdings-lookup
        method: GET
Open in Framework → View in Fleet → investment-account-holdings-lookup.yml

Orchestrates client complaint resolution pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Complaint Resolution Pipeline
  description: Orchestrates client complaint resolution pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-complaint-resolution-pipeline
      description: Orchestrates client complaint resolution pipeline across financial services and insurance 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://prudential.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-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/client
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://prudential.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-complaint-resolution-pipeline.yml

Orchestrates client financial planning pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Client Financial Planning Pipeline
  description: Orchestrates client financial planning pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - client
  - prudential-financial
  - prudential
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: client
    port: 8080
    tools:
    - name: client-financial-planning-pipeline
      description: Orchestrates client financial planning pipeline across financial services and insurance 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: prudential.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: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/client
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://prudential.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/client
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → client-financial-planning-pipeline.yml

Retrieves beneficiary verification status data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Beneficiary Verification Status
  description: Retrieves beneficiary verification status data from the Prudential Financial financial services and insurance systems.
  tags:
  - beneficiary
  - prudential-financial
  - status
capability:
  exposes:
  - type: mcp
    namespace: beneficiary
    port: 8080
    tools:
    - name: beneficiary-verification-status
      description: Retrieves beneficiary verification status data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.beneficiary-verification-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /beneficiary/verification/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: beneficiary-verification-status
        method: GET
Open in Framework → View in Fleet → beneficiary-verification-status.yml

Retrieves retirement plan vesting schedule data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Retirement Plan Vesting Schedule
  description: Retrieves retirement plan vesting schedule data from the Prudential Financial financial services and insurance systems.
  tags:
  - retirement
  - prudential-financial
  - schedule
capability:
  exposes:
  - type: mcp
    namespace: retirement
    port: 8080
    tools:
    - name: retirement-plan-vesting-schedule
      description: Retrieves retirement plan vesting schedule data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.retirement-plan-vesting-schedule
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /retirement/plan/vesting/schedule/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: retirement-plan-vesting-schedule
        method: GET
Open in Framework → View in Fleet → retirement-plan-vesting-schedule.yml

Processes a retirement plan distribution request by verifying the participant's eligibility, calculating tax withholding, creating the payment in the recordkeeping system, and sending a confirmation via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Retirement Plan Distribution Orchestrator
  description: Processes a retirement plan distribution request by verifying the participant's eligibility, calculating tax withholding, creating the payment in the recordkeeping system, and sending a confirmation via Salesforce Marketing Cloud.
  tags:
  - retirement
  - distribution
  - pgim
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: retirement-distributions
    port: 8080
    tools:
    - name: process-distribution
      description: Given a participant ID, plan ID, and distribution amount, verify eligibility, calculate taxes, process payment, and send confirmation.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      - name: distribution_amount
        in: body
        type: string
        description: The requested distribution amount.
      - name: distribution_type
        in: body
        type: string
        description: Type of distribution (hardship, retirement, rollover, rmd).
      steps:
      - name: verify-eligibility
        type: call
        call: pgim-rk.check-eligibility
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{plan_id}}'
          type: '{{distribution_type}}'
      - name: calculate-taxes
        type: call
        call: tax-engine.calculate-withholding
        with:
          amount: '{{distribution_amount}}'
          type: '{{distribution_type}}'
          participant_state: '{{verify-eligibility.state}}'
      - name: process-payment
        type: call
        call: pgim-rk.create-distribution
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{plan_id}}'
          gross_amount: '{{distribution_amount}}'
          federal_withholding: '{{calculate-taxes.federal}}'
          state_withholding: '{{calculate-taxes.state}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: distribution_confirmation
          to: '{{verify-eligibility.email}}'
          merge_amount: '{{distribution_amount}}'
          merge_net: '{{process-payment.net_amount}}'
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: eligibility
      path: /plans/{{plan_id}}/participants/{{participant_id}}/eligibility
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: check-eligibility
        method: GET
    - name: distributions
      path: /plans/{{plan_id}}/participants/{{participant_id}}/distributions
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: create-distribution
        method: POST
  - type: http
    namespace: tax-engine
    baseUri: https://api.prudential.com/internal/tax/v1
    authentication:
      type: bearer
      token: $secrets.tax_engine_token
    resources:
    - name: withholding
      path: /withholding-calculations
      operations:
      - name: calculate-withholding
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → retirement-plan-distribution-orchestrator.yml

Retrieves the status of a long-term care insurance claim, returning claim state, benefit period remaining, daily benefit amount, and care provider.

naftiko: '0.5'
info:
  label: Long-Term Care Claim Status
  description: Retrieves the status of a long-term care insurance claim, returning claim state, benefit period remaining, daily benefit amount, and care provider.
  tags:
  - insurance
  - claims
  - long-term-care
capability:
  exposes:
  - type: mcp
    namespace: ltc-claims
    port: 8080
    tools:
    - name: get-ltc-claim
      description: Look up a long-term care claim by claim number.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The LTC claim number.
      call: ltc-system.get-claim
      with:
        claim_number: '{{claim_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.claimStatus
      - name: benefit_remaining
        type: string
        mapping: $.data.benefitPeriodRemaining
      - name: daily_benefit
        type: string
        mapping: $.data.dailyBenefitAmount
      - name: care_provider
        type: string
        mapping: $.data.careProviderName
  consumes:
  - type: http
    namespace: ltc-system
    baseUri: https://api.prudential.com/internal/ltc/v2
    authentication:
      type: bearer
      token: $secrets.ltc_token
    resources:
    - name: claims
      path: /claims/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim
        method: GET
Open in Framework → View in Fleet → long-term-care-claim-status.yml

Orchestrates annuity contract servicing pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Annuity Contract Servicing Pipeline
  description: Orchestrates annuity contract servicing pipeline across financial services and insurance systems, coordinating multiple services and notifying stakeholders.
  tags:
  - annuity
  - prudential-financial
  - tableau
  - prudential
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: annuity
    port: 8080
    tools:
    - name: annuity-contract-servicing-pipeline
      description: Orchestrates annuity contract servicing pipeline across financial services and insurance 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: tableau.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: prudential.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: salesforce.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.prudential.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: tableau-resource
      path: /api/annuity
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: prudential-resource
      path: /api/annuity
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/annuity
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → annuity-contract-servicing-pipeline.yml

Converts a term life policy to a permanent policy by pulling the existing term details, generating a conversion offer, creating the new policy, and sending the conversion documents via DocuSign.

naftiko: '0.5'
info:
  label: Term Life Conversion Orchestrator
  description: Converts a term life policy to a permanent policy by pulling the existing term details, generating a conversion offer, creating the new policy, and sending the conversion documents via DocuSign.
  tags:
  - insurance
  - policy
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: policy-conversion
    port: 8080
    tools:
    - name: convert-term-to-perm
      description: Given a term policy number, generate conversion offer, create permanent policy, and send docs for signature.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The term life policy number.
      - name: target_product
        in: body
        type: string
        description: Target permanent product (whole_life, universal_life, variable_life).
      steps:
      - name: get-term-policy
        type: call
        call: policy-admin.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: generate-offer
        type: call
        call: uw-engine.generate-conversion-offer
        with:
          policy_number: '{{policy_number}}'
          target: '{{target_product}}'
          face_amount: '{{get-term-policy.faceAmount}}'
      - name: send-docs
        type: call
        call: docusign.create-envelope
        with:
          template_id: term_conversion
          signer_email: '{{get-term-policy.insuredEmail}}'
          signer_name: '{{get-term-policy.insuredName}}'
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
  - type: http
    namespace: uw-engine
    baseUri: https://api.prudential.com/internal/underwriting/v2
    authentication:
      type: bearer
      token: $secrets.uw_engine_token
    resources:
    - name: conversions
      path: /conversion-offers
      operations:
      - name: generate-conversion-offer
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://na4.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/{{account_id}}/envelopes
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: create-envelope
        method: POST
Open in Framework → View in Fleet → term-life-conversion-orchestrator.yml

Retrieves a life insurance policy from the policy administration system by policy number, returning policyholder name, face amount, premium, cash value, and policy status.

naftiko: '0.5'
info:
  label: Life Insurance Policy Lookup
  description: Retrieves a life insurance policy from the policy administration system by policy number, returning policyholder name, face amount, premium, cash value, and policy status.
  tags:
  - insurance
  - policy
  - life-insurance
capability:
  exposes:
  - type: mcp
    namespace: life-policy
    port: 8080
    tools:
    - name: get-life-policy
      description: Look up a life insurance policy by policy number.
      inputParameters:
      - name: policy_number
        in: body
        type: string
        description: The life insurance policy number.
      call: policy-admin.get-policy
      with:
        policy_number: '{{policy_number}}'
      outputParameters:
      - name: policyholder
        type: string
        mapping: $.data.insuredName
      - name: face_amount
        type: string
        mapping: $.data.faceAmount
      - name: premium
        type: string
        mapping: $.data.annualPremium
      - name: cash_value
        type: string
        mapping: $.data.cashValue
      - name: status
        type: string
        mapping: $.data.policyStatus
  consumes:
  - type: http
    namespace: policy-admin
    baseUri: https://api.prudential.com/internal/policy-admin/v2
    authentication:
      type: bearer
      token: $secrets.policy_admin_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
Open in Framework → View in Fleet → life-insurance-policy-lookup.yml

Processes a 401(k) plan loan by checking loan eligibility and maximum, creating the loan in the recordkeeping system, and sending confirmation to the participant.

naftiko: '0.5'
info:
  label: Retirement Plan Loan Processing
  description: Processes a 401(k) plan loan by checking loan eligibility and maximum, creating the loan in the recordkeeping system, and sending confirmation to the participant.
  tags:
  - retirement
  - loans
  - pgim
capability:
  exposes:
  - type: mcp
    namespace: retirement-loans
    port: 8080
    tools:
    - name: process-plan-loan
      description: Given participant and loan details, check eligibility, create loan, and confirm.
      inputParameters:
      - name: participant_id
        in: body
        type: string
        description: The participant identifier.
      - name: plan_id
        in: body
        type: string
        description: The retirement plan identifier.
      - name: loan_amount
        in: body
        type: string
        description: Requested loan amount.
      steps:
      - name: check-eligibility
        type: call
        call: pgim-rk.check-loan-eligibility
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{plan_id}}'
      - name: create-loan
        type: call
        call: pgim-rk.create-plan-loan
        with:
          participant_id: '{{participant_id}}'
          plan_id: '{{plan_id}}'
          amount: '{{loan_amount}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: plan_loan_confirmation
          to: '{{check-eligibility.email}}'
          merge_amount: '{{loan_amount}}'
          merge_rate: '{{create-loan.interest_rate}}'
  consumes:
  - type: http
    namespace: pgim-rk
    baseUri: https://api.prudential.com/internal/retirement/v2
    authentication:
      type: bearer
      token: $secrets.pgim_rk_token
    resources:
    - name: loan-eligibility
      path: /plans/{{plan_id}}/participants/{{participant_id}}/loan-eligibility
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: check-loan-eligibility
        method: GET
    - name: loans
      path: /plans/{{plan_id}}/participants/{{participant_id}}/loans
      inputParameters:
      - name: plan_id
        in: path
      - name: participant_id
        in: path
      operations:
      - name: create-plan-loan
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.prudential.com/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → retirement-plan-loan-processing.yml

Retrieves policyholder service history data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Policyholder Service History
  description: Retrieves policyholder service history data from the Prudential Financial financial services and insurance systems.
  tags:
  - policyholder
  - prudential-financial
  - history
capability:
  exposes:
  - type: mcp
    namespace: policyholder
    port: 8080
    tools:
    - name: policyholder-service-history
      description: Retrieves policyholder service history data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.policyholder-service-history
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /policyholder/service/history/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: policyholder-service-history
        method: GET
Open in Framework → View in Fleet → policyholder-service-history.yml

Retrieves annuity withdrawal schedule data from the Prudential Financial financial services and insurance systems.

naftiko: '0.5'
info:
  label: Annuity Withdrawal Schedule
  description: Retrieves annuity withdrawal schedule data from the Prudential Financial financial services and insurance systems.
  tags:
  - annuity
  - prudential-financial
  - schedule
capability:
  exposes:
  - type: mcp
    namespace: annuity
    port: 8080
    tools:
    - name: annuity-withdrawal-schedule
      description: Retrieves annuity withdrawal schedule data from the Prudential Financial financial services and insurance systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: prudential.annuity-withdrawal-schedule
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: prudential
    baseUri: https://api.prudential.com/v2
    authentication:
      type: bearer
      token: $secrets.prudential_api_token
    resources:
    - name: resource
      path: /annuity/withdrawal/schedule/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: annuity-withdrawal-schedule
        method: GET
Open in Framework → View in Fleet → annuity-withdrawal-schedule.yml

Generates monthly group life insurance premium billing by pulling census data from the employer feed, calculating premiums by age band, creating an invoice in SAP, and sending the bill to the employer via Salesforce.

naftiko: '0.5'
info:
  label: Group Life Premium Billing Orchestrator
  description: Generates monthly group life insurance premium billing by pulling census data from the employer feed, calculating premiums by age band, creating an invoice in SAP, and sending the bill to the employer via Salesforce.
  tags:
  - insurance
  - billing
  - group-benefits
  - sap
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: group-billing
    port: 8080
    tools:
    - name: generate-group-billing
      description: Given an employer ID and billing month, calculate premiums and generate the invoice.
      inputParameters:
      - name: employer_id
        in: body
        type: string
        description: The employer group identifier.
      - name: billing_month
        in: body
        type: string
        description: Billing month in YYYY-MM format.
      steps:
      - name: get-census
        type: call
        call: group-admin.get-active-census
        with:
          employer_id: '{{employer_id}}'
      - name: calculate-premium
        type: call
        call: rating-engine.calculate-group-premium
        with:
          employer_id: '{{employer_id}}'
          census: '{{get-census.employees}}'
          month: '{{billing_month}}'
      - name: create-invoice
        type: call
        call: sap.create-invoice
        with:
          customer: '{{employer_id}}'
          amount: '{{calculate-premium.total_premium}}'
          period: '{{billing_month}}'
      - name: send-bill
        type: call
        call: salesforce.create-task
        with:
          subject: 'Group life premium bill: {{employer_id}} for {{billing_month}}'
          description: 'Total premium: ${{calculate-premium.total_premium}}. Lives: {{get-census.count}}. Invoice: {{create-invoice.invoice_number}}.'
  consumes:
  - type: http
    namespace: group-admin
    baseUri: https://api.prudential.com/internal/group-admin/v2
    authentication:
      type: bearer
      token: $secrets.group_admin_token
    resources:
    - name: census
      path: /employers/{{employer_id}}/active-census
      inputParameters:
      - name: employer_id
        in: path
      operations:
      - name: get-active-census
        method: GET
  - type: http
    namespace: rating-engine
    baseUri: https://api.prudential.com/internal/rating/v1
    authentication:
      type: bearer
      token: $secrets.rating_engine_token
    resources:
    - name: group-premium
      path: /group-premium-calculations
      operations:
      - name: calculate-group-premium
        method: POST
  - type: http
    namespace: sap
    baseUri: https://prudential-s4.sap.com/sap/opu/odata/sap/SD_BILLING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: invoices
      path: /A_BillingDocument
      operations:
      - name: create-invoice
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://prudential.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
Open in Framework → View in Fleet → group-life-premium-billing-orchestrator.yml

Queries the status of an insurance regulatory filing from the compliance tracking system, returning filing type, state, status, submission date, and approval date.

naftiko: '0.5'
info:
  label: Regulatory Filing Status Check
  description: Queries the status of an insurance regulatory filing from the compliance tracking system, returning filing type, state, status, submission date, and approval date.
  tags:
  - compliance
  - regulatory
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: get-filing-status
      description: Check the status of a regulatory filing.
      inputParameters:
      - name: filing_id
        in: body
        type: string
        description: The regulatory filing identifier.
      call: compliance-system.get-filing
      with:
        filing_id: '{{filing_id}}'
      outputParameters:
      - name: filing_type
        type: string
        mapping: $.data.filingType
      - name: state
        type: string
        mapping: $.data.state
      - name: status
        type: string
        mapping: $.data.status
      - name: submission_date
        type: string
        mapping: $.data.submissionDate
      - name: approval_date
        type: string
        mapping: $.data.approvalDate
  consumes:
  - type: http
    namespace: compliance-system
    baseUri: https://api.prudential.com/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: filings
      path: /filings/{{filing_id}}
      inputParameters:
      - name: filing_id
        in: path
      operations:
      - name: get-filing
        method: GET
Open in Framework → View in Fleet → regulatory-filing-status-check.yml

Orchestrates farm sustainability assessment pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Farm Sustainability Assessment Pipeline
  description: Orchestrates farm sustainability assessment pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - farm
  - rabobank
  - jira
  - teams
  - sap
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-sustainability-assessment-pipeline
      description: Orchestrates farm sustainability assessment pipeline across agricultural 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: sap.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/farm
      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/farm
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/farm
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → farm-sustainability-assessment-pipeline.yml

Integrates precision agriculture data by pulling soil sensor readings from the farm IoT platform, weather data from KNMI, and combining them with the farmer's financial profile to update the lending risk assessment.

naftiko: '0.5'
info:
  label: Precision Agriculture Data Integration Orchestrator
  description: Integrates precision agriculture data by pulling soil sensor readings from the farm IoT platform, weather data from KNMI, and combining them with the farmer's financial profile to update the lending risk assessment.
  tags:
  - agricultural-lending
  - iot
  - knmi
  - risk
capability:
  exposes:
  - type: mcp
    namespace: precision-ag
    port: 8080
    tools:
    - name: integrate-precision-ag-data
      description: Given a farmer ID, pull IoT sensor data, weather data, and update risk assessment.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer identifier.
      - name: farm_id
        in: body
        type: string
        description: The farm/field identifier.
      steps:
      - name: get-sensor-data
        type: call
        call: iot-platform.get-soil-readings
        with:
          farm_id: '{{farm_id}}'
      - name: get-weather
        type: call
        call: knmi.get-forecast
        with:
          region: '{{get-sensor-data.region}}'
          period: next_30_days
      - name: update-risk
        type: call
        call: credit-risk-engine.update-agri-risk
        with:
          farmer_id: '{{farmer_id}}'
          soil_moisture: '{{get-sensor-data.soil_moisture}}'
          soil_ph: '{{get-sensor-data.soil_ph}}'
          weather_risk: '{{get-weather.risk_index}}'
  consumes:
  - type: http
    namespace: iot-platform
    baseUri: https://api.rabobank.nl/internal/agri-iot/v1
    authentication:
      type: bearer
      token: $secrets.iot_token
    resources:
    - name: soil
      path: /farms/{{farm_id}}/soil-readings
      inputParameters:
      - name: farm_id
        in: path
      operations:
      - name: get-soil-readings
        method: GET
  - type: http
    namespace: knmi
    baseUri: https://api.knmi.nl/open-data/v1
    authentication:
      type: bearer
      token: $secrets.knmi_token
    resources:
    - name: forecasts
      path: /forecasts
      inputParameters:
      - name: region
        in: query
      - name: period
        in: query
      operations:
      - name: get-forecast
        method: GET
  - type: http
    namespace: credit-risk-engine
    baseUri: https://api.rabobank.nl/internal/risk/v2
    authentication:
      type: bearer
      token: $secrets.risk_engine_token
    resources:
    - name: agri-risk
      path: /agri-risk-updates
      operations:
      - name: update-agri-risk
        method: POST
Open in Framework → View in Fleet → precision-agriculture-data-integration-orchestrator.yml

Orchestrates payment fraud detection pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Payment Fraud Detection Pipeline
  description: Orchestrates payment fraud detection pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - payment
  - rabobank
  - bloomberg
  - rabobank
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: payment
    port: 8080
    tools:
    - name: payment-fraud-detection-pipeline
      description: Orchestrates payment fraud detection pipeline across agricultural 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: rabobank.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/payment
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/payment
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/payment
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → payment-fraud-detection-pipeline.yml

Orchestrates customer pricing review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Pricing Review Pipeline
  description: Orchestrates customer pricing review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-pricing-review-pipeline
      description: Orchestrates customer pricing review pipeline across agricultural 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://rabobank.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://rabobank.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://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-pricing-review-pipeline.yml

Orchestrates customer digital channel migration pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Digital Channel Migration Pipeline
  description: Orchestrates customer digital channel migration pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - confluence
  - bloomberg
  - rabobank
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-digital-channel-migration-pipeline
      description: Orchestrates customer digital channel migration pipeline across agricultural 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: bloomberg.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: rabobank.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-digital-channel-migration-pipeline.yml

Disburses an approved agricultural loan by creating the loan account in the core banking system, transferring funds via SEPA, updating the loan origination status, and sending a disbursement confirmation to the farmer.

naftiko: '0.5'
info:
  label: Loan Disbursement Orchestrator
  description: Disburses an approved agricultural loan by creating the loan account in the core banking system, transferring funds via SEPA, updating the loan origination status, and sending a disbursement confirmation to the farmer.
  tags:
  - agricultural-lending
  - payments
  - core-banking
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: loan-disbursement
    port: 8080
    tools:
    - name: disburse-loan
      description: Given an approved loan ID, create account, transfer funds, update status, and send confirmation.
      inputParameters:
      - name: loan_id
        in: body
        type: string
        description: The approved loan identifier.
      steps:
      - name: get-loan
        type: call
        call: loan-origination.get-loan
        with:
          loan_id: '{{loan_id}}'
      - name: create-loan-account
        type: call
        call: core-banking.create-loan-account
        with:
          customer_id: '{{get-loan.customer_id}}'
          amount: '{{get-loan.approved_amount}}'
          rate: '{{get-loan.interest_rate}}'
          term: '{{get-loan.term_months}}'
      - name: transfer-funds
        type: call
        call: payment-engine.create-sepa-transfer
        with:
          debtor_iban: '{{create-loan-account.loan_iban}}'
          creditor_iban: '{{get-loan.customer_iban}}'
          amount: '{{get-loan.approved_amount}}'
          reference: Loan disbursement {{loan_id}}
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: loan_disbursement
          to: '{{get-loan.customer_email}}'
          merge_amount: '{{get-loan.approved_amount}}'
          merge_loan_id: '{{loan_id}}'
  consumes:
  - type: http
    namespace: loan-origination
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: loans
      path: /loans/{{loan_id}}
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: get-loan
        method: GET
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/v2
    authentication:
      type: bearer
      token: $secrets.core_banking_token
    resources:
    - name: loan-accounts
      path: /loan-accounts
      operations:
      - name: create-loan-account
        method: POST
  - type: http
    namespace: payment-engine
    baseUri: https://api.rabobank.nl/internal/payments/v3
    authentication:
      type: bearer
      token: $secrets.payment_engine_token
    resources:
    - name: transfers
      path: /sepa-credit-transfers
      operations:
      - name: create-sepa-transfer
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.rabobank.nl/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → loan-disbursement-orchestrator.yml

Retrieves the current foreign exchange spot rate from the FX desk for a given currency pair, returning bid, ask, and mid rates.

naftiko: '0.5'
info:
  label: FX Spot Rate Lookup
  description: Retrieves the current foreign exchange spot rate from the FX desk for a given currency pair, returning bid, ask, and mid rates.
  tags:
  - banking
  - fx
  - treasury
capability:
  exposes:
  - type: mcp
    namespace: fx-rates
    port: 8080
    tools:
    - name: get-fx-spot-rate
      description: Get the current FX spot rate for a currency pair.
      inputParameters:
      - name: base_currency
        in: body
        type: string
        description: Base currency (e.g., EUR).
      - name: quote_currency
        in: body
        type: string
        description: Quote currency (e.g., USD).
      call: fx-desk.get-spot-rate
      with:
        base: '{{base_currency}}'
        quote: '{{quote_currency}}'
      outputParameters:
      - name: bid
        type: string
        mapping: $.data.bid
      - name: ask
        type: string
        mapping: $.data.ask
      - name: mid
        type: string
        mapping: $.data.mid
  consumes:
  - type: http
    namespace: fx-desk
    baseUri: https://api.rabobank.nl/internal/fx/v2
    authentication:
      type: bearer
      token: $secrets.fx_token
    resources:
    - name: spot-rates
      path: /spot-rates
      inputParameters:
      - name: base
        in: query
      - name: quote
        in: query
      operations:
      - name: get-spot-rate
        method: GET
Open in Framework → View in Fleet → fx-spot-rate-lookup.yml

Orchestrates precision farming data pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Precision Farming Data Pipeline
  description: Orchestrates precision farming data pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - precision
  - rabobank
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: precision
    port: 8080
    tools:
    - name: precision-farming-data-pipeline
      description: Orchestrates precision farming data pipeline across agricultural 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/precision
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/precision
      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/precision
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → precision-farming-data-pipeline.yml

Retrieves customer risk classification lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Customer Risk Classification Lookup
  description: Retrieves customer risk classification lookup data from the Rabobank agricultural banking systems.
  tags:
  - customer
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-risk-classification-lookup
      description: Retrieves customer risk classification lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.customer-risk-classification-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /customer/risk/classification/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-risk-classification-lookup
        method: GET
Open in Framework → View in Fleet → customer-risk-classification-lookup.yml

Facilitates supply chain finance for agricultural buyers and sellers by verifying the trade invoice, discounting the receivable, paying the seller early, and scheduling the buyer's payment.

naftiko: '0.5'
info:
  label: Agricultural Supply Chain Finance Orchestrator
  description: Facilitates supply chain finance for agricultural buyers and sellers by verifying the trade invoice, discounting the receivable, paying the seller early, and scheduling the buyer's payment.
  tags:
  - agricultural-lending
  - trade-finance
  - payments
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-finance
    port: 8080
    tools:
    - name: process-scf-transaction
      description: Given an invoice between buyer and seller, discount the receivable, pay seller, and schedule buyer payment.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: The trade invoice identifier.
      - name: seller_iban
        in: body
        type: string
        description: Seller's IBAN for early payment.
      - name: buyer_id
        in: body
        type: string
        description: The buyer customer identifier.
      steps:
      - name: verify-invoice
        type: call
        call: trade-finance-system.verify-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: discount-receivable
        type: call
        call: trade-finance-system.discount-invoice
        with:
          invoice_id: '{{invoice_id}}'
          amount: '{{verify-invoice.amount}}'
      - name: pay-seller
        type: call
        call: payment-engine.create-sepa-payment
        with:
          creditor_iban: '{{seller_iban}}'
          amount: '{{discount-receivable.discounted_amount}}'
          reference: SCF-{{invoice_id}}
      - name: schedule-buyer-payment
        type: call
        call: core-banking.schedule-debit
        with:
          customer_id: '{{buyer_id}}'
          amount: '{{verify-invoice.amount}}'
          date: '{{verify-invoice.due_date}}'
  consumes:
  - type: http
    namespace: trade-finance-system
    baseUri: https://api.rabobank.nl/internal/trade-finance/v2
    authentication:
      type: bearer
      token: $secrets.trade_finance_token
    resources:
    - name: invoices
      path: /invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: verify-invoice
        method: GET
    - name: discounting
      path: /invoices/{{invoice_id}}/discount
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: discount-invoice
        method: POST
  - type: http
    namespace: payment-engine
    baseUri: https://api.rabobank.nl/internal/payments/v3
    authentication:
      type: bearer
      token: $secrets.payment_engine_token
    resources:
    - name: sepa
      path: /sepa-credit-transfers
      operations:
      - name: create-sepa-payment
        method: POST
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/v2
    authentication:
      type: bearer
      token: $secrets.core_banking_token
    resources:
    - name: scheduled-debits
      path: /scheduled-debits
      operations:
      - name: schedule-debit
        method: POST
Open in Framework → View in Fleet → agricultural-supply-chain-finance-orchestrator.yml

Orchestrates farm equipment leasing pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Farm Equipment Leasing Pipeline
  description: Orchestrates farm equipment leasing pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - farm
  - rabobank
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-equipment-leasing-pipeline
      description: Orchestrates farm equipment leasing pipeline across agricultural 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://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/farm
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/farm
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/farm
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → farm-equipment-leasing-pipeline.yml

Retrieves mortgage rate schedule lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Mortgage Rate Schedule Lookup
  description: Retrieves mortgage rate schedule lookup data from the Rabobank agricultural banking systems.
  tags:
  - mortgage
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: mortgage
    port: 8080
    tools:
    - name: mortgage-rate-schedule-lookup
      description: Retrieves mortgage rate schedule lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_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
Open in Framework → View in Fleet → mortgage-rate-schedule-lookup.yml

Retrieves the status of an SME overdraft facility, returning the approved limit, current utilization, available headroom, and review date.

naftiko: '0.5'
info:
  label: SME Overdraft Facility Lookup
  description: Retrieves the status of an SME overdraft facility, returning the approved limit, current utilization, available headroom, and review date.
  tags:
  - banking
  - lending
  - sme
capability:
  exposes:
  - type: mcp
    namespace: sme-lending
    port: 8080
    tools:
    - name: get-overdraft-status
      description: Check the status of an SME overdraft facility.
      inputParameters:
      - name: facility_id
        in: body
        type: string
        description: The overdraft facility identifier.
      call: loan-system.get-facility
      with:
        facility_id: '{{facility_id}}'
      outputParameters:
      - name: approved_limit
        type: string
        mapping: $.data.approvedLimit
      - name: current_utilization
        type: string
        mapping: $.data.currentUtilization
      - name: available_headroom
        type: string
        mapping: $.data.availableHeadroom
      - name: review_date
        type: string
        mapping: $.data.nextReviewDate
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: facilities
      path: /facilities/{{facility_id}}
      inputParameters:
      - name: facility_id
        in: path
      operations:
      - name: get-facility
        method: GET
Open in Framework → View in Fleet → sme-overdraft-facility-lookup.yml

Generates a quarterly agricultural lending portfolio risk report by aggregating loan exposures from the lending system, commodity price risks from Refinitiv, and weather risks from KNMI, then distributes the report via SharePoint and Slack.

naftiko: '0.5'
info:
  label: Agricultural Portfolio Risk Report Orchestrator
  description: Generates a quarterly agricultural lending portfolio risk report by aggregating loan exposures from the lending system, commodity price risks from Refinitiv, and weather risks from KNMI, then distributes the report via SharePoint and Slack.
  tags:
  - agricultural-lending
  - risk
  - reporting
  - refinitiv
  - knmi
  - sharepoint
  - slack
capability:
  exposes:
  - type: mcp
    namespace: agri-portfolio-risk
    port: 8080
    tools:
    - name: generate-portfolio-risk-report
      description: Given a quarter, aggregate agricultural lending risks across multiple dimensions and distribute the report.
      inputParameters:
      - name: quarter
        in: body
        type: string
        description: Reporting quarter in YYYY-Q# format.
      steps:
      - name: get-loan-exposures
        type: call
        call: loan-system.get-agri-portfolio
        with:
          period: '{{quarter}}'
      - name: get-commodity-risks
        type: call
        call: refinitiv.get-agri-volatility
        with:
          period: '{{quarter}}'
      - name: get-weather-risks
        type: call
        call: knmi.get-seasonal-outlook
        with:
          period: '{{quarter}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: risk_reporting
          file_path: AgriPortfolio/{{quarter}}_risk_report.pdf
          content: 'Total exposure: EUR {{get-loan-exposures.total_exposure}}M, Commodity VaR: EUR {{get-commodity-risks.portfolio_var}}M, Weather risk index: {{get-weather-risks.risk_index}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '#agri-risk'
          text: 'Q{{quarter}} Agri Portfolio Risk Report published. Exposure: EUR {{get-loan-exposures.total_exposure}}M. Commodity VaR: EUR {{get-commodity-risks.portfolio_var}}M. Weather risk: {{get-weather-risks.risk_index}}.'
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: portfolio
      path: /portfolio/agricultural
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-agri-portfolio
        method: GET
  - type: http
    namespace: refinitiv
    baseUri: https://api.refinitiv.com/data/analytics/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: volatility
      path: /agricultural/volatility
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-agri-volatility
        method: GET
  - type: http
    namespace: knmi
    baseUri: https://api.knmi.nl/open-data/v1
    authentication:
      type: bearer
      token: $secrets.knmi_token
    resources:
    - name: seasonal
      path: /seasonal-outlook
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-seasonal-outlook
        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: upload-file
        method: PUT
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → agricultural-portfolio-risk-report-orchestrator.yml

Orchestrates agricultural lending risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Lending Risk Pipeline
  description: Orchestrates agricultural lending risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - rabobank
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-lending-risk-pipeline
      description: Orchestrates agricultural lending risk pipeline across agricultural 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: rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/agricultural
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/agricultural
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-lending-risk-pipeline.yml

Retrieves leasing contract status lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Leasing Contract Status Lookup
  description: Retrieves leasing contract status lookup data from the Rabobank agricultural banking systems.
  tags:
  - leasing
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: leasing
    port: 8080
    tools:
    - name: leasing-contract-status-lookup
      description: Retrieves leasing contract status lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.leasing-contract-status-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /leasing/contract/status/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: leasing-contract-status-lookup
        method: GET
Open in Framework → View in Fleet → leasing-contract-status-lookup.yml

Orchestrates farm biodiversity monitoring pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Farm Biodiversity Monitoring Pipeline
  description: Orchestrates farm biodiversity monitoring pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - farm
  - rabobank
  - rabobank
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-biodiversity-monitoring-pipeline
      description: Orchestrates farm biodiversity monitoring pipeline across agricultural 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: rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/farm
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/farm
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/farm
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → farm-biodiversity-monitoring-pipeline.yml

Initiates a SEPA credit transfer payment through the payment processing system, accepting debtor IBAN, creditor IBAN, amount, and reference, returning the payment status and end-to-end ID.

naftiko: '0.5'
info:
  label: SEPA Payment Initiation
  description: Initiates a SEPA credit transfer payment through the payment processing system, accepting debtor IBAN, creditor IBAN, amount, and reference, returning the payment status and end-to-end ID.
  tags:
  - payments
  - sepa
  - banking
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: initiate-sepa-transfer
      description: Initiate a SEPA credit transfer payment.
      inputParameters:
      - name: debtor_iban
        in: body
        type: string
        description: The debtor's IBAN.
      - name: creditor_iban
        in: body
        type: string
        description: The creditor's IBAN.
      - name: amount
        in: body
        type: string
        description: Payment amount in EUR.
      - name: reference
        in: body
        type: string
        description: Payment reference text.
      call: payment-engine.create-sepa-transfer
      with:
        debtor_iban: '{{debtor_iban}}'
        creditor_iban: '{{creditor_iban}}'
        amount: '{{amount}}'
        currency: EUR
        reference: '{{reference}}'
      outputParameters:
      - name: payment_status
        type: string
        mapping: $.data.status
      - name: end_to_end_id
        type: string
        mapping: $.data.endToEndId
  consumes:
  - type: http
    namespace: payment-engine
    baseUri: https://api.rabobank.nl/internal/payments/v3
    authentication:
      type: bearer
      token: $secrets.payment_engine_token
    resources:
    - name: transfers
      path: /sepa-credit-transfers
      operations:
      - name: create-sepa-transfer
        method: POST
Open in Framework → View in Fleet → sepa-payment-initiation.yml

Orchestrates customer credit review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Credit Review Pipeline
  description: Orchestrates customer credit review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - bloomberg
  - rabobank
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-credit-review-pipeline
      description: Orchestrates customer credit review pipeline across agricultural 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: rabobank.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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.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-3
        method: POST
Open in Framework → View in Fleet → customer-credit-review-pipeline.yml

Processes a sustainable farming loan with preferential rates by verifying the farm's sustainability certification, pulling the environmental score, calculating the green discount, and creating the loan application.

naftiko: '0.5'
info:
  label: Sustainable Farming Loan Orchestrator
  description: Processes a sustainable farming loan with preferential rates by verifying the farm's sustainability certification, pulling the environmental score, calculating the green discount, and creating the loan application.
  tags:
  - agricultural-lending
  - sustainability
  - green-finance
capability:
  exposes:
  - type: mcp
    namespace: green-lending
    port: 8080
    tools:
    - name: originate-green-loan
      description: Given a farmer ID and sustainability cert, verify certification, calculate green discount, and create loan.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer identifier.
      - name: cert_id
        in: body
        type: string
        description: Sustainability certification ID.
      - name: requested_amount
        in: body
        type: string
        description: Loan amount requested.
      steps:
      - name: verify-cert
        type: call
        call: sustainability-platform.verify-certification
        with:
          farmer_id: '{{farmer_id}}'
          cert_id: '{{cert_id}}'
      - name: get-env-score
        type: call
        call: sustainability-platform.get-environmental-score
        with:
          farmer_id: '{{farmer_id}}'
      - name: create-application
        type: call
        call: loan-origination.create-green-application
        with:
          customer_id: '{{farmer_id}}'
          amount: '{{requested_amount}}'
          sustainability_score: '{{get-env-score.score}}'
          cert_verified: '{{verify-cert.valid}}'
  consumes:
  - type: http
    namespace: sustainability-platform
    baseUri: https://api.rabobank.nl/internal/sustainability/v1
    authentication:
      type: bearer
      token: $secrets.sustainability_token
    resources:
    - name: certifications
      path: /certifications/verify
      operations:
      - name: verify-certification
        method: POST
    - name: scores
      path: /farmers/{{farmer_id}}/environmental-score
      inputParameters:
      - name: farmer_id
        in: path
      operations:
      - name: get-environmental-score
        method: GET
  - type: http
    namespace: loan-origination
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: green-applications
      path: /green-applications
      operations:
      - name: create-green-application
        method: POST
Open in Framework → View in Fleet → sustainable-farming-loan-orchestrator.yml

Orchestrates farm income verification pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Farm Income Verification Pipeline
  description: Orchestrates farm income verification pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - farm
  - rabobank
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-income-verification-pipeline
      description: Orchestrates farm income verification pipeline across agricultural 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://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/farm
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/farm
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/farm
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → farm-income-verification-pipeline.yml

Retrieves farm insurance policy lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Farm Insurance Policy Lookup
  description: Retrieves farm insurance policy lookup data from the Rabobank agricultural banking systems.
  tags:
  - farm
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-insurance-policy-lookup
      description: Retrieves farm insurance policy lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.farm-insurance-policy-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /farm/insurance/policy/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: farm-insurance-policy-lookup
        method: GET
Open in Framework → View in Fleet → farm-insurance-policy-lookup.yml

Orchestrates aml suspicious activity pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Aml Suspicious Activity Pipeline
  description: Orchestrates aml suspicious activity pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - aml
  - rabobank
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: aml
    port: 8080
    tools:
    - name: aml-suspicious-activity-pipeline
      description: Orchestrates aml suspicious activity pipeline across agricultural 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/aml
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/aml
      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/aml
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → aml-suspicious-activity-pipeline.yml

Retrieves customer complaint history lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Customer Complaint History Lookup
  description: Retrieves customer complaint history lookup data from the Rabobank agricultural banking systems.
  tags:
  - customer
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-complaint-history-lookup
      description: Retrieves customer complaint history lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.customer-complaint-history-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /customer/complaint/history/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-complaint-history-lookup
        method: GET
Open in Framework → View in Fleet → customer-complaint-history-lookup.yml

Records a mobile banking app event for analytics purposes, logging the event type, user session, and feature used in the analytics platform.

naftiko: '0.5'
info:
  label: Mobile Banking App Event Tracking
  description: Records a mobile banking app event for analytics purposes, logging the event type, user session, and feature used in the analytics platform.
  tags:
  - banking
  - mobile
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: mobile-analytics
    port: 8080
    tools:
    - name: track-app-event
      description: Record a mobile banking app event for analytics.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: event_type
        in: body
        type: string
        description: Event type (login, transfer, balance_check, payment).
      - name: feature
        in: body
        type: string
        description: Feature used.
      call: analytics-platform.track-event
      with:
        user_id: '{{customer_id}}'
        event: '{{event_type}}'
        feature: '{{feature}}'
      outputParameters:
      - name: event_id
        type: string
        mapping: $.data.eventId
  consumes:
  - type: http
    namespace: analytics-platform
    baseUri: https://api.rabobank.nl/internal/analytics/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: events
      path: /events
      operations:
      - name: track-event
        method: POST
Open in Framework → View in Fleet → mobile-banking-app-event-tracking.yml

Checks an employee's compliance training status from the LMS, returning completed modules, overdue trainings, and next due date.

naftiko: '0.5'
info:
  label: Compliance Training Status Check
  description: Checks an employee's compliance training status from the LMS, returning completed modules, overdue trainings, and next due date.
  tags:
  - compliance
  - hr
  - training
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: check-training-compliance
      description: Check compliance training status for a Rabobank employee.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The employee identifier.
      call: lms.get-compliance-status
      with:
        user_id: '{{employee_id}}'
      outputParameters:
      - name: completed
        type: string
        mapping: $.data.completedCount
      - name: overdue
        type: string
        mapping: $.data.overdueCount
      - name: next_due
        type: string
        mapping: $.data.nextDueDate
  consumes:
  - type: http
    namespace: lms
    baseUri: https://api.rabobank.nl/internal/lms/v1
    authentication:
      type: bearer
      token: $secrets.lms_token
    resources:
    - name: compliance
      path: /users/{{user_id}}/compliance
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: get-compliance-status
        method: GET
Open in Framework → View in Fleet → compliance-training-status-check.yml

Retrieves current commodity prices from the Refinitiv market data platform for agricultural commodities, returning spot price, 30-day change, and forward curve for wheat, corn, soy, and dairy.

naftiko: '0.5'
info:
  label: Commodity Price Lookup
  description: Retrieves current commodity prices from the Refinitiv market data platform for agricultural commodities, returning spot price, 30-day change, and forward curve for wheat, corn, soy, and dairy.
  tags:
  - agricultural-lending
  - market-data
  - refinitiv
capability:
  exposes:
  - type: mcp
    namespace: market-data
    port: 8080
    tools:
    - name: get-commodity-price
      description: Look up current commodity market price from Refinitiv.
      inputParameters:
      - name: commodity_ric
        in: body
        type: string
        description: The Refinitiv instrument code (RIC) for the commodity.
      call: refinitiv.get-price
      with:
        ric: '{{commodity_ric}}'
      outputParameters:
      - name: spot_price
        type: string
        mapping: $.data.spotPrice
      - name: change_30d
        type: string
        mapping: $.data.change30Day
      - name: forward_curve
        type: string
        mapping: $.data.forwardCurve
  consumes:
  - type: http
    namespace: refinitiv
    baseUri: https://api.refinitiv.com/data/pricing/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: pricing
      path: /instruments/{{ric}}/pricing
      inputParameters:
      - name: ric
        in: path
      operations:
      - name: get-price
        method: GET
Open in Framework → View in Fleet → commodity-price-lookup.yml

Runs KYC screening on a new business customer by verifying identity through the Dutch Chamber of Commerce (KvK), screening sanctions lists, checking PEP status, and logging results in the compliance system.

naftiko: '0.5'
info:
  label: KYC Customer Screening Orchestrator
  description: Runs KYC screening on a new business customer by verifying identity through the Dutch Chamber of Commerce (KvK), screening sanctions lists, checking PEP status, and logging results in the compliance system.
  tags:
  - risk
  - kyc
  - compliance
  - kvk
capability:
  exposes:
  - type: mcp
    namespace: kyc-screening
    port: 8080
    tools:
    - name: screen-business-customer
      description: Given a business customer and KvK number, verify identity, screen sanctions and PEP, and log compliance results.
      inputParameters:
      - name: kvk_number
        in: body
        type: string
        description: The Dutch Chamber of Commerce (KvK) number.
      - name: company_name
        in: body
        type: string
        description: The company name.
      - name: beneficial_owner
        in: body
        type: string
        description: Name of the ultimate beneficial owner.
      steps:
      - name: verify-kvk
        type: call
        call: kvk.get-company
        with:
          kvk_number: '{{kvk_number}}'
      - name: screen-sanctions
        type: call
        call: sanctions-api.screen
        with:
          name: '{{company_name}}'
          ubo_name: '{{beneficial_owner}}'
      - name: check-pep
        type: call
        call: sanctions-api.check-pep
        with:
          name: '{{beneficial_owner}}'
      - name: log-results
        type: call
        call: compliance-system.create-screening
        with:
          kvk_number: '{{kvk_number}}'
          company_name: '{{company_name}}'
          kvk_verified: '{{verify-kvk.active}}'
          sanctions_hit: '{{screen-sanctions.hit}}'
          pep_status: '{{check-pep.is_pep}}'
  consumes:
  - type: http
    namespace: kvk
    baseUri: https://api.kvk.nl/api/v1
    authentication:
      type: bearer
      token: $secrets.kvk_token
    resources:
    - name: companies
      path: /basisprofielen/{{kvk_number}}
      inputParameters:
      - name: kvk_number
        in: path
      operations:
      - name: get-company
        method: GET
  - type: http
    namespace: sanctions-api
    baseUri: https://api.rabobank.nl/internal/sanctions/v1
    authentication:
      type: bearer
      token: $secrets.sanctions_token
    resources:
    - name: screening
      path: /screen
      operations:
      - name: screen
        method: POST
    - name: pep
      path: /pep-check
      operations:
      - name: check-pep
        method: POST
  - type: http
    namespace: compliance-system
    baseUri: https://api.rabobank.nl/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: screenings
      path: /screening-records
      operations:
      - name: create-screening
        method: POST
Open in Framework → View in Fleet → kyc-customer-screening-orchestrator.yml

Retrieves sustainability score lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Sustainability Score Lookup
  description: Retrieves sustainability score lookup data from the Rabobank agricultural banking systems.
  tags:
  - sustainability
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: sustainability
    port: 8080
    tools:
    - name: sustainability-score-lookup
      description: Retrieves sustainability score lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.sustainability-score-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /sustainability/score/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: sustainability-score-lookup
        method: GET
Open in Framework → View in Fleet → sustainability-score-lookup.yml

Monitors agricultural loan covenants by pulling quarterly financial statements from the customer file, checking covenant thresholds in the loan system, and alerting the relationship manager in Microsoft Teams if a breach is detected.

naftiko: '0.5'
info:
  label: Loan Covenant Monitoring Orchestrator
  description: Monitors agricultural loan covenants by pulling quarterly financial statements from the customer file, checking covenant thresholds in the loan system, and alerting the relationship manager in Microsoft Teams if a breach is detected.
  tags:
  - agricultural-lending
  - risk
  - monitoring
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: covenant-monitoring
    port: 8080
    tools:
    - name: check-loan-covenants
      description: Given a loan ID, pull customer financials, check covenant compliance, and alert if breached.
      inputParameters:
      - name: loan_id
        in: body
        type: string
        description: The agricultural loan identifier.
      steps:
      - name: get-loan-details
        type: call
        call: loan-system.get-loan
        with:
          loan_id: '{{loan_id}}'
      - name: get-financials
        type: call
        call: customer-file.get-financials
        with:
          customer_id: '{{get-loan-details.customer_id}}'
      - name: check-covenants
        type: call
        call: loan-system.evaluate-covenants
        with:
          loan_id: '{{loan_id}}'
          current_ratio: '{{get-financials.current_ratio}}'
          debt_service_coverage: '{{get-financials.dscr}}'
          debt_to_equity: '{{get-financials.debt_to_equity}}'
      - name: alert-rm
        type: call
        call: msteams.send-message
        with:
          channel_id: agri-risk-alerts
          text: 'Covenant check for loan {{loan_id}} (Customer: {{get-loan-details.customer_id}}). Status: {{check-covenants.overall_status}}. DSCR: {{get-financials.dscr}}, D/E: {{get-financials.debt_to_equity}}.'
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: loans
      path: /loans/{{loan_id}}
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: get-loan
        method: GET
    - name: covenants
      path: /loans/{{loan_id}}/covenant-evaluation
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: evaluate-covenants
        method: POST
  - type: http
    namespace: customer-file
    baseUri: https://api.rabobank.nl/internal/customer/v2
    authentication:
      type: bearer
      token: $secrets.customer_file_token
    resources:
    - name: financials
      path: /customers/{{customer_id}}/financials
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-financials
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → loan-covenant-monitoring-orchestrator.yml

Processes a new farm loan application by pulling the farmer's credit profile from Experian, verifying land collateral via the Kadaster land registry, creating the loan in the origination system, and notifying the loan officer in Microsoft Teams.

naftiko: '0.5'
info:
  label: Farm Loan Origination Orchestrator
  description: Processes a new farm loan application by pulling the farmer's credit profile from Experian, verifying land collateral via the Kadaster land registry, creating the loan in the origination system, and notifying the loan officer in Microsoft Teams.
  tags:
  - agricultural-lending
  - origination
  - experian
  - kadaster
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: agri-lending
    port: 8080
    tools:
    - name: originate-farm-loan
      description: Given farmer details and land parcel, pull credit, verify collateral, create loan, and notify officer.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The customer/farmer identifier.
      - name: requested_amount
        in: body
        type: string
        description: Loan amount requested in EUR.
      - name: land_parcel_id
        in: body
        type: string
        description: The Kadaster land parcel identifier.
      - name: loan_purpose
        in: body
        type: string
        description: Purpose of the loan (equipment, land_acquisition, working_capital, expansion).
      steps:
      - name: pull-credit
        type: call
        call: experian.get-business-credit
        with:
          customer_id: '{{farmer_id}}'
      - name: verify-land
        type: call
        call: kadaster.get-parcel
        with:
          parcel_id: '{{land_parcel_id}}'
      - name: create-application
        type: call
        call: loan-origination.create-application
        with:
          customer_id: '{{farmer_id}}'
          amount: '{{requested_amount}}'
          purpose: '{{loan_purpose}}'
          credit_score: '{{pull-credit.score}}'
          collateral_value: '{{verify-land.estimated_value}}'
          collateral_type: farmland
      - name: notify-officer
        type: call
        call: msteams.send-message
        with:
          channel_id: agri-lending-queue
          text: 'New farm loan application: {{create-application.application_id}}. Customer: {{farmer_id}}, Amount: EUR {{requested_amount}}, Purpose: {{loan_purpose}}, Credit: {{pull-credit.score}}, Land value: EUR {{verify-land.estimated_value}}.'
  consumes:
  - type: http
    namespace: experian
    baseUri: https://api.experian.nl/business/v2
    authentication:
      type: bearer
      token: $secrets.experian_token
    resources:
    - name: credit
      path: /reports
      operations:
      - name: get-business-credit
        method: POST
  - type: http
    namespace: kadaster
    baseUri: https://api.kadaster.nl/v2
    authentication:
      type: bearer
      token: $secrets.kadaster_token
    resources:
    - name: parcels
      path: /parcels/{{parcel_id}}
      inputParameters:
      - name: parcel_id
        in: path
      operations:
      - name: get-parcel
        method: GET
  - type: http
    namespace: loan-origination
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: applications
      path: /applications
      operations:
      - name: create-application
        method: POST
  - type: http
    namespace: msteams
    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: send-message
        method: POST
Open in Framework → View in Fleet → farm-loan-origination-orchestrator.yml

Checks the status of a trade finance letter of credit from the trade finance system, returning LC status, beneficiary, amount, expiry date, and documents presented.

naftiko: '0.5'
info:
  label: Trade Finance Letter of Credit Status
  description: Checks the status of a trade finance letter of credit from the trade finance system, returning LC status, beneficiary, amount, expiry date, and documents presented.
  tags:
  - banking
  - trade-finance
capability:
  exposes:
  - type: mcp
    namespace: trade-finance
    port: 8080
    tools:
    - name: get-lc-status
      description: Look up a letter of credit by LC number.
      inputParameters:
      - name: lc_number
        in: body
        type: string
        description: The letter of credit number.
      call: trade-finance-system.get-lc
      with:
        lc_number: '{{lc_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.lcStatus
      - name: beneficiary
        type: string
        mapping: $.data.beneficiaryName
      - name: amount
        type: string
        mapping: $.data.amount
      - name: expiry_date
        type: string
        mapping: $.data.expiryDate
  consumes:
  - type: http
    namespace: trade-finance-system
    baseUri: https://api.rabobank.nl/internal/trade-finance/v2
    authentication:
      type: bearer
      token: $secrets.trade_finance_token
    resources:
    - name: lcs
      path: /letters-of-credit/{{lc_number}}
      inputParameters:
      - name: lc_number
        in: path
      operations:
      - name: get-lc
        method: GET
Open in Framework → View in Fleet → trade-finance-letter-of-credit-status.yml

Compiles an interest rate risk report by pulling the bank's rate-sensitive positions from the ALM system, running NII and EVE simulations, and pushing results to Power BI.

naftiko: '0.5'
info:
  label: Interest Rate Risk Report Orchestrator
  description: Compiles an interest rate risk report by pulling the bank's rate-sensitive positions from the ALM system, running NII and EVE simulations, and pushing results to Power BI.
  tags:
  - risk
  - treasury
  - alm
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: irr-reporting
    port: 8080
    tools:
    - name: generate-irr-report
      description: Given a reporting date, pull rate positions, run simulations, and update dashboard.
      inputParameters:
      - name: reporting_date
        in: body
        type: string
        description: Reporting date in YYYY-MM-DD format.
      steps:
      - name: get-positions
        type: call
        call: alm-system.get-rate-positions
        with:
          date: '{{reporting_date}}'
      - name: run-simulations
        type: call
        call: alm-system.run-nii-eve
        with:
          date: '{{reporting_date}}'
          positions: '{{get-positions.positions}}'
      - name: push-dashboard
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: irr_dashboard
          rows_date: '{{reporting_date}}'
          rows_nii_impact: '{{run-simulations.nii_impact}}'
          rows_eve_impact: '{{run-simulations.eve_impact}}'
  consumes:
  - type: http
    namespace: alm-system
    baseUri: https://api.rabobank.nl/internal/alm/v1
    authentication:
      type: bearer
      token: $secrets.alm_token
    resources:
    - name: positions
      path: /rate-sensitive-positions
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-rate-positions
        method: GET
    - name: simulations
      path: /nii-eve-simulations
      operations:
      - name: run-nii-eve
        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}}/tables/IRR/rows
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: push-rows
        method: POST
Open in Framework → View in Fleet → interest-rate-risk-report-orchestrator.yml

Creates an IT service request in ServiceNow for Rabobank employees, covering system access, software installation, and hardware requests.

naftiko: '0.5'
info:
  label: IT Service Request
  description: Creates an IT service request in ServiceNow for Rabobank employees, covering system access, software installation, and hardware requests.
  tags:
  - it-support
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: create-service-request
      description: Submit an IT service request to ServiceNow.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Request category (access, software, hardware, network).
      - name: description
        in: body
        type: string
        description: Description of the request.
      - name: priority
        in: body
        type: string
        description: Priority (low, medium, high).
      call: servicenow.create-request
      with:
        category: '{{category}}'
        short_description: 'IT Service: {{category}}'
        description: '{{description}}'
        priority: '{{priority}}'
      outputParameters:
      - name: request_number
        type: string
        mapping: $.result.number
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
Open in Framework → View in Fleet → it-service-request.yml

Orchestrates agricultural innovation funding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Innovation Funding Pipeline
  description: Orchestrates agricultural innovation funding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - sap
  - confluence
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-innovation-funding-pipeline
      description: Orchestrates agricultural innovation funding pipeline across agricultural 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: sap.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: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/agricultural
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/agricultural
      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/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-innovation-funding-pipeline.yml

Compiles daily liquidity risk metrics by pulling cash flows from the treasury system, interbank exposure from the ALM system, and regulatory LCR data from the risk engine, then pushes to the Power BI dashboard and alerts Treasury in Microsoft Teams.

naftiko: '0.5'
info:
  label: Liquidity Risk Dashboard Orchestrator
  description: Compiles daily liquidity risk metrics by pulling cash flows from the treasury system, interbank exposure from the ALM system, and regulatory LCR data from the risk engine, then pushes to the Power BI dashboard and alerts Treasury in Microsoft Teams.
  tags:
  - risk
  - treasury
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: liquidity-risk
    port: 8080
    tools:
    - name: update-liquidity-dashboard
      description: Given a reporting date, aggregate cash flows, interbank exposure, and LCR, then update dashboard and notify Treasury.
      inputParameters:
      - name: reporting_date
        in: body
        type: string
        description: Reporting date in YYYY-MM-DD format.
      steps:
      - name: get-cash-flows
        type: call
        call: treasury-system.get-cash-flows
        with:
          date: '{{reporting_date}}'
      - name: get-interbank-exposure
        type: call
        call: alm-system.get-exposure
        with:
          date: '{{reporting_date}}'
      - name: get-lcr
        type: call
        call: risk-reporting.get-lcr
        with:
          date: '{{reporting_date}}'
      - name: push-to-powerbi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: liquidity_dashboard
          rows_date: '{{reporting_date}}'
          rows_net_cash: '{{get-cash-flows.net_position}}'
          rows_interbank: '{{get-interbank-exposure.total}}'
          rows_lcr: '{{get-lcr.ratio}}'
      - name: notify-treasury
        type: call
        call: msteams.send-message
        with:
          channel_id: treasury-risk
          text: 'Liquidity update ({{reporting_date}}): Net cash: EUR {{get-cash-flows.net_position}}M, Interbank: EUR {{get-interbank-exposure.total}}M, LCR: {{get-lcr.ratio}}%. Dashboard updated.'
  consumes:
  - type: http
    namespace: treasury-system
    baseUri: https://api.rabobank.nl/internal/treasury/v2
    authentication:
      type: bearer
      token: $secrets.treasury_token
    resources:
    - name: cash-flows
      path: /cash-flows
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-cash-flows
        method: GET
  - type: http
    namespace: alm-system
    baseUri: https://api.rabobank.nl/internal/alm/v1
    authentication:
      type: bearer
      token: $secrets.alm_token
    resources:
    - name: exposure
      path: /interbank-exposure
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-exposure
        method: GET
  - type: http
    namespace: risk-reporting
    baseUri: https://api.rabobank.nl/internal/risk-reporting/v2
    authentication:
      type: bearer
      token: $secrets.risk_reporting_token
    resources:
    - name: lcr
      path: /lcr
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-lcr
        method: GET
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/tables/Liquidity/rows
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: push-rows
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → liquidity-risk-dashboard-orchestrator.yml

Processes a cross-border SWIFT payment by validating the beneficiary through sanctions screening, initiating the payment via the SWIFT gateway, and sending a payment confirmation to the customer via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Cross-Border Payment Orchestrator
  description: Processes a cross-border SWIFT payment by validating the beneficiary through sanctions screening, initiating the payment via the SWIFT gateway, and sending a payment confirmation to the customer via Salesforce Marketing Cloud.
  tags:
  - payments
  - swift
  - compliance
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: cross-border-payments
    port: 8080
    tools:
    - name: process-swift-payment
      description: Given payment details, screen beneficiary, initiate SWIFT payment, and send confirmation.
      inputParameters:
      - name: debtor_iban
        in: body
        type: string
        description: Debtor IBAN.
      - name: beneficiary_name
        in: body
        type: string
        description: Beneficiary name.
      - name: beneficiary_account
        in: body
        type: string
        description: Beneficiary account number.
      - name: beneficiary_bic
        in: body
        type: string
        description: Beneficiary bank BIC/SWIFT code.
      - name: amount
        in: body
        type: string
        description: Payment amount.
      - name: currency
        in: body
        type: string
        description: Payment currency (e.g., USD, GBP).
      steps:
      - name: screen-beneficiary
        type: call
        call: sanctions-api.screen
        with:
          name: '{{beneficiary_name}}'
          country: '{{beneficiary_bic}}'
      - name: initiate-payment
        type: call
        call: swift-gateway.create-payment
        with:
          debtor_iban: '{{debtor_iban}}'
          beneficiary_name: '{{beneficiary_name}}'
          beneficiary_account: '{{beneficiary_account}}'
          beneficiary_bic: '{{beneficiary_bic}}'
          amount: '{{amount}}'
          currency: '{{currency}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-email
        with:
          template: swift_payment_confirmation
          to: '{{initiate-payment.debtor_email}}'
          merge_amount: '{{amount}} {{currency}}'
          merge_beneficiary: '{{beneficiary_name}}'
          merge_reference: '{{initiate-payment.uetr}}'
  consumes:
  - type: http
    namespace: sanctions-api
    baseUri: https://api.rabobank.nl/internal/sanctions/v1
    authentication:
      type: bearer
      token: $secrets.sanctions_token
    resources:
    - name: screening
      path: /screen
      operations:
      - name: screen
        method: POST
  - type: http
    namespace: swift-gateway
    baseUri: https://api.rabobank.nl/internal/swift/v2
    authentication:
      type: bearer
      token: $secrets.swift_gateway_token
    resources:
    - name: payments
      path: /mt103
      operations:
      - name: create-payment
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.rabobank.nl/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → cross-border-payment-orchestrator.yml

Prepares a client relationship review for an agricultural client by pulling their loan portfolio from the lending system, deposit balances from core banking, and recent interactions from Salesforce, then compiling into a review document in SharePoint.

naftiko: '0.5'
info:
  label: Client Relationship Review Orchestrator
  description: Prepares a client relationship review for an agricultural client by pulling their loan portfolio from the lending system, deposit balances from core banking, and recent interactions from Salesforce, then compiling into a review document in SharePoint.
  tags:
  - agricultural-lending
  - banking
  - salesforce
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: client-reviews
    port: 8080
    tools:
    - name: prepare-client-review
      description: Given a customer ID, compile loan, deposit, and interaction data into a relationship review.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: review_date
        in: body
        type: string
        description: Review date in YYYY-MM-DD format.
      steps:
      - name: get-loans
        type: call
        call: loan-system.get-customer-loans
        with:
          customer_id: '{{customer_id}}'
      - name: get-deposits
        type: call
        call: core-banking.get-customer-balances
        with:
          customer_id: '{{customer_id}}'
      - name: get-interactions
        type: call
        call: salesforce.get-recent-activities
        with:
          account_id: '{{customer_id}}'
      - name: upload-review
        type: call
        call: sharepoint.upload-file
        with:
          site_id: relationship_reviews
          file_path: Reviews/{{customer_id}}/{{review_date}}_review.pdf
          content: 'Loans: {{get-loans.count}}, Total exposure: EUR {{get-loans.total_exposure}}, Deposits: EUR {{get-deposits.total_balance}}, Interactions: {{get-interactions.count}}'
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: customer-loans
      path: /customers/{{customer_id}}/loans
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer-loans
        method: GET
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/v2
    authentication:
      type: bearer
      token: $secrets.core_banking_token
    resources:
    - name: balances
      path: /customers/{{customer_id}}/balances
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer-balances
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: activities
      path: /sobjects/Task
      inputParameters:
      - name: account_id
        in: query
      operations:
      - name: get-recent-activities
        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: upload-file
        method: PUT
Open in Framework → View in Fleet → client-relationship-review-orchestrator.yml

Retrieves the loan repayment schedule from the lending system, returning upcoming payment dates, amounts, principal/interest split, and remaining balance.

naftiko: '0.5'
info:
  label: Loan Repayment Schedule Lookup
  description: Retrieves the loan repayment schedule from the lending system, returning upcoming payment dates, amounts, principal/interest split, and remaining balance.
  tags:
  - banking
  - lending
capability:
  exposes:
  - type: mcp
    namespace: loan-servicing
    port: 8080
    tools:
    - name: get-repayment-schedule
      description: Look up the repayment schedule for a loan.
      inputParameters:
      - name: loan_id
        in: body
        type: string
        description: The loan identifier.
      call: loan-system.get-schedule
      with:
        loan_id: '{{loan_id}}'
      outputParameters:
      - name: schedule
        type: string
        mapping: $.data.payments
      - name: remaining_balance
        type: string
        mapping: $.data.remainingBalance
      - name: next_payment_date
        type: string
        mapping: $.data.nextPaymentDate
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: schedules
      path: /loans/{{loan_id}}/schedule
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → loan-repayment-schedule-lookup.yml

Retrieves customer transaction pattern lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Customer Transaction Pattern Lookup
  description: Retrieves customer transaction pattern lookup data from the Rabobank agricultural banking systems.
  tags:
  - customer
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-transaction-pattern-lookup
      description: Retrieves customer transaction pattern lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.customer-transaction-pattern-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /customer/transaction/pattern/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-transaction-pattern-lookup
        method: GET
Open in Framework → View in Fleet → customer-transaction-pattern-lookup.yml

Checks the status of an iDEAL online payment transaction, returning payment status, amount, debtor bank, and timestamp.

naftiko: '0.5'
info:
  label: iDEAL Payment Status Check
  description: Checks the status of an iDEAL online payment transaction, returning payment status, amount, debtor bank, and timestamp.
  tags:
  - payments
  - ideal
  - banking
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: get-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.
      call: payment-engine.get-ideal-status
      with:
        transaction_id: '{{transaction_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.status
      - name: amount
        type: string
        mapping: $.data.amount
      - name: debtor_bank
        type: string
        mapping: $.data.debtorBank
      - name: timestamp
        type: string
        mapping: $.data.completionTimestamp
  consumes:
  - type: http
    namespace: payment-engine
    baseUri: https://api.rabobank.nl/internal/payments/v3
    authentication:
      type: bearer
      token: $secrets.payment_engine_token
    resources:
    - name: ideal
      path: /ideal/transactions/{{transaction_id}}
      inputParameters:
      - name: transaction_id
        in: path
      operations:
      - name: get-ideal-status
        method: GET
Open in Framework → View in Fleet → ideal-payment-status-check.yml

Orchestrates customer offboarding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Offboarding Pipeline
  description: Orchestrates customer offboarding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-offboarding-pipeline
      description: Orchestrates customer offboarding pipeline across agricultural 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://rabobank.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://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-offboarding-pipeline.yml

Orchestrates agricultural data marketplace pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Data Marketplace Pipeline
  description: Orchestrates agricultural data marketplace pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-data-marketplace-pipeline
      description: Orchestrates agricultural data marketplace pipeline across agricultural 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://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/agricultural
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/agricultural
      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/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-data-marketplace-pipeline.yml

Orchestrates customer vulnerability assessment pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Vulnerability Assessment Pipeline
  description: Orchestrates customer vulnerability assessment pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-vulnerability-assessment-pipeline
      description: Orchestrates customer vulnerability assessment pipeline across agricultural 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://rabobank.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://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-vulnerability-assessment-pipeline.yml

Orchestrates customer digital onboarding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Digital Onboarding Pipeline
  description: Orchestrates customer digital onboarding pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - sap
  - confluence
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-digital-onboarding-pipeline
      description: Orchestrates customer digital onboarding pipeline across agricultural 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: sap.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: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.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
Open in Framework → View in Fleet → customer-digital-onboarding-pipeline.yml

Processes a loan restructuring request by pulling the current loan terms, running a restructuring analysis in the credit engine, creating the restructured terms, and notifying the borrower via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Loan Restructuring Orchestrator
  description: Processes a loan restructuring request by pulling the current loan terms, running a restructuring analysis in the credit engine, creating the restructured terms, and notifying the borrower via Salesforce Marketing Cloud.
  tags:
  - agricultural-lending
  - risk
  - banking
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: loan-restructuring
    port: 8080
    tools:
    - name: restructure-loan
      description: Given a loan ID and restructuring request, analyze, create new terms, and notify borrower.
      inputParameters:
      - name: loan_id
        in: body
        type: string
        description: The loan identifier.
      - name: restructuring_type
        in: body
        type: string
        description: Type (term_extension, rate_reduction, payment_holiday, principal_reduction).
      steps:
      - name: get-current-terms
        type: call
        call: loan-system.get-loan
        with:
          loan_id: '{{loan_id}}'
      - name: run-analysis
        type: call
        call: credit-risk-engine.analyze-restructuring
        with:
          loan_id: '{{loan_id}}'
          type: '{{restructuring_type}}'
          current_balance: '{{get-current-terms.outstanding_balance}}'
      - name: apply-restructuring
        type: call
        call: loan-system.apply-restructuring
        with:
          loan_id: '{{loan_id}}'
          new_terms: '{{run-analysis.proposed_terms}}'
      - name: notify-borrower
        type: call
        call: sfmc.send-email
        with:
          template: loan_restructuring
          to: '{{get-current-terms.customer_email}}'
          merge_loan_id: '{{loan_id}}'
          merge_new_terms: '{{run-analysis.proposed_terms}}'
  consumes:
  - type: http
    namespace: loan-system
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: loans
      path: /loans/{{loan_id}}
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: get-loan
        method: GET
    - name: restructuring
      path: /loans/{{loan_id}}/restructure
      inputParameters:
      - name: loan_id
        in: path
      operations:
      - name: apply-restructuring
        method: POST
  - type: http
    namespace: credit-risk-engine
    baseUri: https://api.rabobank.nl/internal/risk/v2
    authentication:
      type: bearer
      token: $secrets.risk_engine_token
    resources:
    - name: restructuring-analysis
      path: /restructuring-analyses
      operations:
      - name: analyze-restructuring
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.rabobank.nl/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → loan-restructuring-orchestrator.yml

Assists a farmer in applying for EU agricultural subsidies by pulling farm registration data from RVO, verifying land use from the Kadaster, compiling the application, and submitting it through the RVO portal.

naftiko: '0.5'
info:
  label: Agricultural Subsidy Application Orchestrator
  description: Assists a farmer in applying for EU agricultural subsidies by pulling farm registration data from RVO, verifying land use from the Kadaster, compiling the application, and submitting it through the RVO portal.
  tags:
  - agricultural-lending
  - subsidies
  - rvo
  - kadaster
capability:
  exposes:
  - type: mcp
    namespace: agri-subsidies
    port: 8080
    tools:
    - name: submit-subsidy-application
      description: Given a farmer's RVO registration and land parcels, compile and submit an EU subsidy application.
      inputParameters:
      - name: rvo_number
        in: body
        type: string
        description: The RVO (Netherlands Enterprise Agency) registration number.
      - name: subsidy_type
        in: body
        type: string
        description: Type of subsidy (basic_payment, greening, agri_environment).
      - name: land_parcels
        in: body
        type: string
        description: Comma-separated Kadaster parcel IDs.
      steps:
      - name: get-farm-registration
        type: call
        call: rvo.get-registration
        with:
          rvo_number: '{{rvo_number}}'
      - name: verify-parcels
        type: call
        call: kadaster.get-parcels-batch
        with:
          parcel_ids: '{{land_parcels}}'
      - name: submit-application
        type: call
        call: rvo.submit-subsidy
        with:
          rvo_number: '{{rvo_number}}'
          subsidy_type: '{{subsidy_type}}'
          total_hectares: '{{verify-parcels.total_hectares}}'
          eligible_land: '{{verify-parcels.eligible_hectares}}'
  consumes:
  - type: http
    namespace: rvo
    baseUri: https://api.rvo.nl/v1
    authentication:
      type: bearer
      token: $secrets.rvo_token
    resources:
    - name: registrations
      path: /farm-registrations/{{rvo_number}}
      inputParameters:
      - name: rvo_number
        in: path
      operations:
      - name: get-registration
        method: GET
    - name: subsidies
      path: /subsidy-applications
      operations:
      - name: submit-subsidy
        method: POST
  - type: http
    namespace: kadaster
    baseUri: https://api.kadaster.nl/v2
    authentication:
      type: bearer
      token: $secrets.kadaster_token
    resources:
    - name: parcels-batch
      path: /parcels/batch
      operations:
      - name: get-parcels-batch
        method: POST
Open in Framework → View in Fleet → agricultural-subsidy-application-orchestrator.yml

Orchestrates carbon credit verification pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Carbon Credit Verification Pipeline
  description: Orchestrates carbon credit verification pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - carbon
  - rabobank
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: carbon
    port: 8080
    tools:
    - name: carbon-credit-verification-pipeline
      description: Orchestrates carbon credit verification pipeline across agricultural 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://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/carbon
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/carbon
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/carbon
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → carbon-credit-verification-pipeline.yml

Retrieves trade finance document status data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Trade Finance Document Status
  description: Retrieves trade finance document status data from the Rabobank agricultural banking systems.
  tags:
  - trade
  - rabobank
  - status
capability:
  exposes:
  - type: mcp
    namespace: trade
    port: 8080
    tools:
    - name: trade-finance-document-status
      description: Retrieves trade finance document status data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.trade-finance-document-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /trade/finance/document/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: trade-finance-document-status
        method: GET
Open in Framework → View in Fleet → trade-finance-document-status.yml

Generates a bank account statement for a specified period from the core banking system, returning the statement as a downloadable PDF link.

naftiko: '0.5'
info:
  label: Account Statement Generation
  description: Generates a bank account statement for a specified period from the core banking system, returning the statement as a downloadable PDF link.
  tags:
  - banking
  - accounts
  - statements
capability:
  exposes:
  - type: mcp
    namespace: statements
    port: 8080
    tools:
    - name: generate-statement
      description: Generate a bank account statement for a date range.
      inputParameters:
      - name: account_iban
        in: body
        type: string
        description: The customer's IBAN.
      - 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: core-banking.generate-statement
      with:
        iban: '{{account_iban}}'
        from: '{{start_date}}'
        to: '{{end_date}}'
      outputParameters:
      - name: download_url
        type: string
        mapping: $.data.statementUrl
      - name: transaction_count
        type: string
        mapping: $.data.transactionCount
  consumes:
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/v2
    authentication:
      type: bearer
      token: $secrets.core_banking_token
    resources:
    - name: statements
      path: /accounts/{{iban}}/statements
      inputParameters:
      - name: iban
        in: path
      operations:
      - name: generate-statement
        method: POST
Open in Framework → View in Fleet → account-statement-generation.yml

Processes an international wire transfer by screening the beneficiary for sanctions, converting currency via the FX desk, initiating the SWIFT payment, and sending confirmation to the customer.

naftiko: '0.5'
info:
  label: International Wire Transfer Orchestrator
  description: Processes an international wire transfer by screening the beneficiary for sanctions, converting currency via the FX desk, initiating the SWIFT payment, and sending confirmation to the customer.
  tags:
  - payments
  - swift
  - compliance
  - fx
capability:
  exposes:
  - type: mcp
    namespace: intl-wire
    port: 8080
    tools:
    - name: process-international-wire
      description: Given wire details, screen beneficiary, convert currency, initiate SWIFT, and confirm.
      inputParameters:
      - name: debtor_iban
        in: body
        type: string
        description: Debtor IBAN.
      - name: beneficiary_name
        in: body
        type: string
        description: Beneficiary name.
      - name: beneficiary_bic
        in: body
        type: string
        description: Beneficiary bank BIC.
      - name: amount_eur
        in: body
        type: string
        description: Amount in EUR.
      - name: target_currency
        in: body
        type: string
        description: Target currency code.
      steps:
      - name: screen-beneficiary
        type: call
        call: sanctions-api.screen
        with:
          name: '{{beneficiary_name}}'
      - name: convert-currency
        type: call
        call: fx-desk.get-rate
        with:
          from: EUR
          to: '{{target_currency}}'
          amount: '{{amount_eur}}'
      - name: initiate-wire
        type: call
        call: swift-gateway.create-payment
        with:
          debtor_iban: '{{debtor_iban}}'
          beneficiary_name: '{{beneficiary_name}}'
          beneficiary_bic: '{{beneficiary_bic}}'
          amount: '{{convert-currency.converted_amount}}'
          currency: '{{target_currency}}'
  consumes:
  - type: http
    namespace: sanctions-api
    baseUri: https://api.rabobank.nl/internal/sanctions/v1
    authentication:
      type: bearer
      token: $secrets.sanctions_token
    resources:
    - name: screening
      path: /screen
      operations:
      - name: screen
        method: POST
  - type: http
    namespace: fx-desk
    baseUri: https://api.rabobank.nl/internal/fx/v2
    authentication:
      type: bearer
      token: $secrets.fx_token
    resources:
    - name: rates
      path: /rates
      operations:
      - name: get-rate
        method: POST
  - type: http
    namespace: swift-gateway
    baseUri: https://api.rabobank.nl/internal/swift/v2
    authentication:
      type: bearer
      token: $secrets.swift_gateway_token
    resources:
    - name: payments
      path: /mt103
      operations:
      - name: create-payment
        method: POST
Open in Framework → View in Fleet → international-wire-transfer-orchestrator.yml

Retrieves customer credit rating lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Customer Credit Rating Lookup
  description: Retrieves customer credit rating lookup data from the Rabobank agricultural banking systems.
  tags:
  - customer
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-credit-rating-lookup
      description: Retrieves customer credit rating lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.customer-credit-rating-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /customer/credit/rating/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-credit-rating-lookup
        method: GET
Open in Framework → View in Fleet → customer-credit-rating-lookup.yml

Retrieves savings goal progress lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Savings Goal Progress Lookup
  description: Retrieves savings goal progress lookup data from the Rabobank agricultural banking systems.
  tags:
  - savings
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: savings
    port: 8080
    tools:
    - name: savings-goal-progress-lookup
      description: Retrieves savings goal progress lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.savings-goal-progress-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /savings/goal/progress/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: savings-goal-progress-lookup
        method: GET
Open in Framework → View in Fleet → savings-goal-progress-lookup.yml

Orchestrates grain trade settlement pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Grain Trade Settlement Pipeline
  description: Orchestrates grain trade settlement pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - grain
  - rabobank
  - jira
  - teams
  - sap
capability:
  exposes:
  - type: mcp
    namespace: grain
    port: 8080
    tools:
    - name: grain-trade-settlement-pipeline
      description: Orchestrates grain trade settlement pipeline across agricultural 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: sap.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/grain
      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/grain
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/grain
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → grain-trade-settlement-pipeline.yml

Orchestrates crop yield forecasting pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Crop Yield Forecasting Pipeline
  description: Orchestrates crop yield forecasting pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - crop
  - rabobank
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: crop
    port: 8080
    tools:
    - name: crop-yield-forecasting-pipeline
      description: Orchestrates crop yield forecasting pipeline across agricultural 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://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/crop
      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/crop
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/crop
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → crop-yield-forecasting-pipeline.yml

Orchestrates psd2 consent management pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Psd2 Consent Management Pipeline
  description: Orchestrates psd2 consent management pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - psd2
  - rabobank
  - teams
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: psd2
    port: 8080
    tools:
    - name: psd2-consent-management-pipeline
      description: Orchestrates psd2 consent management pipeline across agricultural 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: sap.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/psd2
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/psd2
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/psd2
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → psd2-consent-management-pipeline.yml

Retrieves farm collateral valuation lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Farm Collateral Valuation Lookup
  description: Retrieves farm collateral valuation lookup data from the Rabobank agricultural banking systems.
  tags:
  - farm
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-collateral-valuation-lookup
      description: Retrieves farm collateral valuation lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.farm-collateral-valuation-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /farm/collateral/valuation/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: farm-collateral-valuation-lookup
        method: GET
Open in Framework → View in Fleet → farm-collateral-valuation-lookup.yml

Orchestrates dairy sector risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Dairy Sector Risk Pipeline
  description: Orchestrates dairy sector risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - dairy
  - rabobank
  - jira
  - teams
  - sap
capability:
  exposes:
  - type: mcp
    namespace: dairy
    port: 8080
    tools:
    - name: dairy-sector-risk-pipeline
      description: Orchestrates dairy sector risk pipeline across agricultural 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: sap.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/dairy
      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/dairy
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/dairy
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → dairy-sector-risk-pipeline.yml

Orchestrates liquidity management pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Liquidity Management Pipeline
  description: Orchestrates liquidity management pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - liquidity
  - rabobank
  - confluence
  - bloomberg
  - rabobank
capability:
  exposes:
  - type: mcp
    namespace: liquidity
    port: 8080
    tools:
    - name: liquidity-management-pipeline
      description: Orchestrates liquidity management pipeline across agricultural 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: bloomberg.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: rabobank.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://rabobank.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/liquidity
      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/liquidity
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/liquidity
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → liquidity-management-pipeline.yml

When the transaction monitoring system flags a suspicious transaction, pulls the transaction and customer details, files a report in the compliance system, creates an investigation case in ServiceNow, and alerts the AML team in Slack.

naftiko: '0.5'
info:
  label: Suspicious Transaction Alert Orchestrator
  description: When the transaction monitoring system flags a suspicious transaction, pulls the transaction and customer details, files a report in the compliance system, creates an investigation case in ServiceNow, and alerts the AML team in Slack.
  tags:
  - risk
  - aml
  - compliance
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: aml-monitoring
    port: 8080
    tools:
    - name: process-suspicious-alert
      description: Given a transaction alert ID, pull details, file compliance report, create investigation, and notify AML team.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The transaction monitoring alert identifier.
      steps:
      - name: get-alert
        type: call
        call: txn-monitoring.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: get-customer
        type: call
        call: customer-file.get-customer
        with:
          customer_id: '{{get-alert.customer_id}}'
      - name: file-report
        type: call
        call: compliance-system.create-str
        with:
          alert_id: '{{alert_id}}'
          customer_id: '{{get-alert.customer_id}}'
          transaction_amount: '{{get-alert.amount}}'
          risk_indicators: '{{get-alert.indicators}}'
      - name: create-investigation
        type: call
        call: servicenow.create-case
        with:
          short_description: 'AML Investigation: Alert {{alert_id}}'
          description: 'Customer: {{get-customer.name}}. Amount: EUR {{get-alert.amount}}. Indicators: {{get-alert.indicators}}. STR: {{file-report.str_id}}.'
          assignment_group: AML_Investigations
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: '#aml-alerts'
          text: 'Suspicious alert {{alert_id}}: Customer {{get-customer.name}}, EUR {{get-alert.amount}}. STR filed: {{file-report.str_id}}. Investigation: {{create-investigation.number}}.'
  consumes:
  - type: http
    namespace: txn-monitoring
    baseUri: https://api.rabobank.nl/internal/txn-monitoring/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: customer-file
    baseUri: https://api.rabobank.nl/internal/customer/v2
    authentication:
      type: bearer
      token: $secrets.customer_file_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
  - type: http
    namespace: compliance-system
    baseUri: https://api.rabobank.nl/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: strs
      path: /suspicious-transaction-reports
      operations:
      - name: create-str
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_si_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → suspicious-transaction-alert-orchestrator.yml

Orchestrates customer relationship review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Relationship Review Pipeline
  description: Orchestrates customer relationship review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - rabobank
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-relationship-review-pipeline
      description: Orchestrates customer relationship review pipeline across agricultural 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: rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.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://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-relationship-review-pipeline.yml

Orchestrates agricultural supply chain tracking pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Supply Chain Tracking Pipeline
  description: Orchestrates agricultural supply chain tracking pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - sap
  - confluence
  - bloomberg
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-supply-chain-tracking-pipeline
      description: Orchestrates agricultural supply chain tracking pipeline across agricultural 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: sap.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: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/agricultural
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/agricultural
      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/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-supply-chain-tracking-pipeline.yml

Generates a dairy sector analysis for lending decisions by pulling milk price data from Refinitiv, farm production statistics from CBS (Statistics Netherlands), and Rabobank's internal sector research, then publishes to the advisor portal.

naftiko: '0.5'
info:
  label: Dairy Sector Analysis Orchestrator
  description: Generates a dairy sector analysis for lending decisions by pulling milk price data from Refinitiv, farm production statistics from CBS (Statistics Netherlands), and Rabobank's internal sector research, then publishes to the advisor portal.
  tags:
  - agricultural-lending
  - analytics
  - refinitiv
  - cbs
capability:
  exposes:
  - type: mcp
    namespace: sector-analysis
    port: 8080
    tools:
    - name: generate-dairy-analysis
      description: Given a reporting period, compile dairy market data, farm stats, and internal research into a sector analysis.
      inputParameters:
      - name: period
        in: body
        type: string
        description: Analysis period in YYYY-Q# format.
      steps:
      - name: get-milk-prices
        type: call
        call: refinitiv.get-dairy-prices
        with:
          period: '{{period}}'
      - name: get-production-stats
        type: call
        call: cbs.get-dairy-production
        with:
          period: '{{period}}'
      - name: get-research
        type: call
        call: research-platform.get-sector-note
        with:
          sector: dairy
          period: '{{period}}'
      - name: publish-analysis
        type: call
        call: advisor-portal.publish-analysis
        with:
          sector: dairy
          period: '{{period}}'
          milk_price: '{{get-milk-prices.avg_price}}'
          production_volume: '{{get-production-stats.total_volume}}'
          outlook: '{{get-research.outlook}}'
  consumes:
  - type: http
    namespace: refinitiv
    baseUri: https://api.refinitiv.com/data/pricing/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: dairy
      path: /dairy/prices
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-dairy-prices
        method: GET
  - type: http
    namespace: cbs
    baseUri: https://opendata.cbs.nl/ODataApi/odata/v4
    authentication:
      type: none
    resources:
    - name: dairy-production
      path: /83781NED/TypedDataSet
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-dairy-production
        method: GET
  - type: http
    namespace: research-platform
    baseUri: https://api.rabobank.nl/internal/research/v1
    authentication:
      type: bearer
      token: $secrets.research_token
    resources:
    - name: sector-notes
      path: /sectors/{{sector}}/notes
      inputParameters:
      - name: sector
        in: path
      - name: period
        in: query
      operations:
      - name: get-sector-note
        method: GET
  - type: http
    namespace: advisor-portal
    baseUri: https://api.rabobank.nl/internal/portal/v1
    authentication:
      type: bearer
      token: $secrets.portal_token
    resources:
    - name: analyses
      path: /sector-analyses
      operations:
      - name: publish-analysis
        method: POST
Open in Framework → View in Fleet → dairy-sector-analysis-orchestrator.yml

Processes an agricultural crop insurance claim by verifying the policy, pulling weather data from KNMI to confirm adverse conditions, obtaining satellite imagery from the European Space Agency, and creating the claim in the insurance system.

naftiko: '0.5'
info:
  label: Crop Insurance Claim Processing Orchestrator
  description: Processes an agricultural crop insurance claim by verifying the policy, pulling weather data from KNMI to confirm adverse conditions, obtaining satellite imagery from the European Space Agency, and creating the claim in the insurance system.
  tags:
  - agricultural-lending
  - insurance
  - knmi
  - claims
capability:
  exposes:
  - type: mcp
    namespace: crop-insurance
    port: 8080
    tools:
    - name: process-crop-claim
      description: Given a farmer ID and crop loss details, verify policy, check weather, pull satellite data, and create claim.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer/customer identifier.
      - name: policy_number
        in: body
        type: string
        description: The crop insurance policy number.
      - name: loss_type
        in: body
        type: string
        description: Type of loss (drought, flood, hail, frost, disease).
      - name: loss_date
        in: body
        type: string
        description: Date of loss in YYYY-MM-DD format.
      - name: affected_hectares
        in: body
        type: string
        description: Number of hectares affected.
      steps:
      - name: verify-policy
        type: call
        call: insurance-system.get-policy
        with:
          policy_number: '{{policy_number}}'
      - name: get-weather-data
        type: call
        call: knmi.get-historical-data
        with:
          region: '{{verify-policy.farm_region}}'
          date: '{{loss_date}}'
      - name: get-satellite-imagery
        type: call
        call: esa.get-ndvi-data
        with:
          coordinates: '{{verify-policy.farm_coordinates}}'
          date: '{{loss_date}}'
      - name: create-claim
        type: call
        call: insurance-system.create-claim
        with:
          policy_number: '{{policy_number}}'
          loss_type: '{{loss_type}}'
          loss_date: '{{loss_date}}'
          hectares: '{{affected_hectares}}'
          weather_confirmation: '{{get-weather-data.event_confirmed}}'
          ndvi_score: '{{get-satellite-imagery.ndvi}}'
  consumes:
  - type: http
    namespace: insurance-system
    baseUri: https://api.rabobank.nl/internal/crop-insurance/v1
    authentication:
      type: bearer
      token: $secrets.crop_insurance_token
    resources:
    - name: policies
      path: /policies/{{policy_number}}
      inputParameters:
      - name: policy_number
        in: path
      operations:
      - name: get-policy
        method: GET
    - name: claims
      path: /claims
      operations:
      - name: create-claim
        method: POST
  - type: http
    namespace: knmi
    baseUri: https://api.knmi.nl/open-data/v1
    authentication:
      type: bearer
      token: $secrets.knmi_token
    resources:
    - name: historical
      path: /historical-data
      inputParameters:
      - name: region
        in: query
      - name: date
        in: query
      operations:
      - name: get-historical-data
        method: GET
  - type: http
    namespace: esa
    baseUri: https://scihub.copernicus.eu/dhus/api/v1
    authentication:
      type: basic
      username: $secrets.esa_user
      password: $secrets.esa_password
    resources:
    - name: imagery
      path: /ndvi
      operations:
      - name: get-ndvi-data
        method: POST
Open in Framework → View in Fleet → crop-insurance-claim-processing-orchestrator.yml

Generates a farm equipment financing quote by looking up the equipment specifications and calculating monthly payments based on the equipment value, down payment, and term.

naftiko: '0.5'
info:
  label: Farm Equipment Financing Quote
  description: Generates a farm equipment financing quote by looking up the equipment specifications and calculating monthly payments based on the equipment value, down payment, and term.
  tags:
  - agricultural-lending
  - equipment
  - financing
capability:
  exposes:
  - type: mcp
    namespace: equipment-financing
    port: 8080
    tools:
    - name: get-equipment-quote
      description: Generate a financing quote for farm equipment purchase.
      inputParameters:
      - name: equipment_value
        in: body
        type: string
        description: Equipment purchase value in EUR.
      - name: down_payment
        in: body
        type: string
        description: Down payment amount in EUR.
      - name: term_months
        in: body
        type: string
        description: Financing term in months.
      call: pricing-engine.calculate-equipment-financing
      with:
        value: '{{equipment_value}}'
        down_payment: '{{down_payment}}'
        term: '{{term_months}}'
      outputParameters:
      - name: monthly_payment
        type: string
        mapping: $.data.monthlyPayment
      - name: interest_rate
        type: string
        mapping: $.data.interestRate
      - name: total_cost
        type: string
        mapping: $.data.totalCost
  consumes:
  - type: http
    namespace: pricing-engine
    baseUri: https://api.rabobank.nl/internal/pricing/v2
    authentication:
      type: bearer
      token: $secrets.pricing_engine_token
    resources:
    - name: equipment
      path: /equipment-financing-quotes
      operations:
      - name: calculate-equipment-financing
        method: POST
Open in Framework → View in Fleet → farm-equipment-financing-quote.yml

Orchestrates customer mortgage origination pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Mortgage Origination Pipeline
  description: Orchestrates customer mortgage origination pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-mortgage-origination-pipeline
      description: Orchestrates customer mortgage origination pipeline across agricultural 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://rabobank.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://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-mortgage-origination-pipeline.yml

Orchestrates customer financial review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Financial Review Pipeline
  description: Orchestrates customer financial review pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-financial-review-pipeline
      description: Orchestrates customer financial review pipeline across agricultural 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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: teams-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-financial-review-pipeline.yml

Processes a mortgage application by pulling the customer's income verification from the UWV, checking the property valuation via the Kadaster, running credit scoring, and creating the mortgage offer in the origination system.

naftiko: '0.5'
info:
  label: Mortgage Application Processing Orchestrator
  description: Processes a mortgage application by pulling the customer's income verification from the UWV, checking the property valuation via the Kadaster, running credit scoring, and creating the mortgage offer in the origination system.
  tags:
  - banking
  - mortgage
  - uwv
  - kadaster
capability:
  exposes:
  - type: mcp
    namespace: mortgage
    port: 8080
    tools:
    - name: process-mortgage-application
      description: Given customer and property details, verify income, check property value, score credit, and create offer.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: property_address
        in: body
        type: string
        description: The property address.
      - name: requested_amount
        in: body
        type: string
        description: Requested mortgage amount in EUR.
      steps:
      - name: verify-income
        type: call
        call: uwv.get-income-verification
        with:
          bsn: '{{customer_id}}'
      - name: get-property-value
        type: call
        call: kadaster.get-woz-value
        with:
          address: '{{property_address}}'
      - name: run-credit-check
        type: call
        call: credit-risk-engine.assess-mortgage-risk
        with:
          customer_id: '{{customer_id}}'
          income: '{{verify-income.annual_income}}'
          property_value: '{{get-property-value.woz_value}}'
          loan_amount: '{{requested_amount}}'
      - name: create-offer
        type: call
        call: mortgage-origination.create-offer
        with:
          customer_id: '{{customer_id}}'
          amount: '{{requested_amount}}'
          ltv: '{{run-credit-check.ltv_ratio}}'
          rate: '{{run-credit-check.offered_rate}}'
  consumes:
  - type: http
    namespace: uwv
    baseUri: https://api.uwv.nl/v1
    authentication:
      type: bearer
      token: $secrets.uwv_token
    resources:
    - name: income
      path: /income-verifications
      operations:
      - name: get-income-verification
        method: POST
  - type: http
    namespace: kadaster
    baseUri: https://api.kadaster.nl/v2
    authentication:
      type: bearer
      token: $secrets.kadaster_token
    resources:
    - name: woz
      path: /woz-values
      inputParameters:
      - name: address
        in: query
      operations:
      - name: get-woz-value
        method: GET
  - type: http
    namespace: credit-risk-engine
    baseUri: https://api.rabobank.nl/internal/risk/v2
    authentication:
      type: bearer
      token: $secrets.risk_engine_token
    resources:
    - name: mortgage-risk
      path: /mortgage-risk-assessments
      operations:
      - name: assess-mortgage-risk
        method: POST
  - type: http
    namespace: mortgage-origination
    baseUri: https://api.rabobank.nl/internal/mortgage/v2
    authentication:
      type: bearer
      token: $secrets.mortgage_token
    resources:
    - name: offers
      path: /offers
      operations:
      - name: create-offer
        method: POST
Open in Framework → View in Fleet → mortgage-application-processing-orchestrator.yml

Calculates crop insurance premiums based on farm size, crop type, coverage level, and historical yield data from the pricing engine.

naftiko: '0.5'
info:
  label: Farm Insurance Premium Calculation
  description: Calculates crop insurance premiums based on farm size, crop type, coverage level, and historical yield data from the pricing engine.
  tags:
  - agricultural-lending
  - insurance
  - pricing
capability:
  exposes:
  - type: mcp
    namespace: crop-insurance-pricing
    port: 8080
    tools:
    - name: calculate-crop-premium
      description: Calculate crop insurance premium based on farm and coverage details.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer identifier.
      - name: crop_type
        in: body
        type: string
        description: Crop type.
      - name: hectares
        in: body
        type: string
        description: Number of hectares insured.
      - name: coverage_level
        in: body
        type: string
        description: Coverage level percentage (50-90).
      call: pricing-engine.calculate-crop-premium
      with:
        farmer_id: '{{farmer_id}}'
        crop: '{{crop_type}}'
        hectares: '{{hectares}}'
        coverage: '{{coverage_level}}'
      outputParameters:
      - name: annual_premium
        type: string
        mapping: $.data.annualPremium
      - name: deductible
        type: string
        mapping: $.data.deductible
  consumes:
  - type: http
    namespace: pricing-engine
    baseUri: https://api.rabobank.nl/internal/pricing/v2
    authentication:
      type: bearer
      token: $secrets.pricing_engine_token
    resources:
    - name: crop-premium
      path: /crop-insurance-premiums
      operations:
      - name: calculate-crop-premium
        method: POST
Open in Framework → View in Fleet → farm-insurance-premium-calculation.yml

Retrieves agri commodity futures lookup data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Agri Commodity Futures Lookup
  description: Retrieves agri commodity futures lookup data from the Rabobank agricultural banking systems.
  tags:
  - agri
  - rabobank
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: agri
    port: 8080
    tools:
    - name: agri-commodity-futures-lookup
      description: Retrieves agri commodity futures lookup data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.agri-commodity-futures-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /agri/commodity/futures/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: agri-commodity-futures-lookup
        method: GET
Open in Framework → View in Fleet → agri-commodity-futures-lookup.yml

Creates a PSD2 account access consent for third-party providers, returning the consent ID, allowed access scopes, and expiration date.

naftiko: '0.5'
info:
  label: PSD2 Account Access Consent
  description: Creates a PSD2 account access consent for third-party providers, returning the consent ID, allowed access scopes, and expiration date.
  tags:
  - banking
  - psd2
  - open-banking
capability:
  exposes:
  - type: mcp
    namespace: open-banking
    port: 8080
    tools:
    - name: create-account-consent
      description: Create a PSD2 account access consent for a TPP.
      inputParameters:
      - name: tpp_id
        in: body
        type: string
        description: The third-party provider identifier.
      - name: account_iban
        in: body
        type: string
        description: The customer's IBAN.
      - name: scopes
        in: body
        type: string
        description: Access scopes (balances, transactions, details).
      call: psd2-gateway.create-consent
      with:
        tpp_id: '{{tpp_id}}'
        iban: '{{account_iban}}'
        access_scopes: '{{scopes}}'
      outputParameters:
      - name: consent_id
        type: string
        mapping: $.data.consentId
      - name: expiration
        type: string
        mapping: $.data.expirationDate
  consumes:
  - type: http
    namespace: psd2-gateway
    baseUri: https://api.rabobank.nl/openapi/psd2/v3
    authentication:
      type: bearer
      token: $secrets.psd2_gateway_token
    resources:
    - name: consents
      path: /consents
      operations:
      - name: create-consent
        method: POST
Open in Framework → View in Fleet → psd2-account-access-consent.yml

Orchestrates regulatory stress test pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Regulatory Stress Test Pipeline
  description: Orchestrates regulatory stress test pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - regulatory
  - rabobank
  - bloomberg
  - rabobank
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: regulatory
    port: 8080
    tools:
    - name: regulatory-stress-test-pipeline
      description: Orchestrates regulatory stress test pipeline across agricultural 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: rabobank.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/regulatory
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/regulatory
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/regulatory
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → regulatory-stress-test-pipeline.yml

Retrieves the current interest rate for a business loan from the pricing engine, returning the base rate, spread, all-in rate, and applicable risk premium.

naftiko: '0.5'
info:
  label: Business Loan Interest Rate Check
  description: Retrieves the current interest rate for a business loan from the pricing engine, returning the base rate, spread, all-in rate, and applicable risk premium.
  tags:
  - banking
  - lending
  - pricing
capability:
  exposes:
  - type: mcp
    namespace: lending-rates
    port: 8080
    tools:
    - name: get-business-loan-rate
      description: Look up the current interest rate for a business loan.
      inputParameters:
      - name: loan_type
        in: body
        type: string
        description: Type of business loan (working_capital, term_loan, revolving_credit).
      - name: risk_rating
        in: body
        type: string
        description: The internal risk rating (1-10).
      - name: term_months
        in: body
        type: string
        description: Loan term in months.
      call: pricing-engine.get-rate
      with:
        product_type: '{{loan_type}}'
        risk_rating: '{{risk_rating}}'
        term: '{{term_months}}'
      outputParameters:
      - name: base_rate
        type: string
        mapping: $.data.baseRate
      - name: spread
        type: string
        mapping: $.data.spread
      - name: all_in_rate
        type: string
        mapping: $.data.allInRate
      - name: risk_premium
        type: string
        mapping: $.data.riskPremium
  consumes:
  - type: http
    namespace: pricing-engine
    baseUri: https://api.rabobank.nl/internal/pricing/v2
    authentication:
      type: bearer
      token: $secrets.pricing_engine_token
    resources:
    - name: rates
      path: /business-loan-rates
      operations:
      - name: get-rate
        method: POST
Open in Framework → View in Fleet → business-loan-interest-rate-check.yml

Orchestrates farm succession planning pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Farm Succession Planning Pipeline
  description: Orchestrates farm succession planning pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - farm
  - rabobank
  - rabobank
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-succession-planning-pipeline
      description: Orchestrates farm succession planning pipeline across agricultural 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: rabobank.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: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/farm
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/farm
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/farm
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → farm-succession-planning-pipeline.yml

Tracks carbon credits for farmers participating in Rabobank's sustainability programs by pulling farm emission data, verifying credits on the carbon registry, and updating the farmer's sustainability dashboard in the customer portal.

naftiko: '0.5'
info:
  label: Carbon Credit Tracking Orchestrator
  description: Tracks carbon credits for farmers participating in Rabobank's sustainability programs by pulling farm emission data, verifying credits on the carbon registry, and updating the farmer's sustainability dashboard in the customer portal.
  tags:
  - agricultural-lending
  - sustainability
  - carbon
capability:
  exposes:
  - type: mcp
    namespace: sustainability
    port: 8080
    tools:
    - name: update-carbon-credits
      description: Given a farmer ID, pull emission data, verify credits, and update the sustainability dashboard.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer/customer identifier.
      - name: reporting_period
        in: body
        type: string
        description: Reporting period in YYYY format.
      steps:
      - name: get-emission-data
        type: call
        call: sustainability-platform.get-emissions
        with:
          farmer_id: '{{farmer_id}}'
          year: '{{reporting_period}}'
      - name: verify-credits
        type: call
        call: carbon-registry.verify-credits
        with:
          farmer_id: '{{farmer_id}}'
          emissions_reduced: '{{get-emission-data.co2_reduced_tons}}'
      - name: update-dashboard
        type: call
        call: customer-portal.update-sustainability
        with:
          customer_id: '{{farmer_id}}'
          carbon_credits: '{{verify-credits.verified_credits}}'
          total_reduction: '{{get-emission-data.co2_reduced_tons}}'
  consumes:
  - type: http
    namespace: sustainability-platform
    baseUri: https://api.rabobank.nl/internal/sustainability/v1
    authentication:
      type: bearer
      token: $secrets.sustainability_token
    resources:
    - name: emissions
      path: /farmers/{{farmer_id}}/emissions
      inputParameters:
      - name: farmer_id
        in: path
      - name: year
        in: query
      operations:
      - name: get-emissions
        method: GET
  - type: http
    namespace: carbon-registry
    baseUri: https://api.rabobank.nl/internal/carbon-registry/v1
    authentication:
      type: bearer
      token: $secrets.carbon_registry_token
    resources:
    - name: credits
      path: /verifications
      operations:
      - name: verify-credits
        method: POST
  - type: http
    namespace: customer-portal
    baseUri: https://api.rabobank.nl/internal/portal/v1
    authentication:
      type: bearer
      token: $secrets.portal_token
    resources:
    - name: sustainability
      path: /customers/{{customer_id}}/sustainability
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: update-sustainability
        method: PUT
Open in Framework → View in Fleet → carbon-credit-tracking-orchestrator.yml

Processes a batch payment file by validating the SEPA XML format, screening all beneficiaries for sanctions, and submitting the batch to the payment engine for execution.

naftiko: '0.5'
info:
  label: Batch Payment File Processing
  description: Processes a batch payment file by validating the SEPA XML format, screening all beneficiaries for sanctions, and submitting the batch to the payment engine for execution.
  tags:
  - payments
  - sepa
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: batch-payments
    port: 8080
    tools:
    - name: process-batch-payment
      description: Given a batch payment file, validate format, screen beneficiaries, and submit for execution.
      inputParameters:
      - name: file_reference
        in: body
        type: string
        description: The batch file reference identifier.
      - name: total_amount
        in: body
        type: string
        description: Total batch amount in EUR.
      - name: payment_count
        in: body
        type: string
        description: Number of payments in the batch.
      steps:
      - name: validate-file
        type: call
        call: payment-engine.validate-batch
        with:
          file_reference: '{{file_reference}}'
      - name: screen-beneficiaries
        type: call
        call: sanctions-api.screen-batch
        with:
          file_reference: '{{file_reference}}'
          count: '{{payment_count}}'
      - name: submit-batch
        type: call
        call: payment-engine.execute-batch
        with:
          file_reference: '{{file_reference}}'
          screening_result: '{{screen-beneficiaries.result}}'
  consumes:
  - type: http
    namespace: payment-engine
    baseUri: https://api.rabobank.nl/internal/payments/v3
    authentication:
      type: bearer
      token: $secrets.payment_engine_token
    resources:
    - name: batch-validation
      path: /batches/{{file_reference}}/validate
      inputParameters:
      - name: file_reference
        in: path
      operations:
      - name: validate-batch
        method: POST
    - name: batch-execution
      path: /batches/{{file_reference}}/execute
      inputParameters:
      - name: file_reference
        in: path
      operations:
      - name: execute-batch
        method: POST
  - type: http
    namespace: sanctions-api
    baseUri: https://api.rabobank.nl/internal/sanctions/v1
    authentication:
      type: bearer
      token: $secrets.sanctions_token
    resources:
    - name: batch-screening
      path: /screen-batch
      operations:
      - name: screen-batch
        method: POST
Open in Framework → View in Fleet → batch-payment-file-processing.yml

Retrieves agricultural market outlook report data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Agricultural Market Outlook Report
  description: Retrieves agricultural market outlook report data from the Rabobank agricultural banking systems.
  tags:
  - agricultural
  - rabobank
  - report
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-market-outlook-report
      description: Retrieves agricultural market outlook report data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.agricultural-market-outlook-report
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /agricultural/market/outlook/report/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: agricultural-market-outlook-report
        method: GET
Open in Framework → View in Fleet → agricultural-market-outlook-report.yml

Retrieves current interest rates for savings products from the product catalog, returning rate tier, applicable balance range, and annual percentage yield.

naftiko: '0.5'
info:
  label: Savings Account Interest Rate Lookup
  description: Retrieves current interest rates for savings products from the product catalog, returning rate tier, applicable balance range, and annual percentage yield.
  tags:
  - banking
  - savings
  - rates
capability:
  exposes:
  - type: mcp
    namespace: product-rates
    port: 8080
    tools:
    - name: get-savings-rates
      description: Look up current savings account interest rates by product type.
      inputParameters:
      - name: product_code
        in: body
        type: string
        description: The savings product code.
      call: product-catalog.get-rates
      with:
        product_code: '{{product_code}}'
      outputParameters:
      - name: rate_tiers
        type: string
        mapping: $.data.rateTiers
      - name: base_rate
        type: string
        mapping: $.data.baseRate
  consumes:
  - type: http
    namespace: product-catalog
    baseUri: https://api.rabobank.nl/internal/products/v1
    authentication:
      type: bearer
      token: $secrets.product_catalog_token
    resources:
    - name: rates
      path: /products/{{product_code}}/rates
      inputParameters:
      - name: product_code
        in: path
      operations:
      - name: get-rates
        method: GET
Open in Framework → View in Fleet → savings-account-interest-rate-lookup.yml

Retrieves business account overdraft status data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Business Account Overdraft Status
  description: Retrieves business account overdraft status data from the Rabobank agricultural banking systems.
  tags:
  - business
  - rabobank
  - status
capability:
  exposes:
  - type: mcp
    namespace: business
    port: 8080
    tools:
    - name: business-account-overdraft-status
      description: Retrieves business account overdraft status data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.business-account-overdraft-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /business/account/overdraft/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: business-account-overdraft-status
        method: GET
Open in Framework → View in Fleet → business-account-overdraft-status.yml

Compares available deposit products for a customer based on their balance and term preference, returning product options with rates, minimum balances, and features.

naftiko: '0.5'
info:
  label: Deposit Product Comparison
  description: Compares available deposit products for a customer based on their balance and term preference, returning product options with rates, minimum balances, and features.
  tags:
  - banking
  - savings
  - product
capability:
  exposes:
  - type: mcp
    namespace: product-comparison
    port: 8080
    tools:
    - name: compare-deposit-products
      description: Compare deposit product options based on customer needs.
      inputParameters:
      - name: deposit_amount
        in: body
        type: string
        description: Amount to deposit in EUR.
      - name: term_months
        in: body
        type: string
        description: Desired term in months (0 for demand deposit).
      call: product-catalog.compare-deposits
      with:
        amount: '{{deposit_amount}}'
        term: '{{term_months}}'
      outputParameters:
      - name: products
        type: string
        mapping: $.data.products
  consumes:
  - type: http
    namespace: product-catalog
    baseUri: https://api.rabobank.nl/internal/products/v1
    authentication:
      type: bearer
      token: $secrets.product_catalog_token
    resources:
    - name: comparisons
      path: /deposits/compare
      operations:
      - name: compare-deposits
        method: POST
Open in Framework → View in Fleet → deposit-product-comparison.yml

Orchestrates agricultural portfolio stress test pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Portfolio Stress Test Pipeline
  description: Orchestrates agricultural portfolio stress test pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - confluence
  - bloomberg
  - rabobank
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-portfolio-stress-test-pipeline
      description: Orchestrates agricultural portfolio stress test pipeline across agricultural 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: bloomberg.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: rabobank.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://rabobank.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/agricultural
      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/agricultural
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: rabobank-resource
      path: /api/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-portfolio-stress-test-pipeline.yml

Orchestrates business loan covenant monitoring pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Business Loan Covenant Monitoring Pipeline
  description: Orchestrates business loan covenant monitoring pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - business
  - rabobank
  - teams
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: business
    port: 8080
    tools:
    - name: business-loan-covenant-monitoring-pipeline
      description: Orchestrates business loan covenant monitoring pipeline across agricultural 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: sap.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: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/business
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.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
Open in Framework → View in Fleet → business-loan-covenant-monitoring-pipeline.yml

Creates a credit card transaction dispute in the card management system, documenting the disputed transaction, reason, and amount.

naftiko: '0.5'
info:
  label: Credit Card Transaction Dispute
  description: Creates a credit card transaction dispute in the card management system, documenting the disputed transaction, reason, and amount.
  tags:
  - banking
  - payments
  - disputes
capability:
  exposes:
  - type: mcp
    namespace: card-disputes
    port: 8080
    tools:
    - name: create-dispute
      description: File a credit card transaction dispute.
      inputParameters:
      - name: card_number_last4
        in: body
        type: string
        description: Last 4 digits of the card.
      - name: transaction_id
        in: body
        type: string
        description: The transaction identifier.
      - name: dispute_reason
        in: body
        type: string
        description: Reason (unauthorized, duplicate, not_received, defective).
      - name: amount
        in: body
        type: string
        description: Disputed amount.
      call: card-system.create-dispute
      with:
        card_last4: '{{card_number_last4}}'
        transaction: '{{transaction_id}}'
        reason: '{{dispute_reason}}'
        amount: '{{amount}}'
      outputParameters:
      - name: dispute_id
        type: string
        mapping: $.data.disputeId
      - name: status
        type: string
        mapping: $.data.status
  consumes:
  - type: http
    namespace: card-system
    baseUri: https://api.rabobank.nl/internal/cards/v2
    authentication:
      type: bearer
      token: $secrets.card_system_token
    resources:
    - name: disputes
      path: /disputes
      operations:
      - name: create-dispute
        method: POST
Open in Framework → View in Fleet → credit-card-transaction-dispute.yml

When a customer complaint is received, creates a case in Salesforce Service Cloud, pulls the customer's account and recent transactions from core banking, and sends an acknowledgment email via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Customer Complaint Handling Orchestrator
  description: When a customer complaint is received, creates a case in Salesforce Service Cloud, pulls the customer's account and recent transactions from core banking, and sends an acknowledgment email via Salesforce Marketing Cloud.
  tags:
  - customer-service
  - salesforce
  - core-banking
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: customer-complaints
    port: 8080
    tools:
    - name: handle-complaint
      description: Given customer and complaint details, create case, pull account context, and send acknowledgment.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: complaint_type
        in: body
        type: string
        description: Type of complaint (service, product, fees, fraud).
      - name: description
        in: body
        type: string
        description: Complaint description.
      steps:
      - name: get-customer-account
        type: call
        call: core-banking.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          contact_name: '{{get-customer-account.name}}'
          type: '{{complaint_type}}'
          description: '{{description}}'
          priority: High
      - name: send-acknowledgment
        type: call
        call: sfmc.send-email
        with:
          template: complaint_acknowledgment
          to: '{{get-customer-account.email}}'
          merge_name: '{{get-customer-account.name}}'
          merge_case: '{{create-case.case_number}}'
  consumes:
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/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
  - type: http
    namespace: salesforce
    baseUri: https://rabobank.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: sfmc
    baseUri: https://mc.rabobank.nl/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-complaint-handling-orchestrator.yml

Orchestrates cross border trade finance pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Cross Border Trade Finance Pipeline
  description: Orchestrates cross border trade finance pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - cross
  - rabobank
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cross
    port: 8080
    tools:
    - name: cross-border-trade-finance-pipeline
      description: Orchestrates cross border trade finance pipeline across agricultural 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://rabobank.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/cross
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/cross
      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/cross
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → cross-border-trade-finance-pipeline.yml

Orchestrates agricultural weather risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Agricultural Weather Risk Pipeline
  description: Orchestrates agricultural weather risk pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - agricultural
  - rabobank
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: agricultural
    port: 8080
    tools:
    - name: agricultural-weather-risk-pipeline
      description: Orchestrates agricultural weather risk pipeline across agricultural 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://rabobank.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/agricultural
      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/agricultural
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://rabobank.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/agricultural
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → agricultural-weather-risk-pipeline.yml

Retrieves the status of an agricultural loan application from the loan origination system, returning application stage, requested amount, collateral type, and assigned loan officer.

naftiko: '0.5'
info:
  label: Agricultural Loan Application Status
  description: Retrieves the status of an agricultural loan application from the loan origination system, returning application stage, requested amount, collateral type, and assigned loan officer.
  tags:
  - agricultural-lending
  - loans
  - origination
capability:
  exposes:
  - type: mcp
    namespace: agri-lending
    port: 8080
    tools:
    - name: get-loan-application
      description: Look up an agricultural loan application by application ID.
      inputParameters:
      - name: application_id
        in: body
        type: string
        description: The loan application identifier.
      call: loan-origination.get-application
      with:
        application_id: '{{application_id}}'
      outputParameters:
      - name: stage
        type: string
        mapping: $.data.applicationStage
      - name: requested_amount
        type: string
        mapping: $.data.requestedAmount
      - name: collateral_type
        type: string
        mapping: $.data.collateralType
      - name: loan_officer
        type: string
        mapping: $.data.assignedOfficer
  consumes:
  - type: http
    namespace: loan-origination
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: applications
      path: /applications/{{application_id}}
      inputParameters:
      - name: application_id
        in: path
      operations:
      - name: get-application
        method: GET
Open in Framework → View in Fleet → agricultural-loan-application-status.yml

Assesses agricultural credit risk by pulling farm financial data from the customer file, retrieving crop yield forecasts from the KNMI weather service, checking commodity futures from Refinitiv, and generating a risk score in the credit risk engine.

naftiko: '0.5'
info:
  label: Farm Risk Assessment Orchestrator
  description: Assesses agricultural credit risk by pulling farm financial data from the customer file, retrieving crop yield forecasts from the KNMI weather service, checking commodity futures from Refinitiv, and generating a risk score in the credit risk engine.
  tags:
  - agricultural-lending
  - risk
  - knmi
  - refinitiv
capability:
  exposes:
  - type: mcp
    namespace: agri-risk
    port: 8080
    tools:
    - name: assess-farm-risk
      description: Given a farmer ID and primary crop, pull financials, weather outlook, commodity futures, and compute risk score.
      inputParameters:
      - name: farmer_id
        in: body
        type: string
        description: The farmer/customer identifier.
      - name: primary_crop
        in: body
        type: string
        description: Primary crop type (wheat, corn, potatoes, dairy, sugar_beet).
      - name: region
        in: body
        type: string
        description: Dutch province or region.
      steps:
      - name: get-farm-financials
        type: call
        call: customer-file.get-financials
        with:
          customer_id: '{{farmer_id}}'
      - name: get-weather-outlook
        type: call
        call: knmi.get-forecast
        with:
          region: '{{region}}'
          period: next_90_days
      - name: get-commodity-outlook
        type: call
        call: refinitiv.get-futures
        with:
          commodity: '{{primary_crop}}'
      - name: compute-risk
        type: call
        call: credit-risk-engine.assess-agri-risk
        with:
          customer_id: '{{farmer_id}}'
          revenue: '{{get-farm-financials.annual_revenue}}'
          debt_ratio: '{{get-farm-financials.debt_to_equity}}'
          weather_risk: '{{get-weather-outlook.risk_index}}'
          commodity_outlook: '{{get-commodity-outlook.forward_price}}'
  consumes:
  - type: http
    namespace: customer-file
    baseUri: https://api.rabobank.nl/internal/customer/v2
    authentication:
      type: bearer
      token: $secrets.customer_file_token
    resources:
    - name: financials
      path: /customers/{{customer_id}}/financials
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-financials
        method: GET
  - type: http
    namespace: knmi
    baseUri: https://api.knmi.nl/open-data/v1
    authentication:
      type: bearer
      token: $secrets.knmi_token
    resources:
    - name: forecasts
      path: /forecasts
      inputParameters:
      - name: region
        in: query
      - name: period
        in: query
      operations:
      - name: get-forecast
        method: GET
  - type: http
    namespace: refinitiv
    baseUri: https://api.refinitiv.com/data/pricing/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: futures
      path: /instruments/{{commodity}}/futures
      inputParameters:
      - name: commodity
        in: path
      operations:
      - name: get-futures
        method: GET
  - type: http
    namespace: credit-risk-engine
    baseUri: https://api.rabobank.nl/internal/risk/v2
    authentication:
      type: bearer
      token: $secrets.risk_engine_token
    resources:
    - name: assessments
      path: /agri-risk-assessments
      operations:
      - name: assess-agri-risk
        method: POST
Open in Framework → View in Fleet → farm-risk-assessment-orchestrator.yml

Processes grain storage financing by verifying the grain quantity with the warehouse receipt system, calculating the loan amount based on current commodity prices from Refinitiv, and creating the financing arrangement.

naftiko: '0.5'
info:
  label: Grain Storage Financing Orchestrator
  description: Processes grain storage financing by verifying the grain quantity with the warehouse receipt system, calculating the loan amount based on current commodity prices from Refinitiv, and creating the financing arrangement.
  tags:
  - agricultural-lending
  - commodity
  - refinitiv
capability:
  exposes:
  - type: mcp
    namespace: commodity-financing
    port: 8080
    tools:
    - name: finance-grain-storage
      description: Given warehouse receipt and grain details, verify stock, price, and create financing.
      inputParameters:
      - name: warehouse_receipt_id
        in: body
        type: string
        description: The warehouse receipt identifier.
      - name: commodity
        in: body
        type: string
        description: Commodity type (wheat, corn, barley).
      - name: quantity_tons
        in: body
        type: string
        description: Quantity in metric tons.
      steps:
      - name: verify-receipt
        type: call
        call: warehouse-system.verify-receipt
        with:
          receipt_id: '{{warehouse_receipt_id}}'
      - name: get-price
        type: call
        call: refinitiv.get-commodity-price
        with:
          ric: '{{commodity}}'
      - name: create-financing
        type: call
        call: loan-origination.create-commodity-facility
        with:
          receipt_id: '{{warehouse_receipt_id}}'
          commodity: '{{commodity}}'
          quantity: '{{quantity_tons}}'
          market_value: '{{get-price.spotPrice}}'
  consumes:
  - type: http
    namespace: warehouse-system
    baseUri: https://api.rabobank.nl/internal/warehouse/v1
    authentication:
      type: bearer
      token: $secrets.warehouse_token
    resources:
    - name: receipts
      path: /receipts/{{receipt_id}}/verify
      inputParameters:
      - name: receipt_id
        in: path
      operations:
      - name: verify-receipt
        method: GET
  - type: http
    namespace: refinitiv
    baseUri: https://api.refinitiv.com/data/pricing/v1
    authentication:
      type: bearer
      token: $secrets.refinitiv_token
    resources:
    - name: pricing
      path: /instruments/{{ric}}/pricing
      inputParameters:
      - name: ric
        in: path
      operations:
      - name: get-commodity-price
        method: GET
  - type: http
    namespace: loan-origination
    baseUri: https://api.rabobank.nl/internal/lending/v2
    authentication:
      type: bearer
      token: $secrets.loan_origination_token
    resources:
    - name: commodity-facilities
      path: /commodity-facilities
      operations:
      - name: create-commodity-facility
        method: POST
Open in Framework → View in Fleet → grain-storage-financing-orchestrator.yml

Orchestrates customer kyc refresh pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Kyc Refresh Pipeline
  description: Orchestrates customer kyc refresh pipeline across agricultural banking systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - rabobank
  - teams
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-kyc-refresh-pipeline
      description: Orchestrates customer kyc refresh pipeline across agricultural 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: sap.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: sap
    baseUri: https://rabobank-erp.s4hana.ondemand.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: sap-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://rabobank.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
Open in Framework → View in Fleet → customer-kyc-refresh-pipeline.yml

Retrieves a SEPA direct debit mandate from the mandate management system, returning mandate status, creditor name, maximum amount, and mandate reference.

naftiko: '0.5'
info:
  label: Direct Debit Mandate Lookup
  description: Retrieves a SEPA direct debit mandate from the mandate management system, returning mandate status, creditor name, maximum amount, and mandate reference.
  tags:
  - payments
  - sepa
  - mandates
capability:
  exposes:
  - type: mcp
    namespace: mandates
    port: 8080
    tools:
    - name: get-mandate
      description: Look up a SEPA direct debit mandate by mandate reference.
      inputParameters:
      - name: mandate_reference
        in: body
        type: string
        description: The SEPA mandate reference.
      call: mandate-system.get-mandate
      with:
        reference: '{{mandate_reference}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.mandateStatus
      - name: creditor_name
        type: string
        mapping: $.data.creditorName
      - name: max_amount
        type: string
        mapping: $.data.maximumAmount
      - name: scheme
        type: string
        mapping: $.data.scheme
  consumes:
  - type: http
    namespace: mandate-system
    baseUri: https://api.rabobank.nl/internal/mandates/v2
    authentication:
      type: bearer
      token: $secrets.mandate_token
    resources:
    - name: mandates
      path: /mandates/{{reference}}
      inputParameters:
      - name: reference
        in: path
      operations:
      - name: get-mandate
        method: GET
Open in Framework → View in Fleet → direct-debit-mandate-lookup.yml

Opens a new business bank account by verifying the company through KvK, running KYC screening, creating the account in the core banking system, and sending the welcome pack via Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: New Business Account Opening Orchestrator
  description: Opens a new business bank account by verifying the company through KvK, running KYC screening, creating the account in the core banking system, and sending the welcome pack via Salesforce Marketing Cloud.
  tags:
  - banking
  - onboarding
  - kvk
  - core-banking
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: business-onboarding
    port: 8080
    tools:
    - name: open-business-account
      description: Given a KvK number and authorized representative, verify company, run KYC, create account, and send welcome.
      inputParameters:
      - name: kvk_number
        in: body
        type: string
        description: The Dutch Chamber of Commerce (KvK) number.
      - name: representative_name
        in: body
        type: string
        description: Name of the authorized representative.
      - name: email
        in: body
        type: string
        description: Business email address.
      - name: account_type
        in: body
        type: string
        description: Account type (current, savings, combined).
      steps:
      - name: verify-company
        type: call
        call: kvk.get-company
        with:
          kvk_number: '{{kvk_number}}'
      - name: run-kyc
        type: call
        call: compliance-system.quick-kyc
        with:
          company_name: '{{verify-company.company_name}}'
          kvk_number: '{{kvk_number}}'
          representative: '{{representative_name}}'
      - name: create-account
        type: call
        call: core-banking.create-business-account
        with:
          kvk_number: '{{kvk_number}}'
          company_name: '{{verify-company.company_name}}'
          account_type: '{{account_type}}'
          kyc_status: '{{run-kyc.status}}'
      - name: send-welcome
        type: call
        call: sfmc.send-email
        with:
          template: business_welcome
          to: '{{email}}'
          merge_company: '{{verify-company.company_name}}'
          merge_iban: '{{create-account.iban}}'
  consumes:
  - type: http
    namespace: kvk
    baseUri: https://api.kvk.nl/api/v1
    authentication:
      type: bearer
      token: $secrets.kvk_token
    resources:
    - name: companies
      path: /basisprofielen/{{kvk_number}}
      inputParameters:
      - name: kvk_number
        in: path
      operations:
      - name: get-company
        method: GET
  - type: http
    namespace: compliance-system
    baseUri: https://api.rabobank.nl/internal/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: kyc
      path: /quick-kyc
      operations:
      - name: quick-kyc
        method: POST
  - type: http
    namespace: core-banking
    baseUri: https://api.rabobank.nl/internal/cbs/v2
    authentication:
      type: bearer
      token: $secrets.core_banking_token
    resources:
    - name: accounts
      path: /business-accounts
      operations:
      - name: create-business-account
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mc.rabobank.nl/rest
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: emails
      path: /messaging/v1/email/messages
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → new-business-account-opening-orchestrator.yml

Retrieves farm subsidy eligibility check data from the Rabobank agricultural banking systems.

naftiko: '0.5'
info:
  label: Farm Subsidy Eligibility Check
  description: Retrieves farm subsidy eligibility check data from the Rabobank agricultural banking systems.
  tags:
  - farm
  - rabobank
  - check
capability:
  exposes:
  - type: mcp
    namespace: farm
    port: 8080
    tools:
    - name: farm-subsidy-eligibility-check
      description: Retrieves farm subsidy eligibility check data from the Rabobank agricultural banking systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: rabobank.farm-subsidy-eligibility-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: rabobank
    baseUri: https://api.rabobank.nl/v2
    authentication:
      type: bearer
      token: $secrets.rabobank_api_token
    resources:
    - name: resource
      path: /farm/subsidy/eligibility/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: farm-subsidy-eligibility-check
        method: GET
Open in Framework → View in Fleet → farm-subsidy-eligibility-check.yml

Retrieves the bank's regulatory capital metrics from the risk reporting system, returning CET1 ratio, total capital ratio, leverage ratio, and risk-weighted assets.

naftiko: '0.5'
info:
  label: Regulatory Capital Report
  description: Retrieves the bank's regulatory capital metrics from the risk reporting system, returning CET1 ratio, total capital ratio, leverage ratio, and risk-weighted assets.
  tags:
  - risk
  - compliance
  - regulatory
capability:
  exposes:
  - type: mcp
    namespace: regulatory-capital
    port: 8080
    tools:
    - name: get-capital-metrics
      description: Retrieve regulatory capital metrics from the risk reporting system.
      inputParameters:
      - name: reporting_date
        in: body
        type: string
        description: Reporting date in YYYY-MM-DD format.
      call: risk-reporting.get-capital
      with:
        date: '{{reporting_date}}'
      outputParameters:
      - name: cet1_ratio
        type: string
        mapping: $.data.cet1Ratio
      - name: total_capital_ratio
        type: string
        mapping: $.data.totalCapitalRatio
      - name: leverage_ratio
        type: string
        mapping: $.data.leverageRatio
      - name: rwa
        type: string
        mapping: $.data.riskWeightedAssets
  consumes:
  - type: http
    namespace: risk-reporting
    baseUri: https://api.rabobank.nl/internal/risk-reporting/v2
    authentication:
      type: bearer
      token: $secrets.risk_reporting_token
    resources:
    - name: capital
      path: /capital-metrics
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-capital
        method: GET
Open in Framework → View in Fleet → regulatory-capital-report.yml

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
Open in Framework → View in Fleet → risk-score-calculation-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → scotia-rewards-catalog-lookup.yml

Retrieves LinkedIn job posting status.

naftiko: '0.5'
info:
  label: LinkedIn Recruitment Status
  description: Retrieves LinkedIn job posting status.
  tags:
  - recruitment
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: recruitment
    port: 8080
    tools:
    - name: get-job-posting-status
      description: Look up a LinkedIn job posting.
      inputParameters:
      - name: job_posting_id
        in: body
        type: string
        description: The LinkedIn job posting ID.
      call: linkedin.get-job-posting
      with:
        job_posting_id: '{{job_posting_id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-postings
      path: /jobPostings/{{job_posting_id}}
      inputParameters:
      - name: job_posting_id
        in: path
      operations:
      - name: get-job-posting
        method: GET
Open in Framework → View in Fleet → linkedin-recruitment-status.yml

Orchestrates customer cross sell pipeline across 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
Open in Framework → View in Fleet → customer-cross-sell-pipeline.yml

Generates release notes from Jira issues and publishes to Confluence.

naftiko: '0.5'
info:
  label: Jira to Confluence Release Notes
  description: Generates release notes from Jira issues and publishes to Confluence.
  tags:
  - engineering
  - release-management
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-mgmt
    port: 8080
    tools:
    - name: generate-release-notes
      description: Fetch 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
Open in Framework → View in Fleet → jira-to-confluence-release-notes.yml

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

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
Open in Framework → View in Fleet → business-account-cash-flow-summary.yml

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
Open in Framework → View in Fleet → figma-design-file-viewer.yml

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
Open in Framework → View in Fleet → google-analytics-digital-banking-funnel.yml

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

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
Open in Framework → View in Fleet → branch-atm-health-monitor.yml

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
Open in Framework → View in Fleet → esg-portfolio-screening-pipeline.yml

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
Open in Framework → View in Fleet → real-time-payment-monitoring-pipeline.yml

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

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
Open in Framework → View in Fleet → mortgage-application-decisioning-pipeline.yml

Fetches active sprint details from Jira.

naftiko: '0.5'
info:
  label: Jira Sprint Tracker
  description: Fetches active sprint details from Jira.
  tags:
  - engineering
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: engineering-pm
    port: 8080
    tools:
    - name: get-sprint-status
      description: Retrieve active sprint 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
Open in Framework → View in Fleet → jira-sprint-tracker.yml

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

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

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
Open in Framework → View in Fleet → interac-e-transfer-status.yml

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
Open in Framework → View in Fleet → auto-loan-payment-schedule.yml

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

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
Open in Framework → View in Fleet → tableau-risk-analytics-dashboard.yml

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
Open in Framework → View in Fleet → anti-fraud-transaction-monitoring-pipeline.yml

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
Open in Framework → View in Fleet → investment-portfolio-allocation.yml

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
Open in Framework → View in Fleet → palo-alto-firewall-rule-audit.yml

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
Open in Framework → View in Fleet → market-risk-var-calculation-pipeline.yml

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
Open in Framework → View in Fleet → correspondent-banking-compliance-pipeline.yml

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
Open in Framework → View in Fleet → stress-testing-scenario-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → line-of-credit-utilization.yml

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
Open in Framework → View in Fleet → mobile-banking-incident-pipeline.yml

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
Open in Framework → View in Fleet → wealth-advisor-availability.yml

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
Open in Framework → View in Fleet → informatica-data-integration-monitor.yml

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
Open in Framework → View in Fleet → microsoft-teams-channel-notifier.yml

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
Open in Framework → View in Fleet → looker-risk-analytics-dashboard.yml

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
Open in Framework → View in Fleet → digital-banking-feature-rollout-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → azure-devops-build-status.yml

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
Open in Framework → View in Fleet → postman-api-test-runner.yml

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

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

Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task.

naftiko: '0.5'
info:
  label: Expense Report Review Pipeline
  description: Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task.
  tags:
  - finance
  - expense
  - sap-concur
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: expense-review
    port: 8080
    tools:
    - name: review-expense-report
      description: Validate 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
Open in Framework → View in Fleet → expense-report-review-pipeline.yml

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
Open in Framework → View in Fleet → sailpoint-access-review-pipeline.yml

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
Open in Framework → View in Fleet → mobile-deposit-limit-check.yml

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
Open in Framework → View in Fleet → cloudflare-cdn-performance.yml

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
Open in Framework → View in Fleet → solarwinds-network-health.yml

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
Open in Framework → View in Fleet → new-relic-application-performance.yml

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
Open in Framework → View in Fleet → credit-card-rewards-balance.yml

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

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

Orchestrates customer identity verification pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Identity Verification Pipeline
  description: Orchestrates customer identity verification pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - scotiabank
  - bloomberg
  - scotiabank
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-identity-verification-pipeline
      description: Orchestrates customer identity verification 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/customer
      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/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-identity-verification-pipeline.yml

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
Open in Framework → View in Fleet → operational-risk-incident-pipeline.yml

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
Open in Framework → View in Fleet → customer-digital-engagement-score.yml

Retrieves latest GitLab CI pipeline status.

naftiko: '0.5'
info:
  label: GitLab CI Pipeline Status
  description: Retrieves latest GitLab CI pipeline status.
  tags:
  - ci-cd
  - engineering
  - gitlab
capability:
  exposes:
  - type: mcp
    namespace: gitlab-ci
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Look up latest GitLab pipeline.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: GitLab project ID.
      call: gitlab.get-latest-pipeline
      with:
        project_id: '{{project_id}}'
  consumes:
  - type: http
    namespace: gitlab
    baseUri: https://gitlab.scotiabank.com/api/v4
    authentication:
      type: bearer
      token: $secrets.gitlab_token
    resources:
    - name: pipelines
      path: /projects/{{project_id}}/pipelines?per_page=1
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: get-latest-pipeline
        method: GET
Open in Framework → View in Fleet → gitlab-ci-pipeline-status.yml

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
Open in Framework → View in Fleet → investment-trade-settlement-pipeline.yml

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

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
Open in Framework → View in Fleet → cybersecurity-threat-intelligence-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → regulatory-capital-calculation-pipeline.yml

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

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
Open in Framework → View in Fleet → wealth-client-review-pipeline.yml

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

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
Open in Framework → View in Fleet → snowflake-data-warehouse-usage.yml

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

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
Open in Framework → View in Fleet → gic-rate-comparison.yml

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
Open in Framework → View in Fleet → open-banking-api-pipeline.yml

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

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
Open in Framework → View in Fleet → fraud-alert-investigation-pipeline.yml

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

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

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
Open in Framework → View in Fleet → investment-trade-execution-notifier.yml

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
Open in Framework → View in Fleet → business-loan-origination-pipeline.yml

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
Open in Framework → View in Fleet → workday-compensation-review.yml

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

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
Open in Framework → View in Fleet → aml-case-investigation-pipeline.yml

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
Open in Framework → View in Fleet → credit-risk-score-lookup.yml

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

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
Open in Framework → View in Fleet → salesforce-relationship-manager-lookup.yml

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

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
Open in Framework → View in Fleet → trade-settlement-reconciliation-orchestrator.yml

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

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

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
Open in Framework → View in Fleet → trade-document-verification-orchestrator.yml

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
Open in Framework → View in Fleet → client-experience-optimization-pipeline.yml

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

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

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

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
Open in Framework → View in Fleet → interest-rate-curve-builder.yml

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

Retrieves a travel expense report from SAP Concur by report ID.

naftiko: '0.5'
info:
  label: SAP Concur Travel Expense Lookup
  description: Retrieves a travel expense report from SAP Concur by report ID.
  tags:
  - finance
  - 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
Open in Framework → View in Fleet → sap-concur-travel-expense-lookup.yml

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
Open in Framework → View in Fleet → corporate-client-onboarding-pipeline.yml

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

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

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
Open in Framework → View in Fleet → trade-finance-letter-of-credit-orchestrator.yml

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

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

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
Open in Framework → View in Fleet → digital-banking-channel-analytics.yml

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
Open in Framework → View in Fleet → corporate-loan-facility-lookup.yml

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
Open in Framework → View in Fleet → trade-finance-guarantee-status.yml

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

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
Open in Framework → View in Fleet → new-relic-application-monitor.yml

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
Open in Framework → View in Fleet → sharepoint-policy-document-retrieval.yml

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
Open in Framework → View in Fleet → liquidity-position-calculator.yml

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

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

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
Open in Framework → View in Fleet → cybersecurity-threat-response-pipeline.yml

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
Open in Framework → View in Fleet → aml-transaction-surveillance-pipeline.yml

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
Open in Framework → View in Fleet → fraud-detection-alert-orchestrator.yml

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
Open in Framework → View in Fleet → sap-s-4hana-purchase-order-status.yml

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
Open in Framework → View in Fleet → supply-chain-finance-program-lookup.yml

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
Open in Framework → View in Fleet → sustainable-finance-framework-pipeline.yml

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
Open in Framework → View in Fleet → wealth-management-portfolio-lookup.yml

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
Open in Framework → View in Fleet → azure-databricks-risk-model-execution.yml

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
Open in Framework → View in Fleet → apigee-api-gateway-analytics.yml

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

Searches Splunk for security events matching specified criteria and returns matching log entries.

naftiko: '0.5'
info:
  label: Splunk Security Event Lookup
  description: Searches Splunk for security events matching specified criteria and returns matching log entries.
  tags:
  - security
  - splunk
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: security-monitoring
    port: 8080
    tools:
    - name: search-security-events
      description: Search Splunk for security events matching a query.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: The Splunk search query (SPL).
      - name: time_range
        in: body
        type: string
        description: The time range (e.g., -24h, -7d).
      call: splunk.search
      with:
        query: '{{search_query}}'
        earliest_time: '{{time_range}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.sc.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-security-event-lookup.yml

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
Open in Framework → View in Fleet → fx-forward-contract-status.yml

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
Open in Framework → View in Fleet → private-banking-portfolio-pipeline.yml

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
Open in Framework → View in Fleet → sanctions-screening-enhancement-pipeline.yml

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
Open in Framework → View in Fleet → api-marketplace-governance-pipeline.yml

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
Open in Framework → View in Fleet → fx-trading-risk-monitoring-pipeline.yml

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
Open in Framework → View in Fleet → corporate-card-reconciliation-pipeline.yml

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
Open in Framework → View in Fleet → aml-transaction-monitoring-alert-handler.yml

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
Open in Framework → View in Fleet → islamic-banking-compliance-pipeline.yml

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
Open in Framework → View in Fleet → linkedin-corporate-page-publisher.yml

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

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

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

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

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
Open in Framework → View in Fleet → loan-covenant-compliance-pipeline.yml

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
Open in Framework → View in Fleet → correspondent-bank-directory-lookup.yml

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
Open in Framework → View in Fleet → whatsapp-client-notification-sender.yml

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

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}}&quote={{quote}}
      inputParameters:
      - name: base
        in: query
      - name: quote
        in: query
      operations:
      - name: get-rate
        method: GET
Open in Framework → View in Fleet → fx-rate-lookup.yml

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
Open in Framework → View in Fleet → cash-management-sweep-status.yml

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
Open in Framework → View in Fleet → private-banking-client-summary.yml

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
Open in Framework → View in Fleet → daily-p-l-report-orchestrator.yml

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
Open in Framework → View in Fleet → correspondent-banking-fee-lookup.yml

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

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
Open in Framework → View in Fleet → real-time-payment-processing.yml

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
Open in Framework → View in Fleet → tanium-endpoint-security-status.yml

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
Open in Framework → View in Fleet → trade-finance-digitization-pipeline.yml

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

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
Open in Framework → View in Fleet → microsoft-sentinel-threat-detection.yml

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
Open in Framework → View in Fleet → operational-resilience-testing-pipeline.yml

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
Open in Framework → View in Fleet → corporate-loan-origination-orchestrator.yml

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
Open in Framework → View in Fleet → trade-receivable-discounting-status.yml

Searches the Confluence policy knowledge base for compliance and risk management documentation.

naftiko: '0.5'
info:
  label: Confluence Policy Document Search
  description: Searches the Confluence policy knowledge base for compliance and risk management documentation.
  tags:
  - compliance
  - confluence
  - knowledge-management
capability:
  exposes:
  - type: mcp
    namespace: policy-docs
    port: 8080
    tools:
    - name: search-policy-documents
      description: Search Confluence for policy and compliance documents.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search query.
      call: confluence.search
      with:
        cql: space=POLICIES AND text~"{{query}}"
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://sc.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
Open in Framework → View in Fleet → confluence-policy-document-search.yml

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
Open in Framework → View in Fleet → treasury-cash-pool-balance.yml

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
Open in Framework → View in Fleet → correspondent-banking-review-pipeline.yml

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
Open in Framework → View in Fleet → corporate-lending-origination-pipeline.yml

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

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
Open in Framework → View in Fleet → corporate-card-program-summary.yml

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
Open in Framework → View in Fleet → supply-chain-finance-onboarding-pipeline.yml

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
Open in Framework → View in Fleet → trade-settlement-exception-pipeline.yml

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
Open in Framework → View in Fleet → trade-finance-shipment-status.yml

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

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

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

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
Open in Framework → View in Fleet → loan-syndication-participant-lookup.yml

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

Verifies a Mastercard transaction by reference ID, returning authorization status, merchant details, and amount for fraud review teams.

naftiko: '0.5'
info:
  label: Mastercard Transaction Verification
  description: Verifies a Mastercard transaction by reference ID, returning authorization status, merchant details, and amount for fraud review teams.
  tags:
  - payments
  - fraud-detection
  - mastercard
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: verify-transaction
      description: Verify a Mastercard transaction by reference ID.
      inputParameters:
      - name: transaction_ref
        in: body
        type: string
        description: The Mastercard transaction reference ID.
      call: mastercard.get-transaction
      with:
        transaction_ref: '{{transaction_ref}}'
      outputParameters:
      - name: auth_status
        type: string
        mapping: $.transaction.authorizationStatus
      - name: amount
        type: number
        mapping: $.transaction.amount
      - name: merchant_name
        type: string
        mapping: $.transaction.merchant.name
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://api.mastercard.com/fraud/v2
    authentication:
      type: oauth1
      consumer_key: $secrets.mastercard_consumer_key
      signing_key: $secrets.mastercard_signing_key
    resources:
    - name: transactions
      path: /transactions/{{transaction_ref}}
      inputParameters:
      - name: transaction_ref
        in: path
      operations:
      - name: get-transaction
        method: GET
Open in Framework → View in Fleet → mastercard-transaction-verification.yml

Retrieves finance operational data for workflow 9.

naftiko: '0.5'
info:
  label: Finance Data Query 9
  description: Retrieves finance operational data for workflow 9.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-9
      description: Query finance data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.ubs.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → finance-data-query-9.yml

Retrieves the latest request-for-quote pricing for a fixed income security on Tradeweb, used by bond trading desks.

naftiko: '0.5'
info:
  label: Tradeweb RFQ Price Check
  description: Retrieves the latest request-for-quote pricing for a fixed income security on Tradeweb, used by bond trading desks.
  tags:
  - trading
  - fixed-income
  - tradeweb
capability:
  exposes:
  - type: mcp
    namespace: fixed-income-trading
    port: 8080
    tools:
    - name: get-rfq-price
      description: Fetch latest Tradeweb RFQ pricing for a bond by ISIN.
      inputParameters:
      - name: isin
        in: body
        type: string
        description: The ISIN of the fixed income security.
      call: tradeweb.get-rfq
      with:
        isin: '{{isin}}'
      outputParameters:
      - name: bid_price
        type: number
        mapping: $.rfq.bidPrice
      - name: ask_price
        type: number
        mapping: $.rfq.askPrice
      - name: mid_yield
        type: number
        mapping: $.rfq.midYield
  consumes:
  - type: http
    namespace: tradeweb
    baseUri: https://api.tradeweb.com/v2
    authentication:
      type: bearer
      token: $secrets.tradeweb_token
    resources:
    - name: rfqs
      path: /rfq/{{isin}}
      inputParameters:
      - name: isin
        in: path
      operations:
      - name: get-rfq
        method: GET
Open in Framework → View in Fleet → tradeweb-rfq-price-check.yml

On new compliance regulation release, identifies affected employees from Workday, enrolls them in Pluralsight training courses, tracks completion in ServiceNow, and notifies managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Compliance Training Enrollment Pipeline
  description: On new compliance regulation release, identifies affected employees from Workday, enrolls them in Pluralsight training courses, tracks completion in ServiceNow, and notifies managers via Microsoft Teams.
  tags:
  - compliance
  - training
  - workday
  - pluralsight
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: enroll-compliance-training
      description: Enroll employees in mandatory compliance training, create a tracking task, and notify the department manager.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department code for affected employees.
      - name: course_id
        in: body
        type: string
        description: The Pluralsight course identifier.
      - name: regulation_name
        in: body
        type: string
        description: Name of the compliance regulation.
      - name: manager_email
        in: body
        type: string
        description: The department manager email.
      steps:
      - name: get-employees
        type: call
        call: workday.get-department-workers
        with:
          department: '{{department}}'
      - name: enroll-course
        type: call
        call: pluralsight.enroll-users
        with:
          course_id: '{{course_id}}'
          user_emails: '{{get-employees.email_list}}'
      - name: create-tracker
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Compliance training: {{regulation_name}} — {{department}}'
          description: 'Enrolled {{get-employees.count}} employees in Pluralsight course {{course_id}}. Regulation: {{regulation_name}}. Deadline: 30 days.'
          assigned_group: Compliance_Training
          category: mandatory_training
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{manager_email}}'
          text: 'Compliance training assigned: {{regulation_name}}. {{get-employees.count}} team members enrolled in course {{course_id}}. Tracker: {{create-tracker.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: department-workers
      path: /workers?department={{department}}
      inputParameters:
      - name: department
        in: query
      operations:
      - name: get-department-workers
        method: GET
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: enrollments
      path: /courses/{{course_id}}/enrollments
      inputParameters:
      - name: course_id
        in: path
      operations:
      - name: enroll-users
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → compliance-training-enrollment-pipeline.yml

Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 8
  description: Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-008
      description: Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-8.yml

Retrieves the current general ledger account balance from SAP S/4HANA for a given company code and GL account, used by finance and treasury teams.

naftiko: '0.5'
info:
  label: SAP General Ledger Balance
  description: Retrieves the current general ledger account balance from SAP S/4HANA for a given company code and GL account, used by finance and treasury teams.
  tags:
  - finance
  - accounting
  - sap
capability:
  exposes:
  - type: mcp
    namespace: finance-gl
    port: 8080
    tools:
    - name: get-gl-balance
      description: Fetch the GL account balance from SAP by company code and account number.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: The SAP company code (e.g. UB01).
      - name: gl_account
        in: body
        type: string
        description: The general ledger account number.
      call: sap.get-gl-balance
      with:
        company_code: '{{company_code}}'
        gl_account: '{{gl_account}}'
      outputParameters:
      - name: balance
        type: number
        mapping: $.d.EndingBalanceAmtInCoCodeCrcy
      - name: currency
        type: string
        mapping: $.d.CompanyCodeCurrency
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_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: gl-accounts
      path: /A_GLAccountBalance(CompanyCode='{{company_code}}',GLAccount='{{gl_account}}')
      inputParameters:
      - name: company_code
        in: path
      - name: gl_account
        in: path
      operations:
      - name: get-gl-balance
        method: GET
Open in Framework → View in Fleet → sap-general-ledger-balance.yml

Sends a notification to a Slack channel.

naftiko: '0.5'
info:
  label: Slack Notification Publisher
  description: Sends a notification to a Slack channel.
  tags:
  - communications
  - slack
capability:
  exposes:
  - type: mcp
    namespace: communications
    port: 8080
    tools:
    - name: get-slack
      description: Sends a notification to a Slack channel.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The slack notification publisher identifier.
      call: communications-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: communications-api
    baseUri: https://api.ubs.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: slack
      path: /slack/notification/publisher/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-slack
        method: GET
Open in Framework → View in Fleet → slack-notification-publisher.yml

Searches UBS Confluence for a knowledge article by keyword, returning page title, URL, and excerpt for internal support workflows.

naftiko: '0.5'
info:
  label: Confluence Knowledge Article Retrieval
  description: Searches UBS Confluence for a knowledge article by keyword, returning page title, URL, and excerpt for internal support workflows.
  tags:
  - knowledge-management
  - support
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: search-articles
      description: Search Confluence for knowledge articles matching a query string.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search query for Confluence.
      call: confluence.search
      with:
        query: '{{query}}'
      outputParameters:
      - name: results
        type: array
        mapping: $.results
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://ubs.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: search
      path: /search?cql=text~"{{query}}"
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-article-retrieval.yml

Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.

naftiko: '0.5'
info:
  label: Executive Dashboard Refresh Orchestrator
  description: Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
  tags:
  - analytics
  - power-bi
  - business
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: run-executive-dashboard-refresh-orchestrator
      description: Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → executive-dashboard-refresh-orchestrator.yml

Retrieves the risk profile for a client.

naftiko: '0.5'
info:
  label: Client Risk Profile Lookup
  description: Retrieves the risk profile for a client.
  tags:
  - risk
  - wealth-management
capability:
  exposes:
  - type: mcp
    namespace: risk
    port: 8080
    tools:
    - name: get-client
      description: Retrieves the risk profile for a client.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The client risk profile lookup identifier.
      call: risk-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: risk-api
    baseUri: https://api.ubs.com/risk/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: client
      path: /client/risk/profile/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-client
        method: GET
Open in Framework → View in Fleet → client-risk-profile-lookup.yml

Retrieves a Confluence wiki page.

naftiko: '0.5'
info:
  label: Confluence Page Viewer
  description: Retrieves a Confluence wiki page.
  tags:
  - collaboration
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: get-confluence
      description: Retrieves a Confluence wiki page.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The confluence page viewer identifier.
      call: collaboration-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: collaboration-api
    baseUri: https://api.ubs.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: confluence
      path: /confluence/page/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-confluence
        method: GET
Open in Framework → View in Fleet → confluence-page-viewer.yml

Before executing an equity trade via Bloomberg AIM, validates the order against compliance rules, checks client suitability in Salesforce, and logs the trade decision in ServiceNow for audit.

naftiko: '0.5'
info:
  label: Trade Execution with Compliance Pre-Check
  description: Before executing an equity trade via Bloomberg AIM, validates the order against compliance rules, checks client suitability in Salesforce, and logs the trade decision in ServiceNow for audit.
  tags:
  - trading
  - compliance
  - bloomberg-aim
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: trade-compliance
    port: 8080
    tools:
    - name: execute-compliant-trade
      description: Validate compliance, check client suitability, execute a trade via Bloomberg AIM, and create an audit record in ServiceNow.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce account ID for the client.
      - name: ticker
        in: body
        type: string
        description: The Bloomberg ticker symbol.
      - name: side
        in: body
        type: string
        description: BUY or SELL.
      - name: quantity
        in: body
        type: number
        description: Number of shares to trade.
      - name: portfolio_id
        in: body
        type: string
        description: The managed portfolio identifier.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: get-quote
        type: call
        call: bloomberg.get-quote
        with:
          ticker: '{{ticker}}'
      - name: submit-order
        type: call
        call: aim.create-order
        with:
          ticker: '{{ticker}}'
          side: '{{side}}'
          quantity: '{{quantity}}'
          portfolio_id: '{{portfolio_id}}'
      - name: log-audit
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Trade executed: {{side}} {{quantity}} {{ticker}} for {{get-client.Name}}'
          description: 'Portfolio: {{portfolio_id}}. Price: {{get-quote.lastPrice}}. Order: {{submit-order.order_id}}. Segment: {{get-client.Client_Segment__c}}.'
          assigned_group: Compliance_Audit
          category: trade_audit
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_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: quotes
      path: /quotes/{{ticker}}
      inputParameters:
      - name: ticker
        in: path
      operations:
      - name: get-quote
        method: GET
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/aim/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: create-order
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → trade-execution-with-compliance-pre-check.yml

When an Azure DevOps release pipeline requires approval, fetches the release details, validates the change request in ServiceNow, and notifies the approver via Microsoft Teams with a one-click approval link.

naftiko: '0.5'
info:
  label: Azure DevOps Deployment Approval
  description: When an Azure DevOps release pipeline requires approval, fetches the release details, validates the change request in ServiceNow, and notifies the approver via Microsoft Teams with a one-click approval link.
  tags:
  - operations
  - deployment
  - azure-devops
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-approval
    port: 8080
    tools:
    - name: request-deployment-approval
      description: Fetch release details, validate the change request, and send approval notification.
      inputParameters:
      - name: release_id
        in: body
        type: string
        description: The Azure DevOps release ID.
      - name: project
        in: body
        type: string
        description: The Azure DevOps project name.
      - name: change_request_number
        in: body
        type: string
        description: The ServiceNow change request number.
      - name: approver_email
        in: body
        type: string
        description: The approver email.
      steps:
      - name: get-release
        type: call
        call: azdevops.get-release
        with:
          project: '{{project}}'
          release_id: '{{release_id}}'
      - name: get-change-request
        type: call
        call: servicenow.get-change
        with:
          change_number: '{{change_request_number}}'
      - name: notify-approver
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{approver_email}}'
          text: 'Deployment approval needed: {{get-release.name}} ({{project}}). CR: {{change_request_number}} — {{get-change-request.short_description}}. Status: {{get-change-request.state}}. Approve: {{get-release.approval_url}}.'
  consumes:
  - type: http
    namespace: azdevops
    baseUri: https://vsrm.dev.azure.com/ubs
    authentication:
      type: bearer
      token: $secrets.azdevops_token
    resources:
    - name: releases
      path: /{{project}}/_apis/release/releases/{{release_id}}?api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: release_id
        in: path
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: changes
      path: /table/change_request?sysparm_query=number={{change_number}}
      inputParameters:
      - name: change_number
        in: path
      operations:
      - name: get-change
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → azure-devops-deployment-approval.yml

Generates an investment proposal for a private banking client by pulling client preferences from Salesforce, recommended allocations from FactSet, and market context from Bloomberg, then uploads the proposal to SharePoint and notifies the advisor.

naftiko: '0.5'
info:
  label: Private Banking Investment Proposal
  description: Generates an investment proposal for a private banking client by pulling client preferences from Salesforce, recommended allocations from FactSet, and market context from Bloomberg, then uploads the proposal to SharePoint and notifies the advisor.
  tags:
  - private-banking
  - investment-proposal
  - salesforce
  - factset
  - bloomberg-enterprise-data
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: investment-proposals
    port: 8080
    tools:
    - name: generate-proposal
      description: Create an investment proposal document from client preferences, model portfolios, and market data.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client account ID.
      - name: risk_profile
        in: body
        type: string
        description: Client risk profile (conservative, balanced, growth, aggressive).
      - name: advisor_email
        in: body
        type: string
        description: The private banker email.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: get-model
        type: call
        call: factset.get-model
        with:
          model_id: ubs_{{risk_profile}}
      - name: get-outlook
        type: call
        call: bloomberg.get-research
        with:
          topic: ubs_cio_outlook
      - name: upload-proposal
        type: call
        call: sharepoint.upload-file
        with:
          site_id: investment_proposals
          file_path: Proposals/{{get-client.Name}}_{{risk_profile}}_proposal.json
          content: '{"client": "{{get-client.Name}}", "risk_profile": "{{risk_profile}}", "model_weights": {{get-model.weights}}, "cio_outlook": "{{get-outlook.summary}}"}'
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{advisor_email}}'
          text: 'Investment proposal ready for {{get-client.Name}} ({{risk_profile}} profile). Document: {{upload-proposal.url}}. Model: ubs_{{risk_profile}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        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: models
      path: /models/{{model_id}}
      inputParameters:
      - name: model_id
        in: path
      operations:
      - name: get-model
        method: GET
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: research
      path: /research/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: get-research
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → private-banking-investment-proposal.yml

Retrieves a Jira ticket by issue key.

naftiko: '0.5'
info:
  label: Jira Ticket Viewer
  description: Retrieves a Jira ticket by issue key.
  tags:
  - engineering
  - jira
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: get-jira
      description: Retrieves a Jira ticket by issue key.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The jira ticket viewer identifier.
      call: engineering-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: engineering-api
    baseUri: https://api.ubs.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: jira
      path: /jira/ticket/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-jira
        method: GET
Open in Framework → View in Fleet → jira-ticket-viewer.yml

Retrieves portfolio holdings for a client account.

naftiko: '0.5'
info:
  label: Portfolio Holdings Lookup
  description: Retrieves portfolio holdings for a client account.
  tags:
  - wealth-management
  - finance
capability:
  exposes:
  - type: mcp
    namespace: wealth-management
    port: 8080
    tools:
    - name: get-portfolio
      description: Retrieves portfolio holdings for a client account.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The portfolio holdings lookup identifier.
      call: wealth-management-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: wealth-management-api
    baseUri: https://api.ubs.com/wealth-management/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: portfolio
      path: /portfolio/holdings/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-portfolio
        method: GET
Open in Framework → View in Fleet → portfolio-holdings-lookup.yml

Computes regulatory capital ratios by extracting risk-weighted assets from SAP, market risk figures from Bloomberg, and operational risk data from ServiceNow, then publishes results to SharePoint and notifies the CFO office.

naftiko: '0.5'
info:
  label: FINMA Regulatory Capital Calculation
  description: Computes regulatory capital ratios by extracting risk-weighted assets from SAP, market risk figures from Bloomberg, and operational risk data from ServiceNow, then publishes results to SharePoint and notifies the CFO office.
  tags:
  - compliance
  - regulatory-capital
  - finma
  - sap
  - bloomberg-enterprise-data
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: regulatory-capital
    port: 8080
    tools:
    - name: calculate-capital-ratios
      description: Compute CET1, Tier 1, and total capital ratios from risk data across SAP, Bloomberg, and ServiceNow.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: The SAP company code.
      - name: reporting_date
        in: body
        type: string
        description: The reporting date (YYYY-MM-DD).
      - name: cfo_email
        in: body
        type: string
        description: The CFO office email for notification.
      steps:
      - name: get-rwa
        type: call
        call: sap.get-rwa
        with:
          company_code: '{{company_code}}'
          date: '{{reporting_date}}'
      - name: get-market-risk
        type: call
        call: bloomberg.get-var
        with:
          entity: UBS
          date: '{{reporting_date}}'
      - name: get-op-risk
        type: call
        call: servicenow.get-risk-events
        with:
          company_code: '{{company_code}}'
          period: '{{reporting_date}}'
      - name: publish-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: regulatory_capital
          file_path: Reports/{{company_code}}_{{reporting_date}}_capital.json
          content: '{"rwa": "{{get-rwa.total_rwa}}", "market_var": "{{get-market-risk.var_99}}", "op_risk_events": "{{get-op-risk.event_count}}", "date": "{{reporting_date}}"}'
      - name: notify-cfo
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{cfo_email}}'
          text: 'Regulatory capital report ready: {{company_code}} as of {{reporting_date}}. RWA: {{get-rwa.total_rwa}}. Market VaR: {{get-market-risk.var_99}}. Report: {{publish-report.url}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: rwa
      path: /RiskWeightedAssets?$filter=CompanyCode eq '{{company_code}}' and ReportingDate eq '{{date}}'
      inputParameters:
      - name: company_code
        in: query
      - name: date
        in: query
      operations:
      - name: get-rwa
        method: GET
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: risk
      path: /risk/var?entity={{entity}}&date={{date}}
      inputParameters:
      - name: entity
        in: query
      - name: date
        in: query
      operations:
      - name: get-var
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: risk-events
      path: /table/risk_event?sysparm_query=company_code={{company_code}}^period={{period}}
      inputParameters:
      - name: company_code
        in: query
      - name: period
        in: query
      operations:
      - name: get-risk-events
        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: 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: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → finma-regulatory-capital-calculation.yml

Triggers a Teradata analytics query for portfolio risk metrics, pushes results to Power BI, and alerts the analytics team via Microsoft Teams when thresholds are breached.

naftiko: '0.5'
info:
  label: Teradata Analytics Refresh and Alert
  description: Triggers a Teradata analytics query for portfolio risk metrics, pushes results to Power BI, and alerts the analytics team via Microsoft Teams when thresholds are breached.
  tags:
  - analytics
  - data
  - teradata
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: analytics-refresh
    port: 8080
    tools:
    - name: refresh-risk-analytics
      description: Run Teradata risk analytics, refresh Power BI, and alert on threshold breaches.
      inputParameters:
      - name: query_name
        in: body
        type: string
        description: The Teradata stored query name.
      - 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.
      - name: analytics_email
        in: body
        type: string
        description: The analytics team email.
      steps:
      - name: run-query
        type: call
        call: teradata.execute-query
        with:
          query_name: '{{query_name}}'
      - name: refresh-bi
        type: call
        call: powerbi.refresh-dataset
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{analytics_email}}'
          text: 'Risk analytics refresh complete: {{query_name}}. Records: {{run-query.row_count}}. Power BI dashboard updated. Review for threshold breaches.'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://ubs-teradata.cloud.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries/{{query_name}}/execute
      inputParameters:
      - name: query_name
        in: path
      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/{{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: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → teradata-analytics-refresh-and-alert.yml

Prepares a client review meeting by pulling the client profile from Salesforce, portfolio performance from FactSet, recent market commentary from Bloomberg News, and creating a summary in SharePoint for the advisor.

naftiko: '0.5'
info:
  label: Wealth Advisor Client Review Prep
  description: Prepares a client review meeting by pulling the client profile from Salesforce, portfolio performance from FactSet, recent market commentary from Bloomberg News, and creating a summary in SharePoint for the advisor.
  tags:
  - wealth-management
  - client-review
  - salesforce
  - factset
  - bloomberg-news
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: advisor-prep
    port: 8080
    tools:
    - name: prepare-client-review
      description: Aggregate client data, portfolio performance, and market context into a review document for the wealth advisor.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client account ID.
      - name: portfolio_id
        in: body
        type: string
        description: The FactSet portfolio identifier.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: get-performance
        type: call
        call: factset.get-performance
        with:
          portfolio_id: '{{portfolio_id}}'
      - name: get-market-news
        type: call
        call: bloomberg.get-news
        with:
          topic: wealth management outlook
      - name: save-review-doc
        type: call
        call: sharepoint.upload-file
        with:
          site_id: advisor_reviews
          file_path: Reviews/{{get-client.Name}}_{{portfolio_id}}_review.json
          content: '{"client": "{{get-client.Name}}", "segment": "{{get-client.Client_Segment__c}}", "ytd_return": "{{get-performance.ytd_return}}", "market_summary": "{{get-market-news.headline}}"}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        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: performance
      path: /portfolios/{{portfolio_id}}/performance
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-performance
        method: GET
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/news/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: news
      path: /stories?topic={{topic}}&limit=5
      inputParameters:
      - name: topic
        in: query
      operations:
      - name: get-news
        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: upload-file
        method: PUT
Open in Framework → View in Fleet → wealth-advisor-client-review-prep.yml

Prices a structured product by fetching underlying security data from Bloomberg, running valuation model via FactSet, and publishing the indicative price to the Salesforce opportunity record with advisor notification.

naftiko: '0.5'
info:
  label: Structured Products Pricing Pipeline
  description: Prices a structured product by fetching underlying security data from Bloomberg, running valuation model via FactSet, and publishing the indicative price to the Salesforce opportunity record with advisor notification.
  tags:
  - trading
  - structured-products
  - bloomberg-enterprise-data
  - factset
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: structured-pricing
    port: 8080
    tools:
    - name: price-structured-product
      description: Generate an indicative price for a structured product and update the client opportunity.
      inputParameters:
      - name: underlying_ticker
        in: body
        type: string
        description: The Bloomberg ticker of the underlying security.
      - name: product_type
        in: body
        type: string
        description: The structured product type (e.g. autocallable, reverse-convertible, barrier).
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID.
      - name: advisor_email
        in: body
        type: string
        description: The advisor email for notification.
      steps:
      - name: get-underlying
        type: call
        call: bloomberg.get-quote
        with:
          ticker: '{{underlying_ticker}}'
      - name: run-valuation
        type: call
        call: factset.run-pricing-model
        with:
          underlying_price: '{{get-underlying.lastPrice}}'
          product_type: '{{product_type}}'
          volatility: '{{get-underlying.impliedVol}}'
      - name: update-opportunity
        type: call
        call: salesforce.update-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
          indicative_price: '{{run-valuation.indicative_price}}'
          pricing_date: '{{run-valuation.pricing_date}}'
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{advisor_email}}'
          text: 'Structured product priced: {{product_type}} on {{underlying_ticker}}. Indicative: {{run-valuation.indicative_price}}. Underlying: {{get-underlying.lastPrice}}. Opportunity updated.'
  consumes:
  - type: http
    namespace: bloomberg
    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: factset
    baseUri: https://api.factset.com/analytics/v3
    authentication:
      type: basic
      username: $secrets.factset_user
      password: $secrets.factset_api_key
    resources:
    - name: pricing-models
      path: /pricing/structured
      operations:
      - name: run-pricing-model
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → structured-products-pricing-pipeline.yml

When new Bloomberg Intelligence research is published, extracts key findings, updates the corresponding Salesforce opportunity, uploads the report to SharePoint, and notifies relevant advisors via Microsoft Teams.

naftiko: '0.5'
info:
  label: Equity Research Distribution
  description: When new Bloomberg Intelligence research is published, extracts key findings, updates the corresponding Salesforce opportunity, uploads the report to SharePoint, and notifies relevant advisors via Microsoft Teams.
  tags:
  - research
  - distribution
  - bloomberg-intelligence
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: research-distribution
    port: 8080
    tools:
    - name: distribute-research
      description: Distribute a Bloomberg Intelligence research note to advisors, updating CRM and document storage.
      inputParameters:
      - name: research_id
        in: body
        type: string
        description: The Bloomberg Intelligence research note ID.
      - name: ticker
        in: body
        type: string
        description: The relevant security ticker.
      - name: advisor_emails
        in: body
        type: string
        description: Comma-separated list of advisor emails to notify.
      steps:
      - name: get-research
        type: call
        call: bloomberg.get-intelligence-note
        with:
          research_id: '{{research_id}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: research_library
          file_path: EquityResearch/{{ticker}}/{{research_id}}.pdf
          content: '{{get-research.content}}'
      - name: notify-advisors
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: equity_research
          text: 'New research: {{get-research.title}} ({{ticker}}). Rating: {{get-research.rating}}. Target: {{get-research.target_price}}. Report: {{upload-report.url}}.'
  consumes:
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/intelligence/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: notes
      path: /notes/{{research_id}}
      inputParameters:
      - name: research_id
        in: path
      operations:
      - name: get-intelligence-note
        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: upload-file
        method: PUT
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → equity-research-distribution.yml

Triggers an Informatica data quality job for client master data, validates results against the SAP source system, and logs quality metrics in ServiceNow for the data governance team.

naftiko: '0.5'
info:
  label: Informatica Data Quality Pipeline Trigger
  description: Triggers an Informatica data quality job for client master data, validates results against the SAP source system, and logs quality metrics in ServiceNow for the data governance team.
  tags:
  - data-governance
  - data-quality
  - informatica
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Trigger an Informatica DQ job, validate against SAP, and log results for data governance.
      inputParameters:
      - name: job_name
        in: body
        type: string
        description: The Informatica data quality job name.
      - name: source_entity
        in: body
        type: string
        description: The SAP source entity to validate (e.g. BP_MASTER).
      - name: company_code
        in: body
        type: string
        description: The SAP company code.
      steps:
      - name: trigger-dq-job
        type: call
        call: informatica.run-job
        with:
          job_name: '{{job_name}}'
      - name: get-sap-count
        type: call
        call: sap.get-entity-count
        with:
          entity: '{{source_entity}}'
          company_code: '{{company_code}}'
      - name: log-results
        type: call
        call: servicenow.create-task
        with:
          short_description: 'DQ results: {{job_name}} — {{source_entity}}'
          description: 'Job: {{job_name}}. Status: {{trigger-dq-job.status}}. Records processed: {{trigger-dq-job.records_processed}}. SAP source count: {{get-sap-count.count}}. Company: {{company_code}}.'
          assigned_group: Data_Governance
          category: data_quality
  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
      operations:
      - name: run-job
        method: POST
  - type: http
    namespace: sap
    baseUri: https://ubs-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: entity-count
      path: /{{entity}}/$count?$filter=CompanyCode eq '{{company_code}}'
      inputParameters:
      - name: entity
        in: path
      - name: company_code
        in: query
      operations:
      - name: get-entity-count
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → informatica-data-quality-pipeline-trigger.yml

Retrieves a Salesforce account by account ID.

naftiko: '0.5'
info:
  label: Salesforce Account Viewer
  description: Retrieves a Salesforce account by account ID.
  tags:
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: get-salesforce
      description: Retrieves a Salesforce account by account ID.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The salesforce account viewer identifier.
      call: sales-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: sales-api
    baseUri: https://api.ubs.com/sales/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: salesforce
      path: /salesforce/account/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-salesforce
        method: GET
Open in Framework → View in Fleet → salesforce-account-viewer.yml

Looks up a wealth management client record in Salesforce by client ID, returning relationship manager assignment, AUM tier, and contact details.

naftiko: '0.5'
info:
  label: Salesforce Client Relationship Lookup
  description: Looks up a wealth management client record in Salesforce by client ID, returning relationship manager assignment, AUM tier, and contact details.
  tags:
  - client-management
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: client-crm
    port: 8080
    tools:
    - name: get-client-record
      description: Retrieve a Salesforce client record by UBS client ID.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The UBS client identifier stored in Salesforce.
      call: salesforce.get-account
      with:
        client_id: '{{client_id}}'
      outputParameters:
      - name: client_name
        type: string
        mapping: $.Name
      - name: relationship_manager
        type: string
        mapping: $.Owner.Name
      - name: aum_tier
        type: string
        mapping: $.AUM_Tier__c
      - name: segment
        type: string
        mapping: $.Client_Segment__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-client-relationship-lookup.yml

Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.

naftiko: '0.5'
info:
  label: Data Governance Review Orchestrator
  description: Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
  tags:
  - data-governance
  - compliance
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: data-governance
    port: 8080
    tools:
    - name: run-data-governance-review-orchestrator
      description: Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Data Governance Review Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → data-governance-review-orchestrator.yml

Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.

naftiko: '0.5'
info:
  label: Cross-Functional Project Kickoff Orchestrator
  description: Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
  tags:
  - project-management
  - collaboration
  - operations
capability:
  exposes:
  - type: mcp
    namespace: project-management
    port: 8080
    tools:
    - name: run-cross-functional-project-kickoff-orchestrator
      description: Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → cross-functional-project-kickoff-orchestrator.yml

Checks the execution status of a trade order in Bloomberg AIM by order ID, returning fill quantity, average price, and settlement details.

naftiko: '0.5'
info:
  label: Bloomberg AIM Order Status
  description: Checks the execution status of a trade order in Bloomberg AIM by order ID, returning fill quantity, average price, and settlement details.
  tags:
  - trading
  - order-management
  - bloomberg-aim
capability:
  exposes:
  - type: mcp
    namespace: trade-ops
    port: 8080
    tools:
    - name: get-order-status
      description: Retrieve the execution status of a Bloomberg AIM order.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Bloomberg AIM order identifier.
      call: aim.get-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.order.status
      - name: filled_qty
        type: number
        mapping: $.order.filledQuantity
      - name: avg_price
        type: number
        mapping: $.order.averagePrice
      - name: settlement_date
        type: string
        mapping: $.order.settlementDate
  consumes:
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/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
Open in Framework → View in Fleet → bloomberg-aim-order-status.yml

Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.

naftiko: '0.5'
info:
  label: Procurement Spend Analysis Orchestrator
  description: Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
  tags:
  - procurement
  - analytics
  - finance
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: run-procurement-spend-analysis-orchestrator
      description: Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Procurement Spend Analysis Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → procurement-spend-analysis-orchestrator.yml

Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.

naftiko: '0.5'
info:
  label: Annual Compliance Certification Orchestrator
  description: Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
  tags:
  - compliance
  - hr
  - legal
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: run-annual-compliance-certification-orchestrator
      description: Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Annual Compliance Certification Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → annual-compliance-certification-orchestrator.yml

Retrieves current portfolio holdings from FactSet, compares against target allocation, generates rebalancing trades via Bloomberg AIM, and notifies the portfolio manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Portfolio Rebalancing Workflow
  description: Retrieves current portfolio holdings from FactSet, compares against target allocation, generates rebalancing trades via Bloomberg AIM, and notifies the portfolio manager via Microsoft Teams.
  tags:
  - wealth-management
  - portfolio
  - rebalancing
  - factset
  - bloomberg-aim
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: portfolio-rebalance
    port: 8080
    tools:
    - name: rebalance-portfolio
      description: Given a portfolio ID and target allocation model, calculate drift, generate rebalancing orders, and notify the portfolio manager.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The FactSet portfolio identifier.
      - name: model_id
        in: body
        type: string
        description: The target allocation model identifier.
      - name: pm_email
        in: body
        type: string
        description: The portfolio manager email for notification.
      steps:
      - name: get-holdings
        type: call
        call: factset.get-holdings
        with:
          portfolio_id: '{{portfolio_id}}'
      - name: get-model
        type: call
        call: factset.get-model
        with:
          model_id: '{{model_id}}'
      - name: generate-orders
        type: call
        call: aim.create-basket
        with:
          portfolio_id: '{{portfolio_id}}'
          model_id: '{{model_id}}'
          current_holdings: '{{get-holdings.holdings}}'
          target_weights: '{{get-model.weights}}'
      - name: notify-pm
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{pm_email}}'
          text: 'Rebalancing initiated for portfolio {{portfolio_id}}. {{generate-orders.order_count}} orders generated. Basket ID: {{generate-orders.basket_id}}. Review in Bloomberg AIM.'
  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: portfolios
      path: /portfolios/{{portfolio_id}}/holdings
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-holdings
        method: GET
    - name: models
      path: /models/{{model_id}}
      inputParameters:
      - name: model_id
        in: path
      operations:
      - name: get-model
        method: GET
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/aim/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: baskets
      path: /baskets
      operations:
      - name: create-basket
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → portfolio-rebalancing-workflow.yml

Manages derivatives collateral by pulling margin requirements from Bloomberg AIM, verifying collateral positions in FactSet, updating Salesforce records, and alerting the middle office via Microsoft Teams.

naftiko: '0.5'
info:
  label: Derivatives Collateral Management
  description: Manages derivatives collateral by pulling margin requirements from Bloomberg AIM, verifying collateral positions in FactSet, updating Salesforce records, and alerting the middle office via Microsoft Teams.
  tags:
  - trading
  - derivatives
  - collateral-management
  - bloomberg-aim
  - factset
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: collateral-mgmt
    port: 8080
    tools:
    - name: manage-collateral
      description: Check margin requirements, verify collateral adequacy, update records, and notify the middle office.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The portfolio identifier.
      - name: counterparty_id
        in: body
        type: string
        description: The Salesforce counterparty account ID.
      - name: middle_office_email
        in: body
        type: string
        description: The middle office team email.
      steps:
      - name: get-margin-req
        type: call
        call: aim.get-margin-requirement
        with:
          portfolio_id: '{{portfolio_id}}'
      - name: get-collateral
        type: call
        call: factset.get-collateral-positions
        with:
          portfolio_id: '{{portfolio_id}}'
      - name: update-counterparty
        type: call
        call: salesforce.update-account
        with:
          client_id: '{{counterparty_id}}'
          margin_status: '{{get-margin-req.status}}'
          collateral_value: '{{get-collateral.total_value}}'
      - name: notify-middle-office
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{middle_office_email}}'
          text: 'Collateral update: Portfolio {{portfolio_id}}. Margin required: {{get-margin-req.amount}}. Collateral posted: {{get-collateral.total_value}}. Status: {{get-margin-req.status}}.'
  consumes:
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/aim/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: margin
      path: /portfolios/{{portfolio_id}}/margin
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-margin-requirement
        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: collateral
      path: /portfolios/{{portfolio_id}}/collateral
      inputParameters:
      - name: portfolio_id
        in: path
      operations:
      - name: get-collateral-positions
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_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: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → derivatives-collateral-management.yml

Checks the settlement status of a trade.

naftiko: '0.5'
info:
  label: Trade Settlement Status
  description: Checks the settlement status of a trade.
  tags:
  - trading
  - operations
capability:
  exposes:
  - type: mcp
    namespace: trading
    port: 8080
    tools:
    - name: get-trade
      description: Checks the settlement status of a trade.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The trade settlement status identifier.
      call: trading-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: trading-api
    baseUri: https://api.ubs.com/trading/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: trade
      path: /trade/settlement/status/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-trade
        method: GET
Open in Framework → View in Fleet → trade-settlement-status.yml

Monitors bond trade settlement by checking Bloomberg AIM order status, verifying Tradeweb execution details, and notifying the operations team via Microsoft Teams when settlement is confirmed or fails.

naftiko: '0.5'
info:
  label: Fixed Income Trade Settlement Tracker
  description: Monitors bond trade settlement by checking Bloomberg AIM order status, verifying Tradeweb execution details, and notifying the operations team via Microsoft Teams when settlement is confirmed or fails.
  tags:
  - trading
  - settlement
  - fixed-income
  - bloomberg-aim
  - tradeweb
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: settlement-ops
    port: 8080
    tools:
    - name: track-bond-settlement
      description: Track settlement status for a fixed income trade across Bloomberg AIM and Tradeweb, notifying ops on completion.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Bloomberg AIM order identifier.
      - name: isin
        in: body
        type: string
        description: The bond ISIN.
      - name: ops_team_email
        in: body
        type: string
        description: Email of the operations team member to notify.
      steps:
      - name: get-aim-status
        type: call
        call: aim.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-tradeweb-execution
        type: call
        call: tradeweb.get-execution
        with:
          isin: '{{isin}}'
          order_ref: '{{order_id}}'
      - name: notify-ops
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{ops_team_email}}'
          text: 'Settlement update for {{isin}}: AIM status={{get-aim-status.status}}, settled={{get-aim-status.settlement_date}}. Tradeweb confirm: {{get-tradeweb-execution.confirmation_id}}.'
  consumes:
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/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: tradeweb
    baseUri: https://api.tradeweb.com/v2
    authentication:
      type: bearer
      token: $secrets.tradeweb_token
    resources:
    - name: executions
      path: /executions?isin={{isin}}&orderRef={{order_ref}}
      inputParameters:
      - name: isin
        in: query
      - name: order_ref
        in: query
      operations:
      - name: get-execution
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → fixed-income-trade-settlement-tracker.yml

Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.

naftiko: '0.5'
info:
  label: Third Party Risk Assessment Orchestrator
  description: Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
  tags:
  - risk
  - procurement
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: risk
    port: 8080
    tools:
    - name: run-third-party-risk-assessment-orchestrator
      description: Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Third Party Risk Assessment Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → third-party-risk-assessment-orchestrator.yml

Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.

naftiko: '0.5'
info:
  label: Digital Transformation Progress Orchestrator
  description: Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
  tags:
  - strategy
  - analytics
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: strategy
    port: 8080
    tools:
    - name: run-digital-transformation-progress-orchestrator
      description: Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Digital Transformation Progress Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → digital-transformation-progress-orchestrator.yml

Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.

naftiko: '0.5'
info:
  label: Infrastructure Capacity Planning Orchestrator
  description: Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
  tags:
  - infrastructure
  - planning
  - finance
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: run-infrastructure-capacity-planning-orchestrator
      description: Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → infrastructure-capacity-planning-orchestrator.yml

Sends a message to a Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Microsoft Teams Message Sender
  description: Sends a message to a Microsoft Teams channel.
  tags:
  - communications
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: communications
    port: 8080
    tools:
    - name: get-microsoft
      description: Sends a message to a Microsoft Teams channel.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The microsoft teams message sender identifier.
      call: communications-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: communications-api
    baseUri: https://api.ubs.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: microsoft
      path: /microsoft/teams/message/sender/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-microsoft
        method: GET
Open in Framework → View in Fleet → microsoft-teams-message-sender.yml

Checks compliance status for a transaction.

naftiko: '0.5'
info:
  label: Compliance Check Status
  description: Checks compliance status for a transaction.
  tags:
  - compliance
  - risk
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: get-compliance
      description: Checks compliance status for a transaction.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The compliance check status identifier.
      call: compliance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: compliance-api
    baseUri: https://api.ubs.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: compliance
      path: /compliance/check/status/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-compliance
        method: GET
Open in Framework → View in Fleet → compliance-check-status.yml

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: '0.5'
info:
  label: Security Audit Orchestrator
  description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
  tags:
  - security
  - servicenow
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: run-security-audit-orchestrator
      description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Security Audit Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → security-audit-orchestrator.yml

Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.

naftiko: '0.5'
info:
  label: Vendor Contract Renewal Pipeline
  description: Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
  tags:
  - procurement
  - legal
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: run-vendor-contract-renewal-pipeline
      description: Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Vendor Contract Renewal Pipeline for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → vendor-contract-renewal-pipeline.yml

Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.

naftiko: '0.5'
info:
  label: Knowledge Base Refresh Orchestrator
  description: Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
  tags:
  - knowledge-management
  - collaboration
  - operations
capability:
  exposes:
  - type: mcp
    namespace: knowledge-management
    port: 8080
    tools:
    - name: run-knowledge-base-refresh-orchestrator
      description: Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Knowledge Base Refresh Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → knowledge-base-refresh-orchestrator.yml

Prepares a wealth transfer plan by pulling client family structure from Salesforce, estate planning documents from SharePoint, tax implications from SAP, and creating a review meeting in Microsoft Teams.

naftiko: '0.5'
info:
  label: Wealth Transfer Planning Workflow
  description: Prepares a wealth transfer plan by pulling client family structure from Salesforce, estate planning documents from SharePoint, tax implications from SAP, and creating a review meeting in Microsoft Teams.
  tags:
  - private-banking
  - wealth-transfer
  - estate-planning
  - salesforce
  - sharepoint
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: wealth-transfer
    port: 8080
    tools:
    - name: prepare-wealth-transfer
      description: Compile family structure, estate documents, and tax data for a wealth transfer planning session.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client account ID.
      - name: advisor_email
        in: body
        type: string
        description: The private banker email.
      - name: company_code
        in: body
        type: string
        description: The SAP company code for tax jurisdiction.
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: get-estate-docs
        type: call
        call: sharepoint.list-files
        with:
          site_id: estate_planning
          folder_path: Clients/{{get-client.Name}}_{{client_id}}
      - name: get-tax-data
        type: call
        call: sap.get-tax-summary
        with:
          client_id: '{{client_id}}'
          company_code: '{{company_code}}'
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{advisor_email}}'
          text: 'Wealth transfer prep ready for {{get-client.Name}}. Estate docs: {{get-estate-docs.file_count}} files. Tax jurisdiction: {{company_code}}. Effective tax rate: {{get-tax-data.effective_rate}}%. Schedule client meeting.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        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}}:/children
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: list-files
        method: GET
  - type: http
    namespace: sap
    baseUri: https://ubs-s4.sap.com/sap/opu/odata/sap/API_TAX_REPORTING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: tax-summary
      path: /TaxSummary?$filter=ClientId eq '{{client_id}}' and CompanyCode eq '{{company_code}}'
      inputParameters:
      - name: client_id
        in: query
      - name: company_code
        in: query
      operations:
      - name: get-tax-summary
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → wealth-transfer-planning-workflow.yml

Reconciles treasury cash positions by pulling SAP GL balances, Oracle Cloud payment data, and Bloomberg FX rates, then logs discrepancies in ServiceNow for investigation.

naftiko: '0.5'
info:
  label: Treasury Cash Position Reconciliation
  description: Reconciles treasury cash positions by pulling SAP GL balances, Oracle Cloud payment data, and Bloomberg FX rates, then logs discrepancies in ServiceNow for investigation.
  tags:
  - treasury
  - cash-management
  - reconciliation
  - sap
  - oracle-cloud
  - bloomberg-enterprise-data
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: treasury-recon
    port: 8080
    tools:
    - name: reconcile-cash-position
      description: Pull GL balances, payment data, and FX rates to reconcile cash positions across entities.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: The SAP company code.
      - name: currency
        in: body
        type: string
        description: The reporting currency (e.g. CHF, USD, EUR).
      - name: as_of_date
        in: body
        type: string
        description: The reconciliation date (YYYY-MM-DD).
      steps:
      - name: get-gl-balance
        type: call
        call: sap.get-cash-balance
        with:
          company_code: '{{company_code}}'
          currency: '{{currency}}'
      - name: get-payments
        type: call
        call: oracle.get-payments
        with:
          company_code: '{{company_code}}'
          date: '{{as_of_date}}'
      - name: get-fx-rate
        type: call
        call: bloomberg.get-fx-rate
        with:
          currency_pair: '{{currency}}CHF'
      - name: log-discrepancy
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Cash recon: {{company_code}} {{currency}} as of {{as_of_date}}'
          description: 'GL balance: {{get-gl-balance.balance}} {{currency}}. Payments total: {{get-payments.total}}. FX rate: {{get-fx-rate.rate}}. Review for discrepancies.'
          assigned_group: Treasury_Operations
          category: cash_reconciliation
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: cash-balance
      path: /A_GLAccountBalance?$filter=CompanyCode eq '{{company_code}}' and Currency eq '{{currency}}'
      inputParameters:
      - name: company_code
        in: query
      - name: currency
        in: query
      operations:
      - name: get-cash-balance
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://ubs-cloud.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: payments
      path: /payments?companyCode={{company_code}}&date={{date}}
      inputParameters:
      - name: company_code
        in: query
      - name: date
        in: query
      operations:
      - name: get-payments
        method: GET
  - 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/{{currency_pair}}
      inputParameters:
      - name: currency_pair
        in: path
      operations:
      - name: get-fx-rate
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → treasury-cash-position-reconciliation.yml

Creates a new incident in ServiceNow.

naftiko: '0.5'
info:
  label: ServiceNow Incident Creator
  description: Creates a new incident in ServiceNow.
  tags:
  - it
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it
    port: 8080
    tools:
    - name: get-servicenow
      description: Creates a new incident in ServiceNow.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The servicenow incident creator identifier.
      call: it-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: it-api
    baseUri: https://api.ubs.com/it/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: servicenow
      path: /servicenow/incident/creator/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-servicenow
        method: GET
Open in Framework → View in Fleet → servicenow-incident-creator.yml

Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.

naftiko: '0.5'
info:
  label: IT Change Management Orchestrator
  description: Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
  tags:
  - it
  - servicenow
  - operations
capability:
  exposes:
  - type: mcp
    namespace: it
    port: 8080
    tools:
    - name: run-it-change-management-orchestrator
      description: Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed IT Change Management Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → it-change-management-orchestrator.yml

Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.

naftiko: '0.5'
info:
  label: API Lifecycle Management Orchestrator
  description: Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
  tags:
  - engineering
  - api
  - operations
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: run-api-lifecycle-management-orchestrator
      description: Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed API Lifecycle Management Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → api-lifecycle-management-orchestrator.yml

Screens a client or counterparty against global sanctions lists by pulling entity data from Salesforce, running screening via the compliance system, and escalating matches through ServiceNow and Microsoft Teams.

naftiko: '0.5'
info:
  label: Sanctions Screening Pipeline
  description: Screens a client or counterparty against global sanctions lists by pulling entity data from Salesforce, running screening via the compliance system, and escalating matches through ServiceNow and Microsoft Teams.
  tags:
  - compliance
  - sanctions
  - screening
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sanctions-screening
    port: 8080
    tools:
    - name: screen-entity
      description: Screen a client or counterparty against sanctions lists and escalate any matches.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce account ID.
      - name: screening_type
        in: body
        type: string
        description: Screening type (onboarding, periodic, transaction).
      - name: compliance_email
        in: body
        type: string
        description: The compliance officer email.
      steps:
      - name: get-entity
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: create-screening-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Sanctions screening: {{get-entity.Name}} ({{screening_type}})'
          description: 'Entity: {{get-entity.Name}}. Type: {{screening_type}}. Country: {{get-entity.BillingCountry}}. Segment: {{get-entity.Client_Segment__c}}.'
          assigned_group: Financial_Crime_Unit
          category: sanctions_screening
      - name: alert-compliance
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{compliance_email}}'
          text: 'Sanctions screening initiated: {{get-entity.Name}} ({{screening_type}}). Task: {{create-screening-task.number}}. Country: {{get-entity.BillingCountry}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sanctions-screening-pipeline.yml

Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.

naftiko: '0.5'
info:
  label: Customer Journey Mapping Orchestrator
  description: Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
  tags:
  - customer-experience
  - analytics
  - product-management
capability:
  exposes:
  - type: mcp
    namespace: customer-experience
    port: 8080
    tools:
    - name: run-customer-journey-mapping-orchestrator
      description: Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Customer Journey Mapping Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → customer-journey-mapping-orchestrator.yml

Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 14
  description: Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-014
      description: Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-14.yml

Retrieves employee profile from Workday.

naftiko: '0.5'
info:
  label: Workday Employee Profile
  description: Retrieves employee profile from Workday.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-workday
      description: Retrieves employee profile from Workday.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The workday employee profile identifier.
      call: hr-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: hr-api
    baseUri: https://api.ubs.com/hr/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: workday
      path: /workday/employee/profile/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-workday
        method: GET
Open in Framework → View in Fleet → workday-employee-profile.yml

When a high-net-worth prospect engages on LinkedIn, creates a Salesforce lead, enriches with ZoomInfo data, and notifies the assigned private banker via Microsoft Teams.

naftiko: '0.5'
info:
  label: LinkedIn Advisor Lead Capture
  description: When a high-net-worth prospect engages on LinkedIn, creates a Salesforce lead, enriches with ZoomInfo data, and notifies the assigned private banker via Microsoft Teams.
  tags:
  - sales
  - lead-capture
  - linkedin
  - salesforce
  - zoominfo
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lead-capture
    port: 8080
    tools:
    - name: capture-linkedin-lead
      description: Create and enrich a lead from LinkedIn engagement for private banking outreach.
      inputParameters:
      - name: linkedin_profile_url
        in: body
        type: string
        description: The LinkedIn profile URL of the prospect.
      - name: engagement_type
        in: body
        type: string
        description: The engagement type (comment, share, message).
      - name: banker_email
        in: body
        type: string
        description: The assigned private banker email.
      steps:
      - name: enrich-contact
        type: call
        call: zoominfo.enrich-person
        with:
          linkedin_url: '{{linkedin_profile_url}}'
      - name: create-lead
        type: call
        call: salesforce.create-lead
        with:
          first_name: '{{enrich-contact.first_name}}'
          last_name: '{{enrich-contact.last_name}}'
          company: '{{enrich-contact.company}}'
          title: '{{enrich-contact.title}}'
          email: '{{enrich-contact.email}}'
          lead_source: LinkedIn_{{engagement_type}}
      - name: notify-banker
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{banker_email}}'
          text: 'New HNW lead: {{enrich-contact.first_name}} {{enrich-contact.last_name}} ({{enrich-contact.title}} at {{enrich-contact.company}}). Source: LinkedIn {{engagement_type}}. Lead ID: {{create-lead.id}}. Net worth estimate: {{enrich-contact.estimated_net_worth}}.'
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: person-enrich
      path: /enrich/person
      operations:
      - name: enrich-person
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead
      operations:
      - name: create-lead
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → linkedin-advisor-lead-capture.yml

Retrieves a journal entry from Oracle Cloud Financials by entry ID, returning header and line details for reconciliation workflows.

naftiko: '0.5'
info:
  label: Oracle Cloud Financials Journal Entry
  description: Retrieves a journal entry from Oracle Cloud Financials by entry ID, returning header and line details for reconciliation workflows.
  tags:
  - finance
  - reconciliation
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: finance-oracle
    port: 8080
    tools:
    - name: get-journal-entry
      description: Fetch an Oracle Cloud Financials journal entry by ID.
      inputParameters:
      - name: journal_id
        in: body
        type: string
        description: The Oracle Cloud journal entry identifier.
      call: oracle.get-journal
      with:
        journal_id: '{{journal_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: total_debit
        type: number
        mapping: $.TotalDebit
      - name: total_credit
        type: number
        mapping: $.TotalCredit
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://ubs-cloud.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: journals
      path: /journals/{{journal_id}}
      inputParameters:
      - name: journal_id
        in: path
      operations:
      - name: get-journal
        method: GET
Open in Framework → View in Fleet → oracle-cloud-financials-journal-entry.yml

Retrieves performance data for an investment fund.

naftiko: '0.5'
info:
  label: Fund Performance Report
  description: Retrieves performance data for an investment fund.
  tags:
  - investments
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: investments
    port: 8080
    tools:
    - name: get-fund
      description: Retrieves performance data for an investment fund.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The fund performance report identifier.
      call: investments-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: investments-api
    baseUri: https://api.ubs.com/investments/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: fund
      path: /fund/performance/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-fund
        method: GET
Open in Framework → View in Fleet → fund-performance-report.yml

Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.

naftiko: '0.5'
info:
  label: Sustainability Metrics Collection Orchestrator
  description: Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
  tags:
  - sustainability
  - analytics
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: sustainability
    port: 8080
    tools:
    - name: run-sustainability-metrics-collection-orchestrator
      description: Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → sustainability-metrics-collection-orchestrator.yml

Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 1
  description: Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-001
      description: Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-1.yml

Retrieves finance operational data for workflow 15.

naftiko: '0.5'
info:
  label: Finance Data Query 15
  description: Retrieves finance operational data for workflow 15.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-15
      description: Query finance data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.ubs.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → finance-data-query-15.yml

Retrieves finance operational data for workflow 3.

naftiko: '0.5'
info:
  label: Finance Data Query 3
  description: Retrieves finance operational data for workflow 3.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-3
      description: Query finance data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.ubs.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → finance-data-query-3.yml

Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 2
  description: Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-002
      description: Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-2.yml

Logs an investment committee decision by recording the vote in Salesforce, uploading meeting minutes to SharePoint, updating the Bloomberg AIM model portfolio, and notifying all committee members via Microsoft Teams.

naftiko: '0.5'
info:
  label: Investment Committee Decision Logger
  description: Logs an investment committee decision by recording the vote in Salesforce, uploading meeting minutes to SharePoint, updating the Bloomberg AIM model portfolio, and notifying all committee members via Microsoft Teams.
  tags:
  - investment-management
  - governance
  - salesforce
  - sharepoint
  - bloomberg-aim
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: investment-committee
    port: 8080
    tools:
    - name: log-committee-decision
      description: Record an investment committee decision across CRM, documents, and portfolio systems.
      inputParameters:
      - name: decision_id
        in: body
        type: string
        description: The unique decision identifier.
      - name: decision_type
        in: body
        type: string
        description: Decision type (allocation_change, new_position, exit_position, model_update).
      - name: model_id
        in: body
        type: string
        description: The Bloomberg AIM model portfolio ID.
      - name: committee_channel
        in: body
        type: string
        description: The Microsoft Teams channel ID for the committee.
      steps:
      - name: record-decision
        type: call
        call: salesforce.create-activity
        with:
          subject: 'IC Decision: {{decision_id}} — {{decision_type}}'
          description: 'Investment committee decision logged. Type: {{decision_type}}. Model: {{model_id}}.'
      - name: upload-minutes
        type: call
        call: sharepoint.upload-file
        with:
          site_id: investment_committee
          file_path: Minutes/{{decision_id}}_minutes.json
          content: '{"decision_id": "{{decision_id}}", "type": "{{decision_type}}", "model": "{{model_id}}"}'
      - name: update-model
        type: call
        call: aim.update-model
        with:
          model_id: '{{model_id}}'
          decision_ref: '{{decision_id}}'
      - name: notify-committee
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: '{{committee_channel}}'
          text: 'IC Decision {{decision_id}} recorded: {{decision_type}}. Model {{model_id}} updated. Minutes: {{upload-minutes.url}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: activities
      path: /sobjects/Task
      operations:
      - name: create-activity
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: aim
    baseUri: https://api.bloomberg.com/eap/aim/v1
    authentication:
      type: bearer
      token: $secrets.bloomberg_aim_token
    resources:
    - name: models
      path: /models/{{model_id}}
      inputParameters:
      - name: model_id
        in: path
      operations:
      - name: update-model
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → investment-committee-decision-logger.yml

Generates a quarterly performance report by pulling portfolio returns from FactSet, benchmark data from Bloomberg, client context from Salesforce, and uploads the final report to SharePoint for advisor distribution.

naftiko: '0.5'
info:
  label: Quarterly Client Performance Report
  description: Generates a quarterly performance report by pulling portfolio returns from FactSet, benchmark data from Bloomberg, client context from Salesforce, and uploads the final report to SharePoint for advisor distribution.
  tags:
  - wealth-management
  - reporting
  - quarterly-review
  - factset
  - bloomberg-enterprise-data
  - salesforce
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: quarterly-reports
    port: 8080
    tools:
    - name: generate-quarterly-report
      description: Compile portfolio performance, benchmark comparison, and client context into a quarterly report.
      inputParameters:
      - name: client_id
        in: body
        type: string
        description: The Salesforce client account ID.
      - name: portfolio_id
        in: body
        type: string
        description: The FactSet portfolio identifier.
      - name: benchmark_ticker
        in: body
        type: string
        description: The Bloomberg benchmark ticker (e.g. SPX Index).
      - name: quarter
        in: body
        type: string
        description: The reporting quarter (e.g. 2026-Q1).
      steps:
      - name: get-client
        type: call
        call: salesforce.get-account
        with:
          client_id: '{{client_id}}'
      - name: get-portfolio-perf
        type: call
        call: factset.get-performance
        with:
          portfolio_id: '{{portfolio_id}}'
          period: '{{quarter}}'
      - name: get-benchmark
        type: call
        call: bloomberg.get-quote
        with:
          ticker: '{{benchmark_ticker}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: client_reports
          file_path: Quarterly/{{quarter}}/{{get-client.Name}}_{{portfolio_id}}.json
          content: '{"client": "{{get-client.Name}}", "quarter": "{{quarter}}", "portfolio_return": "{{get-portfolio-perf.total_return}}", "benchmark_return": "{{get-benchmark.change_pct}}", "alpha": "{{get-portfolio-perf.alpha}}"}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ubs.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{client_id}}
      inputParameters:
      - name: client_id
        in: path
      operations:
      - name: get-account
        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: performance
      path: /portfolios/{{portfolio_id}}/performance?period={{period}}
      inputParameters:
      - name: portfolio_id
        in: path
      - name: period
        in: query
      operations:
      - name: get-performance
        method: GET
  - type: http
    namespace: bloomberg
    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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → quarterly-client-performance-report.yml

Retrieves finance operational data for workflow 6.

naftiko: '0.5'
info:
  label: Finance Data Query 6
  description: Retrieves finance operational data for workflow 6.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-6
      description: Query finance data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.ubs.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → finance-data-query-6.yml

Retrieves finance operational data for workflow 12.

naftiko: '0.5'
info:
  label: Finance Data Query 12
  description: Retrieves finance operational data for workflow 12.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-12
      description: Query finance data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.ubs.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → finance-data-query-12.yml

Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 13
  description: Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-013
      description: Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-13.yml

Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 7
  description: Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-007
      description: Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-7.yml

Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 11
  description: Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-011
      description: Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-11.yml

Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 5
  description: Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-005
      description: Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-5.yml

Pulls portfolio holdings from FactSet, enriches with Bloomberg market data, calculates sector exposure, refreshes the Power BI risk dashboard, and alerts the risk manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Risk Exposure Report Generator
  description: Pulls portfolio holdings from FactSet, enriches with Bloomberg market data, calculates sector exposure, refreshes the Power BI risk dashboard, and alerts the risk manager via Microsoft Teams.
  tags:
  - risk-management
  - reporting
  - factset
  - bloomberg-enterprise-data
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: risk-reporting
    port: 8080
    tools:
    - name: generate-risk-report
      description: Generate an exposure report for a portfolio, refresh the risk dashboard, and alert the risk manager.
      inputParameters:
      - name: portfolio_id
        in: body
        type: string
        description: The FactSet portfolio identifier.
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace ID for the risk dashboard.
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID for the risk dashboard.
      - name: risk_manager_email
        in: body
        type: string
        description: Email of the risk manager to notify.
      steps:
      - name: get-holdings
        type: call
        call: factset.get-holdings
        with:
          portfolio_id: '{{portfolio_id}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-risk-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{risk_manager_email}}'
          text: 'Risk exposure report updated for portfolio {{portfolio_id}}. Total positions: {{get-holdings.holdings.length}}. Market value: {{get-holdings.total_market_value}} {{get-holdings.currency}}. Dashboard refreshed.'
  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: portfolios
      path: /portfolios/{{portfolio_id}}/holdings
      inputParameters:
      - name: portfolio_id
        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: /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: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → risk-exposure-report-generator.yml

Triggers a SonarQube security scan on a trading platform codebase, creates Azure DevOps work items for critical findings, and notifies the engineering lead via Microsoft Teams.

naftiko: '0.5'
info:
  label: SonarQube Security Scan with JIRA Tracking
  description: Triggers a SonarQube security scan on a trading platform codebase, creates Azure DevOps work items for critical findings, and notifies the engineering lead via Microsoft Teams.
  tags:
  - security
  - code-quality
  - sonarqube
  - azure-devops
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-scanning
    port: 8080
    tools:
    - name: scan-and-track
      description: Run a SonarQube scan, create work items for critical findings, and notify the engineering lead.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The SonarQube project key.
      - name: azdo_project
        in: body
        type: string
        description: The Azure DevOps project name.
      - name: lead_email
        in: body
        type: string
        description: The engineering lead email.
      steps:
      - name: get-scan-results
        type: call
        call: sonarqube.get-issues
        with:
          project_key: '{{project_key}}'
          severity: CRITICAL
      - name: create-work-item
        type: call
        call: azdevops.create-work-item
        with:
          project: '{{azdo_project}}'
          title: 'SonarQube critical: {{get-scan-results.issue_count}} findings in {{project_key}}'
          description: '{{get-scan-results.issue_count}} critical security findings. Top issue: {{get-scan-results.top_issue}}. Run full scan review.'
      - name: notify-lead
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{lead_email}}'
          text: 'Security scan alert: {{get-scan-results.issue_count}} critical findings in {{project_key}}. Work item: {{create-work-item.id}}. Immediate remediation required.'
  consumes:
  - type: http
    namespace: sonarqube
    baseUri: https://sonarqube.ubs.com/api
    authentication:
      type: bearer
      token: $secrets.sonarqube_token
    resources:
    - name: issues
      path: /issues/search?componentKeys={{project_key}}&severities={{severity}}
      inputParameters:
      - name: project_key
        in: query
      - name: severity
        in: query
      operations:
      - name: get-issues
        method: GET
  - type: http
    namespace: azdevops
    baseUri: https://dev.azure.com/ubs
    authentication:
      type: bearer
      token: $secrets.azdevops_token
    resources:
    - name: work-items
      path: /{{project}}/_apis/wit/workitems/$Bug?api-version=7.0
      inputParameters:
      - name: project
        in: path
      operations:
      - name: create-work-item
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sonarqube-security-scan-with-jira-tracking.yml

When a critical ServiceNow incident is created, enriches it with Datadog infrastructure metrics and New Relic application performance data, then alerts the on-call engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Incident Escalation with Monitoring Enrichment
  description: When a critical ServiceNow incident is created, enriches it with Datadog infrastructure metrics and New Relic application performance data, then alerts the on-call engineering team via Microsoft Teams.
  tags:
  - operations
  - incident-management
  - servicenow
  - datadog
  - new-relic
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: incident-enrichment
    port: 8080
    tools:
    - name: enrich-and-escalate
      description: Enrich a ServiceNow incident with monitoring data from Datadog and New Relic, then escalate via Teams.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number.
      - name: hostname
        in: body
        type: string
        description: The affected infrastructure hostname.
      - name: app_id
        in: body
        type: string
        description: The New Relic application ID.
      - name: oncall_email
        in: body
        type: string
        description: The on-call engineer email.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_number: '{{incident_number}}'
      - name: get-infra-health
        type: call
        call: datadog.get-host
        with:
          hostname: '{{hostname}}'
      - name: get-app-metrics
        type: call
        call: newrelic.get-app
        with:
          app_id: '{{app_id}}'
      - name: alert-oncall
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{oncall_email}}'
          text: 'CRITICAL: {{get-incident.short_description}}. Host {{hostname}}: CPU={{get-infra-health.cpu_pct}}%, alerts={{get-infra-health.alerts}}. App error rate: {{get-app-metrics.error_rate}}%. Incident: {{incident_number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ubs.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident?sysparm_query=number={{incident_number}}
      inputParameters:
      - name: incident_number
        in: path
      operations:
      - name: get-incident
        method: GET
  - 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: hosts
      path: /hosts?filter={{hostname}}
      inputParameters:
      - name: hostname
        in: query
      operations:
      - name: get-host
        method: GET
  - 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
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → incident-escalation-with-monitoring-enrichment.yml

Triggers a Power BI dataset refresh.

naftiko: '0.5'
info:
  label: Power BI Dashboard Refresher
  description: Triggers a Power BI dataset refresh.
  tags:
  - analytics
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-power
      description: Triggers a Power BI dataset refresh.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The power bi dashboard refresher identifier.
      call: analytics-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: analytics-api
    baseUri: https://api.ubs.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: power
      path: /power/bi/dashboard/refresher/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-power
        method: GET
Open in Framework → View in Fleet → power-bi-dashboard-refresher.yml

Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.

naftiko: '0.5'
info:
  label: Customer Data Privacy Request Handler
  description: Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
  tags:
  - compliance
  - privacy
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: run-customer-data-privacy-request-handler
      description: Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Customer Data Privacy Request Handler for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → customer-data-privacy-request-handler.yml

Retrieves a file from Google Drive.

naftiko: '0.5'
info:
  label: Google Drive File Viewer
  description: Retrieves a file from Google Drive.
  tags:
  - collaboration
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: get-google
      description: Retrieves a file from Google Drive.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The google drive file viewer identifier.
      call: collaboration-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: collaboration-api
    baseUri: https://api.ubs.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: google
      path: /google/drive/file/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-google
        method: GET
Open in Framework → View in Fleet → google-drive-file-viewer.yml

Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 4
  description: Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-004
      description: Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-4.yml

Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 10
  description: Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-010
      description: Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.ubs.com/v1
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.ubs.com/v2
    authentication:
      type: bearer
      token: $secrets.ubs_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-10.yml

Retrieves finance operational data for workflow 21.

naftiko: '0.5'
info:
  label: Finance Data Query 21
  description: Retrieves finance operational data for workflow 21.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-21
      description: Query finance data for workflow 21.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-21
        method: GET
Open in Framework → View in Fleet → finance-data-query-21.yml

Orchestrates finance workflow 20 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 20
  description: Orchestrates finance workflow 20 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-020
      description: Orchestrates finance workflow 20 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 20 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-20.yml

Orchestrates finance workflow 22 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 22
  description: Orchestrates finance workflow 22 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-022
      description: Orchestrates finance workflow 22 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 22 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-22.yml

Orchestrates finance workflow 23 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 23
  description: Orchestrates finance workflow 23 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-023
      description: Orchestrates finance workflow 23 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 23 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-23.yml

Retrieves finance operational data for workflow 27.

naftiko: '0.5'
info:
  label: Finance Data Query 27
  description: Retrieves finance operational data for workflow 27.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-27
      description: Query finance data for workflow 27.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-27
        method: GET
Open in Framework → View in Fleet → finance-data-query-27.yml

Retrieves finance operational data for workflow 33.

naftiko: '0.5'
info:
  label: Finance Data Query 33
  description: Retrieves finance operational data for workflow 33.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-33
      description: Query finance data for workflow 33.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-33
        method: GET
Open in Framework → View in Fleet → finance-data-query-33.yml

Retrieves a document from SharePoint.

naftiko: '0.5'
info:
  label: SharePoint Document Viewer
  description: Retrieves a document from SharePoint.
  tags:
  - collaboration
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: get-sharepoint
      description: Retrieves a document from SharePoint.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The sharepoint document viewer identifier.
      call: collaboration-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: collaboration-api
    baseUri: https://api.vanguard.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: sharepoint
      path: /sharepoint/document/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-sharepoint
        method: GET
Open in Framework → View in Fleet → sharepoint-document-viewer.yml

Retrieves email messages from Microsoft Outlook.

naftiko: '0.5'
info:
  label: Microsoft Outlook Email Viewer
  description: Retrieves email messages from Microsoft Outlook.
  tags:
  - communications
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: communications
    port: 8080
    tools:
    - name: get-microsoft
      description: Retrieves email messages from Microsoft Outlook.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The microsoft outlook email viewer identifier.
      call: communications-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: communications-api
    baseUri: https://api.vanguard.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: microsoft
      path: /microsoft/outlook/email/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-microsoft
        method: GET
Open in Framework → View in Fleet → microsoft-outlook-email-viewer.yml

Orchestrates finance workflow 32 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 32
  description: Orchestrates finance workflow 32 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-032
      description: Orchestrates finance workflow 32 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 32 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-32.yml

Orchestrates finance workflow 26 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 26
  description: Orchestrates finance workflow 26 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-026
      description: Orchestrates finance workflow 26 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 26 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-26.yml

Retrieves finance operational data for workflow 18.

naftiko: '0.5'
info:
  label: Finance Data Query 18
  description: Retrieves finance operational data for workflow 18.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-18
      description: Query finance data for workflow 18.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-18
        method: GET
Open in Framework → View in Fleet → finance-data-query-18.yml

Retrieves finance operational data for workflow 30.

naftiko: '0.5'
info:
  label: Finance Data Query 30
  description: Retrieves finance operational data for workflow 30.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-30
      description: Query finance data for workflow 30.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-30
        method: GET
Open in Framework → View in Fleet → finance-data-query-30.yml

Retrieves finance operational data for workflow 24.

naftiko: '0.5'
info:
  label: Finance Data Query 24
  description: Retrieves finance operational data for workflow 24.
  tags:
  - finance
  - operations
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-data-24
      description: Query finance data for workflow 24.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.vanguard.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-24
        method: GET
Open in Framework → View in Fleet → finance-data-query-24.yml

Orchestrates finance workflow 25 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 25
  description: Orchestrates finance workflow 25 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-025
      description: Orchestrates finance workflow 25 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 25 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-25.yml

Orchestrates finance workflow 31 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 31
  description: Orchestrates finance workflow 31 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-031
      description: Orchestrates finance workflow 31 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 31 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-31.yml

Orchestrates finance workflow 19 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 19
  description: Orchestrates finance workflow 19 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-019
      description: Orchestrates finance workflow 19 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 19 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-19.yml

Retrieves a SAP purchase order by number.

naftiko: '0.5'
info:
  label: SAP Purchase Order Viewer
  description: Retrieves a SAP purchase order by number.
  tags:
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-sap
      description: Retrieves a SAP purchase order by number.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The sap purchase order viewer identifier.
      call: procurement-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: procurement-api
    baseUri: https://api.vanguard.com/procurement/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: sap
      path: /sap/purchase/order/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-sap
        method: GET
Open in Framework → View in Fleet → sap-purchase-order-viewer.yml

Retrieves Azure DevOps pipeline status.

naftiko: '0.5'
info:
  label: Azure DevOps Pipeline Viewer
  description: Retrieves Azure DevOps pipeline status.
  tags:
  - engineering
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: get-azure
      description: Retrieves Azure DevOps pipeline status.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The azure devops pipeline viewer identifier.
      call: engineering-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: engineering-api
    baseUri: https://api.vanguard.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: azure
      path: /azure/devops/pipeline/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-azure
        method: GET
Open in Framework → View in Fleet → azure-devops-pipeline-viewer.yml

Retrieves a Datadog monitor status.

naftiko: '0.5'
info:
  label: Datadog Monitor Viewer
  description: Retrieves a Datadog monitor status.
  tags:
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-datadog
      description: Retrieves a Datadog monitor status.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The datadog monitor viewer identifier.
      call: monitoring-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: monitoring-api
    baseUri: https://api.vanguard.com/monitoring/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: datadog
      path: /datadog/monitor/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-datadog
        method: GET
Open in Framework → View in Fleet → datadog-monitor-viewer.yml

Retrieves GitHub repository information.

naftiko: '0.5'
info:
  label: GitHub Repo Viewer
  description: Retrieves GitHub repository information.
  tags:
  - engineering
  - github
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: get-github
      description: Retrieves GitHub repository information.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The github repo viewer identifier.
      call: engineering-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: engineering-api
    baseUri: https://api.vanguard.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: github
      path: /github/repo/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-github
        method: GET
Open in Framework → View in Fleet → github-repo-viewer.yml

Retrieves time off balance from Workday.

naftiko: '0.5'
info:
  label: Workday Time Off Viewer
  description: Retrieves time off balance from Workday.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-workday
      description: Retrieves time off balance from Workday.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The workday time off viewer identifier.
      call: hr-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: hr-api
    baseUri: https://api.vanguard.com/hr/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: workday
      path: /workday/time/off/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-workday
        method: GET
Open in Framework → View in Fleet → workday-time-off-viewer.yml

Orchestrates finance workflow 28 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 28
  description: Orchestrates finance workflow 28 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-028
      description: Orchestrates finance workflow 28 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 28 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-28.yml

Orchestrates finance workflow 29 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 29
  description: Orchestrates finance workflow 29 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-029
      description: Orchestrates finance workflow 29 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 29 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-29.yml

Orchestrates finance workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 17
  description: Orchestrates finance workflow 17 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-017
      description: Orchestrates finance workflow 17 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 17 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-17.yml

Orchestrates finance workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Finance Workflow 16
  description: Orchestrates finance workflow 16 by coordinating across systems, validating data, and sending notifications.
  tags:
  - finance
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: run-finance-workflow-016
      description: Orchestrates finance workflow 16 by coordinating across systems, validating data, and sending notifications.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Finance Workflow 16 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.vanguard.com/v1
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.vanguard.com/v2
    authentication:
      type: bearer
      token: $secrets.vanguard_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → finance-workflow-16.yml

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
Open in Framework → View in Fleet → new-hire-it-provisioning-workflow.yml

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
Open in Framework → View in Fleet → new-relic-application-health-check.yml

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
Open in Framework → View in Fleet → azure-synapse-data-pipeline-orchestrator.yml

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

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
Open in Framework → View in Fleet → salesforce-customer-onboarding-case-creation.yml

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
Open in Framework → View in Fleet → mortgage-document-verification-chain.yml

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

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
Open in Framework → View in Fleet → wealth-management-client-review-digest.yml

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
Open in Framework → View in Fleet → microsoft-purview-data-classification-report.yml

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

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
Open in Framework → View in Fleet → aml-suspicious-activity-report-chain.yml

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
Open in Framework → View in Fleet → servicenow-change-risk-assessor.yml

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
Open in Framework → View in Fleet → keycloak-sso-session-audit.yml

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
Open in Framework → View in Fleet → checkmarx-sast-scan-result-handler.yml

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
Open in Framework → View in Fleet → sap-concur-expense-over-limit-escalation.yml

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
Open in Framework → View in Fleet → azure-resource-group-cost-summary.yml

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
Open in Framework → View in Fleet → palo-alto-firewall-threat-handler.yml

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
Open in Framework → View in Fleet → sap-general-ledger-period-close-check.yml

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

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
Open in Framework → View in Fleet → microsoft-teams-channel-message-sender.yml

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
Open in Framework → View in Fleet → wire-transfer-approval-escalation.yml

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
Open in Framework → View in Fleet → snowflake-data-quality-sla-monitor.yml

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
Open in Framework → View in Fleet → azure-service-bus-dead-letter-handler.yml

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
Open in Framework → View in Fleet → digital-banking-release-validation.yml

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
Open in Framework → View in Fleet → snowflake-data-pipeline-health-monitor.yml

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
Open in Framework → View in Fleet → github-dependabot-vulnerability-triage.yml

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
Open in Framework → View in Fleet → openai-document-summarization-pipeline.yml

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

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
Open in Framework → View in Fleet → splunk-siem-alert-to-incident-chain.yml

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
Open in Framework → View in Fleet → cybersecurity-vulnerability-remediation-tracker.yml

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
Open in Framework → View in Fleet → workday-headcount-and-cost-center-report.yml

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
Open in Framework → View in Fleet → figma-design-handoff-workflow.yml

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
Open in Framework → View in Fleet → bloomberg-aim-trade-reconciliation.yml

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
Open in Framework → View in Fleet → loan-origination-status-tracker.yml

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
Open in Framework → View in Fleet → pci-dss-compliance-scan-chain.yml

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
Open in Framework → View in Fleet → jfrog-artifactory-artifact-cleanup.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-win-loss-snowflake-sync.yml

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

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
Open in Framework → View in Fleet → quarterly-stress-test-data-preparation.yml

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
Open in Framework → View in Fleet → qlik-sense-app-usage-analyzer.yml

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
Open in Framework → View in Fleet → power-query-data-model-refresh-chain.yml

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
Open in Framework → View in Fleet → ibm-mq-queue-depth-monitor.yml

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
Open in Framework → View in Fleet → sql-server-database-health-check.yml

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
Open in Framework → View in Fleet → deposit-rate-change-propagation.yml

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
Open in Framework → View in Fleet → sap-period-end-close-automation.yml

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
Open in Framework → View in Fleet → apigee-api-gateway-performance-report.yml

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
Open in Framework → View in Fleet → mortgage-application-document-verification.yml

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

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

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
Open in Framework → View in Fleet → branch-staffing-forecast-sync.yml

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
Open in Framework → View in Fleet → sap-cost-center-lookup.yml

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
Open in Framework → View in Fleet → salesforce-opportunity-win-loss-analyzer.yml

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
Open in Framework → View in Fleet → it-change-management-chain.yml

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

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
Open in Framework → View in Fleet → snowflake-regulatory-reporting-data-product.yml

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
Open in Framework → View in Fleet → employee-separation-and-access-revocation.yml

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

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
Open in Framework → View in Fleet → atm-fleet-maintenance-scheduler.yml

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
Open in Framework → View in Fleet → apache-kafka-consumer-lag-monitor.yml

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
Open in Framework → View in Fleet → workday-benefits-open-enrollment-reminder.yml

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
Open in Framework → View in Fleet → regulatory-compliance-report-generator.yml

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
Open in Framework → View in Fleet → workday-annual-compensation-review-launcher.yml

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

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
Open in Framework → View in Fleet → azure-kubernetes-cluster-scaling-advisor.yml

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
Open in Framework → View in Fleet → snowflake-data-share-consumer-check.yml

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
Open in Framework → View in Fleet → snowflake-anti-money-laundering-data-quality-check.yml

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
Open in Framework → View in Fleet → workday-compensation-review-notification.yml

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
Open in Framework → View in Fleet → postman-api-collection-test-runner.yml

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
Open in Framework → View in Fleet → consumer-complaint-triage-workflow.yml

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
Open in Framework → View in Fleet → box-document-metadata-lookup.yml

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

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
Open in Framework → View in Fleet → regulatory-capital-report-generator.yml

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
Open in Framework → View in Fleet → cisco-firepower-ids-alert-handler.yml

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
Open in Framework → View in Fleet → salesforce-customer-churn-prediction-pipeline.yml

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

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
Open in Framework → View in Fleet → cloudwatch-alarm-check.yml

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
Open in Framework → View in Fleet → workday-headcount-forecast-variance.yml

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
Open in Framework → View in Fleet → azure-cloud-cost-anomaly-alert.yml

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
Open in Framework → View in Fleet → workday-payroll-tax-filing-monitor.yml

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
Open in Framework → View in Fleet → sap-vendor-master-detail-lookup.yml

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
Open in Framework → View in Fleet → splunk-siem-correlation-rule-tester.yml

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
Open in Framework → View in Fleet → sailpoint-identity-governance-check.yml

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
Open in Framework → View in Fleet → wire-transfer-sanctions-check.yml

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
Open in Framework → View in Fleet → branch-network-health-monitor.yml

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
Open in Framework → View in Fleet → palo-alto-networks-security-incident-triage.yml

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
Open in Framework → View in Fleet → github-copilot-usage-analytics-reporter.yml

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
Open in Framework → View in Fleet → servicenow-itsm-incident-to-jira-sync.yml

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
Open in Framework → View in Fleet → salesforce-crm-opportunity-pipeline-sync.yml

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
Open in Framework → View in Fleet → calypso-trade-lifecycle-monitor.yml

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

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
Open in Framework → View in Fleet → atm-fleet-health-monitoring-chain.yml

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
Open in Framework → View in Fleet → refinitiv-market-data-quality-validator.yml

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

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
Open in Framework → View in Fleet → jira-sprint-board-velocity-report.yml

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
Open in Framework → View in Fleet → linkedin-job-posting-for-open-requisitions.yml

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
Open in Framework → View in Fleet → sap-intercompany-journal-entry-poster.yml

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

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

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
Open in Framework → View in Fleet → salesforce-nps-survey-follow-up-workflow.yml

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
Open in Framework → View in Fleet → alteryx-data-prep-workflow-monitor.yml

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
Open in Framework → View in Fleet → dynamics-365-crm-lead-assignment.yml

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
Open in Framework → View in Fleet → istio-service-mesh-traffic-analyzer.yml

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

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
Open in Framework → View in Fleet → linkerd-service-mesh-golden-signal-monitor.yml

Areas — Total: 2870

  • .NET
  • 3D
  • A/B Testing
  • AI Agents
  • AI Applications
  • AI Architectures
  • AI Assistants
  • AI Ethics
  • AI Governance
  • AI Infrastructure
  • AI Ops
  • AI Platforms
  • AI Safety
  • AI Securities
  • AI Solutions
  • AI Technologies
  • AI Testing
  • 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
  • Access Management Solutions
  • Access Recertifications
  • Accessibility
  • Accessibility Audits
  • Accessibility Testing
  • Account Management
  • Accountability
  • Accounting
  • Accounting Platforms
  • Accounting Reporting Systems
  • Accounting Software
  • Accounting Systems
  • Accounts Payables
  • Accounts Receivables
  • Active Directory
  • Active Directory Certificate Services
  • Activity Tracking
  • Actuarial Sciences
  • Ad Management
  • 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
  • Allianz Engagement Surveys
  • Ambassadors
  • Analysis
  • Analytical Databases
  • Analytics
  • Analytics Infrastructure
  • Androids
  • Animations
  • Annotations
  • Anomaly Detections
  • Anti-Money Launderings
  • Antivirus
  • Apache Portable Runtimes
  • 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 Securities
  • Application Servers
  • Applications
  • Architecture Design
  • Architecture Governance
  • Architecture Strategies
  • Architectures
  • Archives
  • Archiving
  • Argus
  • Arrays
  • Artifact Management
  • 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
  • Attendance Tracking
  • Attendee Tracking
  • Audience Engagements
  • Audience Segmentations
  • Audience Targetings
  • Audio
  • Audit Dashboards
  • 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
  • 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
  • Bandwidth Management
  • Banking
  • Banking Infrastructure
  • Banking Platforms
  • Banking Systems
  • Banking Technologies
  • Bashes
  • Batch Processing
  • Belts
  • Benchmarkings
  • Benchmarks
  • Benefits Administration
  • Best Practices
  • Big Data
  • Billing Management
  • Billings
  • Binary Repositories
  • Biotechnologies
  • Black Box Testing
  • Blockchains
  • Bloggings
  • Booking Systems
  • Bookings
  • Bookkeepings
  • Border Controls
  • Borrowings
  • Bots
  • Bridges
  • Broadcastings
  • Browser Compatibilities
  • Browser Support
  • Browsers
  • Budgetings
  • Bug Tracking
  • Build Automation
  • Build Pipelines
  • Build Systems
  • Build Tools
  • Build Verifications
  • Building Automation
  • Building Performances
  • Building Securities
  • Built Environments
  • Business
  • Business Alignments
  • Business Analysis
  • Business Analytics
  • Business Applications
  • Business Automation
  • Business Continuities
  • Business Excellence
  • Business Insurances
  • Business Intelligence
  • Business Logics
  • Business Management
  • Business Models
  • Business Operations
  • Business Plannings
  • Business Plans
  • Business Process
  • Business Process Automation
  • Business Process Management
  • Business Process Mappings
  • Business Roles
  • Business Software
  • Business Solutions
  • Business Strategies
  • Business Tools
  • Business Transformations
  • Business to Consumers
  • Business-to-Business
  • 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
  • Cities
  • Claims Management
  • Claims Management Systems
  • Claims Processing
  • Classification
  • Clean Energies
  • Clearing And Custodies
  • 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 Strategies
  • Climates
  • Cloud Adoptions
  • Cloud And Data Management Tools
  • Cloud Architectures
  • Cloud Assessments
  • Cloud Assets
  • Cloud Business Offices
  • Cloud Computes
  • Cloud Computing
  • Cloud Computing Environments
  • Cloud Computing Infrastructure
  • Cloud Computing Platforms
  • Cloud Computing Services
  • Cloud Connectivity
  • 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 Firewalls
  • 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 Measures
  • 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 Telephonies
  • 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 Software
  • Cloud-Based Technologies
  • Cloud-Native Distributed Systems
  • Cloud-based Data Warehousing
  • 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 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 Refactorings
  • 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
  • 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
  • Configuration Processes
  • Configurations
  • Connectivity
  • Connectors
  • Construction
  • Consulting Services
  • Consultings
  • Consumer Behaviors
  • Consumer Protection
  • Contact Centers
  • Contact Databases
  • Contact Management
  • Contacts
  • 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 Workloads
  • Containers
  • Content Creations
  • Content Deliveries
  • Content Delivery Networks
  • Content Generations
  • Content Management
  • Content Management Systems
  • Content Marketing
  • Content Personalizations
  • Content Strategies
  • Contents
  • Contexts and Dependency Injections
  • Continuous Deliveries
  • Continuous Deployments
  • Continuous Improvements
  • Continuous Integration/Continuous Deployments
  • Continuous Integrations
  • Continuous Learning
  • Continuous Model Monitoring
  • Continuous Monitoring
  • Contract Management
  • Contribution Management
  • Contributions
  • Control Planes
  • Control Systems
  • Controllers
  • Controls
  • Controls Frameworks
  • Conversational AI
  • Conversion Rate Optimizations
  • Coordinates
  • Coordination Services
  • Copywritings
  • Core Banking
  • Core Systems
  • Corporate Actions
  • Corporate Banking
  • Corporate Finances
  • Cost Accounting
  • Cost Containments
  • Cost Controls
  • Cost Management
  • Cost Optimizations
  • Country-Specific
  • Creative Productions
  • Creative Services
  • Creative Suites
  • 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 Languages
  • Cross Platforms
  • Cross-border Payments
  • Cross-browser Compatibilities
  • Cryptocurrencies
  • Cryptographies
  • Cs
  • Cultural Changes
  • Currencies
  • Custodies
  • Custody Platforms
  • Custody Products
  • Custody Services
  • Custom Development
  • Custom Software
  • Custom Solutions
  • Customer Analytics
  • Customer Data
  • Customer Data Platforms
  • Customer Databases
  • Customer Engagements
  • Customer Experience Design
  • Customer Experiences
  • Customer Feedback
  • Customer Intelligence
  • Customer Journey Mappings
  • Customer Journeys
  • Customer Management
  • Customer Onboardings
  • Customer Portals
  • Customer Relationship Management
  • Customer Satisfactions
  • Customer Segmentations
  • Customer Service
  • Customer Success
  • Customer Support
  • Customer Targetings
  • Customizations
  • Customs
  • Cyber Defenses
  • Cyber Governance
  • Cyber Programs
  • 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 Software
  • 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 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 Fetchings
  • Data Flow Processes
  • Data Flows
  • 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 Labelings
  • Data Lake Storage
  • Data Lakes
  • Data Leakage Preventions
  • Data Licensings
  • Data Lifecycle
  • Data Lifecycle Management
  • Data Lineages
  • Data Loss Preventions
  • Data Management
  • Data Management Controls
  • Data Management Frameworks
  • Data Management Platforms
  • Data Management Strategies
  • Data Management Systems
  • Data Management Tools
  • Data Manipulations
  • Data Mappings
  • Data Marts
  • Data Meshes
  • Data Migrations
  • Data Minimizations
  • Data Mining
  • 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 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 Transformation Workflows
  • Data Transformations
  • Data Transmissions
  • Data Validation
  • Data Vaults
  • Data Visualisations
  • Data Visualization Platforms
  • Data Visualization Software
  • Data Visualization Tools
  • Data Visualizations
  • 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 Design
  • Database Integrations
  • Database Management
  • Database Optimizations
  • Database Performance Tuning
  • Database Queries
  • Database Replications
  • Database Securities
  • Database Systems
  • Database Technologies
  • Database Tuning
  • Databases
  • Databases/Systems
  • 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 Pipeline Lifecycle
  • Deployment Pipelines
  • Deployment Plannings
  • Deployment Practices
  • Deployment Strategies
  • Deployment Tools
  • Deployments
  • Derbies
  • Derivatives
  • Derivatives Pricing Models
  • Derivatives Pricings
  • Design
  • Design Guidelines
  • Design Principles
  • Design Reviews
  • Design Software
  • Design Systems
  • Design Thinkings
  • Design Tools
  • Design Validation
  • Desktop Applications
  • Desktop Software
  • Desktops
  • DevOps Practices
  • 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 Marketing
  • Digital Marketing Technologies
  • Digital Media
  • Digital Operations
  • Digital Payments
  • Digital Products
  • Digital Publishings
  • Digital Self-services
  • Digital Services
  • Digital Signatures
  • Digital Solutions
  • Digital Strategies
  • Digital Systems
  • Digital Technologies
  • Digital Tools
  • Digital Transformations
  • Digital Twins
  • Digital Wallets
  • Digitals
  • Digitizations
  • Direct Debits
  • Directed Acyclic Graphs
  • Directory
  • Directory Integrations
  • 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 Libraries
  • Document Management
  • Document Management Systems
  • Document Object Models
  • Document Processing
  • Documentaries
  • Documentary Collections
  • Documentations
  • Documents
  • Drift Detections
  • Due Diligence Questionnaires
  • Due Diligences
  • Dynamic Application Security Testing
  • Dynamic Models
  • Dynamic Pricings
  • 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
  • Efficiency Optimizations
  • Elections
  • Electric Vehicles
  • Electronic Banking
  • Electronic Banking Channels
  • Electronic Communications
  • Electronic Data Interchange
  • Electronic Executions
  • Electronic Payments
  • Electronic Platforms
  • Electronic Tradings
  • Electronics
  • Email Marketing
  • Email Securities
  • Emails
  • Embeddings
  • Emergency Responses
  • Empirical Analysis
  • 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
  • Energy Performances
  • Engineering
  • Enterprise AI
  • Enterprise Applications
  • Enterprise Architectures
  • Enterprise Automation
  • Enterprise Communications
  • Enterprise Computing
  • 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 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 Handling
  • Event Management
  • Event Marketing
  • Event Meshes
  • Event Plannings
  • Event Processing
  • Event Registrations
  • Event Streamings
  • Event-driven Systems
  • Events
  • Examples
  • Excel Add-ins
  • Excels
  • Execution Management Systems
  • Executions
  • Executive Reportings
  • Expense Management
  • 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 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 Relations
  • Graph Databases
  • Graphic Design
  • Graphical User Interfaces
  • Graphics
  • Graphics Processing Units
  • Graphings
  • Graphs
  • Green Technologies
  • Group Mailboxes
  • HCM
  • HR Analytics
  • HR Management
  • HR Systems
  • HR Tech
  • HR Technologies
  • 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 Consultings
  • IT Governance
  • IT Infrastructure
  • IT Management
  • IT Modernizations
  • 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
  • Image Buildings
  • Image Editings
  • Image Generations
  • Implementations
  • In-Memory Databases
  • 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
  • Information Technology Infrastructure
  • Informationssystemes
  • Infrastructure
  • Infrastructure Analysis
  • Infrastructure As Codes
  • Infrastructure Components
  • Infrastructure Improvements
  • Infrastructure Management
  • Infrastructure Monitoring
  • Infrastructure Securities
  • Infrastructure Testing
  • 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
  • Intellimatches
  • Interactive Design
  • 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 Risk Models
  • Internal Systems
  • Internal Tools
  • International Banking
  • International Laws
  • International Markets
  • International Relations
  • International Trades
  • Internationalizations
  • Internet
  • Internet Applications
  • Internet Banking
  • Internet Technologies
  • Internet of Things
  • Interoperabilities
  • Intraday Liquidity Management
  • Intranets
  • Intrusion Detection Systems
  • Intrusion Detections
  • Intrusion Prevention Systems
  • Intrusion Preventions
  • 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 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 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 Management
  • Liquidity Optimizations
  • Liquidity Risk Management
  • Liquidity Risk Management Policies
  • Liquidity Stress Testing
  • Listed Derivatives
  • Live Chats
  • Load Balancers
  • Load Balancings
  • Load Testing
  • Loan Capital Markets
  • Loan Management Systems
  • Loan Processing
  • Local Custodies
  • Local GAAP
  • Local Regulatory Reports
  • Localizations
  • 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
  • Low-Latency Trading Systems
  • Lucenes
  • 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 Risk Modeling
  • 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
  • Material Design
  • Material Handling
  • Mathematical Modeling
  • Mathematics
  • Matrixes
  • Measurements
  • Media
  • Media Contents
  • Media Management
  • Media Monitoring
  • Media Productions
  • Mediations
  • Medical Devices
  • Medical Records
  • Meeting Management
  • Meetings
  • Memory Management
  • Mental Healths
  • Mentoring
  • Mergers And Acquisitions
  • Meridians
  • Message Brokers
  • Message Driven Architectures
  • Message Queues
  • Message Queuings
  • Messaging
  • Messaging Infrastructure
  • Messaging Platforms
  • Messaging Queues
  • Messaging Systems
  • Metadata
  • Metadata Management
  • Metadata Stores
  • Metrics
  • Micro-services
  • 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 Evaluations
  • Model Fine-tunings
  • Model Governance
  • Model Guidances
  • Model Integrity
  • Model Interpretabilities
  • Model Lifecycle Management
  • Model Maintenance
  • Model Management
  • Model Monitoring
  • Model Optimizations
  • Model Orchestration
  • Model Performance
  • Model Performance Monitoring
  • Model Pre-training Optimizations
  • Model Servings
  • Model Sparsifications
  • Model Testing
  • Model Trainings
  • Model Validation
  • Model Validation Techniques
  • Model Versionings
  • Modeling
  • 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-Factor Authentications
  • Multi-channels
  • Multi-clusters
  • Multi-platforms
  • Multi-regions
  • Multi-signatures
  • Multimedia Platforms
  • Multimedias
  • Multimodals
  • Multiplatforms
  • 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 Automation Tools
  • Network Configurations
  • Network Design
  • Network Devices
  • Network Engineering
  • Network Infrastructure
  • Network Management
  • Network Monitoring
  • Network Performance
  • Network Performance Management
  • Network Programming
  • Network Securities
  • Network Tools
  • Network Topologies
  • Networking
  • Neural Networks
  • Neurodiversities
  • New Tabs
  • News
  • News Services
  • Newsletters
  • No Codes
  • NoSQL
  • Nonprofits
  • Nostro
  • Notebooks
  • Notifications
  • Nuxts
  • OIA
  • OLE for Process Controls
  • ORM
  • OSX
  • Object Storage
  • Object Stores
  • Object-Oriented
  • Observability
  • Observability Platforms
  • Observability Stacks
  • Observability Toolings
  • Observability Tools
  • Office Applications
  • Office Management
  • Office Software
  • Office Suites
  • Omnichannels
  • On Demands
  • Onboardings
  • Online Advertising
  • Online Analytical Processing
  • Online Banking
  • Online Learning
  • Online Services
  • Online Tools
  • Online Transaction Processing
  • Ontologies
  • Open Data
  • Open Source
  • Open-Source Software
  • Open-Source Solutions
  • Open-source Frameworks
  • Open-source Languages
  • Open-source Libraries
  • 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 Learning
  • Organizational Structures
  • Organizational Transformations
  • Organizations
  • Outils De Tarifications
  • Outils De Travail Digitauxes
  • Outils Digitauxes
  • Outils Internes
  • Package Management
  • Package Managers
  • Packages
  • Packaging
  • Packet Captures
  • Packet Inspections
  • 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
  • Payroll
  • Payroll Payments
  • 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
  • Persistence Technologies
  • Persistences
  • Personal Finances
  • Personalizations
  • Pharmaceuticals
  • Photo Editings
  • 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
  • Plottings
  • 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 Accounting Systems
  • Portfolio Management
  • Portfolio Management Tools
  • Portfolio Reviews
  • Post Productions
  • Post-Trade Operations
  • Post-Trade Processing
  • Post-event Evaluations
  • Postmortems
  • Power Generations
  • Power Plants
  • 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
  • Privileged Access Controls
  • 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 Monitoring
  • Process Optimizations
  • Process Orchestration
  • Process Re-engineerings
  • Process Reengineerings
  • Process Safety
  • 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 Lifecycle Management
  • Product Management
  • Product Management Tools
  • Product Owners
  • Product Ownerships
  • Product Platforms
  • Product Roadmaps
  • Product Securities
  • Product Strategies
  • Product Testing
  • Product Upgrades
  • 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
  • Protocols
  • Prototype Development
  • Prototyping
  • Provisioning Process
  • Provisionings
  • Proxies
  • Prunings
  • Psychologies
  • Pub/Sub Systems
  • 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 Control Reports
  • 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 Languages
  • Query Optimizations
  • Query Tools
  • 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 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 Insights
  • Real-time Messaging Systems
  • Real-time Monitoring
  • Real-time Operations
  • Real-time Processing
  • Real-time Streaming Applications
  • Real-time Streamings
  • Real-time Systems
  • Real-time Visibility
  • Reasonings
  • Receivables Management
  • 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 Analytics Tools
  • 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 Architectures
  • Resilient Capabilities
  • Resilient Systems
  • Resource Allocations
  • Resource Management
  • Resource Plannings
  • Responsive Design
  • Rest Assured
  • Retail Technologies
  • Retails
  • Reusable Components
  • Revenue Generations
  • Revenue Management
  • Revenue Models
  • Revenue Optimizations
  • 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
  • Runtime Securities
  • Runtimes
  • SQL Databases
  • SQL Queries
  • SQL Stored Procedures
  • Safes
  • Safety
  • Safety Engineering
  • Sales
  • Sales Analytics
  • Sales Automation
  • 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 And Design
  • Security Architecture Reviews
  • Security Architectures
  • Security Assessments
  • Security Audits
  • Security Automation
  • Security Awareness Trainings
  • Security Baselines
  • Security Best Practices
  • Security Compliances
  • Security Controls
  • Security Dashboards
  • Security Design
  • Security Development Lifecycle
  • Security Engineering
  • Security Frameworks
  • Security Governance
  • Security Groups
  • Security Incident Responses
  • Security Information and Event Management
  • Security Infrastructure
  • Security Intelligence
  • Security Management
  • Security Measures
  • Security Mechanisms
  • Security Models
  • Security Monitoring
  • Security Operations
  • Security Orchestration, Automation and Responses
  • Security Patchings
  • Security Platforms
  • Security Procedures
  • Security Requirements
  • Security Reviews
  • Security Risk Assessments
  • Security Solutions
  • Security Systems
  • Security Testing
  • Security Tools
  • Security Updates
  • Segmentations
  • Self Services
  • Self-Service Dashboards
  • Self-healings
  • Self-improvements
  • Semantic Searches
  • Semantic Technologies
  • 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 Observability
  • Service Operations
  • Service Recovery
  • Service Strategies
  • Services
  • Servlet Containers
  • Servlets
  • Settlement Systems
  • Settlements
  • Shared Responsibilities
  • Shells
  • Shift-left Testing
  • Shippings
  • Short Message Services
  • Simple API for XML
  • Simulation Engines
  • Simulation Methods
  • Simulation Modeling
  • Simulation Platforms
  • Simulation Tools
  • Simulations
  • Simulators
  • Single Sign Ons
  • Site Reliability Engineering
  • Skill Development
  • Skills Development
  • Slides
  • Smart Contracts
  • Smart Grids
  • Smart Workings
  • Smartphones
  • Smoke Testing
  • Social
  • Social Media
  • Social Media Analytics
  • Social Media Management
  • Social Media Marketing
  • Social Networking
  • Social Networks
  • 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 Management
  • Software Platforms
  • Software Projects
  • Software Quality
  • Software Solutions
  • Software Systems
  • Software Technologies
  • Software Testing
  • Software Testing Methodologies
  • Software Tools
  • Software Troubleshooting
  • 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
  • Spend Management
  • Spitabs
  • Spreadsheet Functions
  • Spreadsheets
  • Stakeholder Management
  • Standups
  • Startups
  • State Machines
  • State Management
  • Stateful Computations
  • Statefuls
  • Static Analysis
  • Static Application Security Testing
  • Static Data Management
  • Static Routings
  • Statistical Analysis
  • Statistical Analysis Software
  • Statistical Analysis Techniques
  • Statistical Analyst Software
  • Statistical Computing
  • Statistical Methods
  • Statistical Modeling
  • Statistical Modellings
  • Statistical Models
  • Statistical Packages
  • Statistical Predictive Models
  • Statistical Techniques
  • Statistical Testing
  • Statistical Tools
  • Statistics
  • Stochastic Calculus
  • Stochastic Modeling
  • 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
  • Structured Data
  • Structured Databases
  • Structured Products
  • Structured Streamings
  • Subscription Management
  • Subscriptions
  • Supervised Learning
  • Supplier Contracts
  • Supplier Management
  • Supply Chain Finances
  • Supply Chain Management
  • Supply Chain Securities
  • Supply Chains
  • Support
  • Support Platforms
  • Support Systems
  • Surveillance Models
  • Surveillances
  • Sustainability
  • Sustainable Investings
  • Swift Messages
  • Switches
  • Synthetics
  • System Administration
  • System Analysis
  • System Applications
  • System Architectures
  • System Automation
  • System Configurations
  • System Design
  • System Development
  • System Enhancements
  • System Functional Testing
  • System Hardenings
  • System Implementations
  • System Information
  • System Integrations
  • System Interfaces
  • System Maintenance
  • System Management
  • System Monitoring
  • System Of Records
  • System Optimizations
  • System Performances
  • System Programming
  • 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 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 Controls
  • Test Data Preparations
  • Test Design
  • Test Doubles
  • Test Engineering
  • Test Environments
  • Test Executions
  • Test Management
  • Test Management Tools
  • Test Plannings
  • Test Reportings
  • Test Scriptings
  • Test Strategies
  • Test Systems For Web Applications
  • Test Tools
  • 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 Integrations
  • Third-Party Software
  • 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
  • Tokenizations
  • Tokenized Assets
  • Tokens
  • Tools
  • Total Rewards
  • Tracing
  • Tracking
  • Tracking Software
  • Tracs
  • Trade Bookings
  • Trade Compliances
  • Trade Confirmations
  • Trade Credit Insurances
  • Trade Finance Systems
  • Trade Finances
  • Trade Life Cycles
  • Trade Lifecycle Management
  • Trade Management
  • Trade Managers
  • 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 Management
  • Training Data
  • Training Management
  • Training Platforms
  • Trainings
  • Transaction Banking
  • Transaction Banking Products
  • Transaction Management
  • Transaction Monitoring
  • Transaction Processing
  • Transfer Learning
  • Transformations
  • Transformers
  • Translations
  • Transparency
  • Transportation
  • Travel Management
  • Travels
  • Treasuries
  • Treasury Management
  • Treasury Operations
  • Treasury Solutions
  • Triple Stores
  • Troubleshooting
  • Tuning
  • Turkishes
  • Two-factor Authentications
  • Type Safes
  • Type Safety
  • UI
  • UI Design
  • UX
  • UX Design
  • Underwritings
  • Unified Communications
  • Unit Testing
  • Unixes
  • Unstructured Data
  • Unsupervised Learning
  • Updates
  • Uptime
  • Usabilities
  • Usability Testing
  • User Acceptance Testing
  • User Administration
  • 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
  • Vehicle Repairs
  • Vendor Databases
  • 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 Analytics
  • Visual Design
  • Visual Management
  • Visualizations
  • Voice
  • Voice Assistants
  • Voice Recognitions
  • Volume Managers
  • Votings
  • Vues
  • Vulnerability Analysis
  • Vulnerability Assessments
  • Vulnerability Management
  • Vulnerability Management Tools
  • Vulnerability Scanners
  • Vulnerability Scanning Tools
  • Vulnerability Scannings
  • Wallets
  • Warehouse Technologies
  • Wealth Management
  • Web API
  • Web Analytics
  • Web Application Development
  • Web Application Securities
  • Web Application Technologies
  • 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 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 Tools
  • Workflow Visualizations
  • Workflows
  • Workforce Management
  • Working Capital
  • Workload Orchestration
  • Workplace Analytics
  • Workplace Safety
  • Workplace Technologies
  • Workshops
  • Workspaces

Services — Total: 468

  • 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
  • Audatex
  • AutoCAD
  • Autodesk Fusion 360
  • Autodesk Maya
  • Avaloq
  • Axway
  • Azure API Management
  • 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 Networking
  • Azure Pipelines
  • Azure Repo
  • Azure Service Bus
  • Azure Storage
  • Azure Synapse Analytics
  • Azure Virtual Desktop
  • Azure Virtual Machines
  • Backstage
  • BigCommerce
  • Bitbucket
  • Bloomberg
  • Bloomberg AIM
  • Bloomberg Buyside Enterprise Solutions
  • Bloomberg EMSX
  • Bloomberg Economics
  • Bloomberg Enterprise Data
  • Bloomberg Index Solutions Limited (BISL)
  • Bloomberg Intelligence
  • Bloomberg News
  • Bloomberg Professional Service
  • Bloomberg Query Language (BQL)
  • Bloomberg TV
  • Bloomberg Tax (BTAX)
  • Bloomberg Television and Radio
  • Bloomberg Terminal
  • Bloomberg Tradebook
  • Boomi
  • Box
  • Broadcom
  • BrowserStack
  • Bruno
  • Burp Suite
  • Calypso
  • Camtasia
  • Canva
  • Cflow
  • ChatGPT
  • Checkmarx
  • Choreo
  • Cilium
  • Circana
  • Cisco
  • Cisco Catalyst Center
  • Cisco Control Hub
  • 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
  • Facebook Ads
  • Facebook Business Manager
  • FactSet
  • Factiva
  • Fargate
  • Fern
  • Figma
  • Finch
  • ForgeRock
  • Fortify
  • Fortinet
  • Fusio
  • G2
  • GCP Cloud Storage
  • Gemini
  • Geneos
  • GitHub
  • GitHub Actions
  • GitHub Copilot
  • GitLab
  • Global Relay
  • Gmail
  • Gong
  • Google
  • 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
  • Instagram
  • IntelliJ IDEA
  • International Business Machines
  • Intuit
  • Istio
  • JFrog
  • JFrog Artifactory
  • Jira
  • Jitterbit
  • Juniper
  • Juniper Networks
  • Jupyter Notebook
  • Kinesis
  • Knit
  • Kondor
  • Konfig
  • Kong
  • Kuma
  • Lambda
  • Lightroom
  • LinkedIn
  • 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
  • Montran
  • Moody's
  • MuleSoft
  • Murex
  • NASA
  • Nango
  • Navision
  • Nessus
  • NetApp
  • NetBox
  • NetFlow
  • Netcool
  • Netscout
  • New Relic
  • Notion
  • Nutanix
  • Ocelot
  • Ollama
  • OpenAI
  • OpenAI APIs
  • 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 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 Concur Expense
  • 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
  • Sentry System
  • Service Cloud
  • ServiceNow
  • SharePoint
  • Shell
  • Siebel
  • SimCorp Dimension
  • Slack
  • Snowflake
  • SolarWinds
  • Solaris
  • Solaris Zones
  • Sparx Enterprise Architect
  • Splunk
  • Spot
  • Square
  • Stripe
  • Sybase
  • TIBCO
  • Tableau
  • Tableau Desktop
  • Tableau Server
  • Talend
  • Tanium
  • TeamCity
  • Temenos Transact
  • Temporal
  • Teradata
  • Torii
  • Tradeweb
  • Traiana
  • Trellix
  • Trellix Web Gateway
  • Trioptima
  • Triton
  • Tropic
  • Twitter
  • Tyk
  • Unity
  • Unix
  • VMware
  • Vantage
  • Varonis
  • Vendr
  • Vercel
  • Veritas Cluster
  • Veritas InfoScale
  • Veritas NetBackup
  • Veritas Volume Manager
  • Vessel
  • Visio
  • Visualforce
  • WebLogic
  • WebSphere
  • WhatsApp
  • Windmill
  • Workday
  • Workday Extend
  • Workday Financials
  • Workday Integration
  • Workday Payroll
  • Workday Recruiting
  • Workday Security
  • Workday Studio
  • Xceptor
  • Yardi
  • Youtube
  • Zendesk
  • Zoho
  • Zoom
  • ZoomInfo
  • Zylo
  • n8n
  • nOps

Tools — Total: 290

  • 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 Directory
  • 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 Kafka
  • Apache Knox
  • Apache Kudu
  • Apache Kylin
  • Apache Logging Services
  • Apache Lucene
  • Apache MINA
  • Apache Maven
  • Apache Mesos
  • Apache NetBeans
  • Apache NiFi
  • Apache ORC
  • Apache Olingo
  • Apache Oozie
  • Apache OpenJPA
  • Apache OpenOffice
  • Apache OpenWebBeans
  • 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 Shiro
  • Apache SkyWalking
  • Apache Sling
  • Apache Solr
  • Apache SpamAssassin
  • Apache Spark
  • Apache Spatial
  • Apache Steve
  • Apache Storm
  • Apache Streams
  • Apache Struts
  • Apache Subversion
  • Apache Synapse
  • Apache TVM
  • Apache Tapestry
  • Apache Tcl
  • Apache Tez
  • Apache Tika
  • Apache TinkerPop
  • Apache TomEE
  • Apache Tomcat
  • Apache Traffic Control
  • Apache Traffic Server
  • Apache Turbine
  • Apache VCL
  • Apache Velocity
  • Apache Web Services
  • Apache XML Graphics
  • Apache Xalan
  • Apache Xerces
  • Apache ZooKeeper
  • Appium
  • Argo
  • BFE
  • Backstage
  • Buildpacks
  • C#
  • C++
  • Capsule
  • Chaos Mesh
  • Chef
  • Cilium
  • ClickHouse
  • Cloud Custodian
  • Consul
  • Containerd
  • Contour
  • Copa
  • Cortex
  • Crossplane
  • Cucumber
  • Dex
  • Django
  • Docker
  • Docker Swarm
  • Eclipse
  • Eclipse RDF4J
  • Elastic Stack
  • Elasticsearch
  • Elk
  • Elk Stack
  • Envoy
  • Ethereum
  • Falco
  • FastAPI
  • Fluid
  • Flux
  • Git
  • Grafana
  • HAMI
  • Harbor
  • Hashicorp Vault
  • Helm
  • Hexa
  • Hibernate
  • Hugging Face Transformers
  • Interlink
  • Istio
  • JBoss
  • JMock
  • JUnit
  • Jaeger
  • Jenkins
  • Jest
  • Jupyter
  • K3s
  • KCL
  • KEDA
  • KServe
  • Kafka Connect
  • Keycloak
  • Kibana
  • Koordinator
  • 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
  • OpenTelemetry
  • OpenTofu
  • PHP
  • Packer
  • Pandas
  • Perl
  • Pixie
  • Playwright
  • Podman
  • Porter
  • PostgreSQL
  • PowerShell
  • Prometheus
  • PuTTY
  • Pulumi
  • Puppet
  • PySpark
  • PyTorch
  • Python
  • R
  • RabbitMQ
  • Radius
  • React
  • React Native
  • Redis
  • Redux
  • Rook
  • Rundeck
  • SOPS
  • SPIFFE
  • 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
  • Thanos
  • Thymeleaf
  • TiKV
  • Ubuntu
  • Vault
  • Vineyard
  • Vite
  • Vitess
  • Vue.js
  • WebFlux
  • Wireshark
  • WordPress
  • YARN
  • Zabbix
  • Zot
  • bootc
  • cURL
  • eBPF
  • gRPC
  • jQuery
  • kpt
  • werf

Standards — Total: 265

  • .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
  • Containerfile
  • 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
  • Dockerfile
  • 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
  • Health Standards
  • 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
  • Modeling Language
  • 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
  • PDF
  • 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
  • REST Services
  • 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-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.

01

Where you stand

The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.

See full report →
02

What to build

Capabilities being built across the peer set — tied to the markets you actually serve.

View capabilities →
03

Where to go next

A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.

Get your navigation →
04

Control what you build

Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.

First capability live in 90 days.

Become a design partner →