Video Streaming Industry Signals

Companies operating digital platforms that deliver on-demand and live video content to consumers via the internet.

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

Across 22 companies in Video Streaming we detected 2166 areas, 383 services, 233 tools, and 218 standards — producing an aggregate signal score of 16633.

How to read this page: Impact Report is the narrative read-out for the industry. Companies lists the 22 organizations included in the aggregate. Capabilities are Naftiko agent workflows common to Video Streaming — 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.

Video Streaming Industry Technology Investment Report

Prepared by Naftiko May 2026

Executive Summary

The Video Streaming industry is one of the most technology-intensive verticals in the Naftiko dataset, with 16 companies spanning traditional broadcast networks, streaming-native platforms, sports leagues, and digital media conglomerates. The breadth of this cohort — from Warner Brothers and Netflix at the top to the National Football League and Blizzard Entertainment at varying tiers — creates a landscape where investment intensity varies enormously not by technology readiness alone, but by business model architecture. Streaming-native companies like Netflix have built AI into their core product delivery mechanisms, while legacy broadcast networks are retrofitting AI capabilities onto decades-old content workflows. Warner Brothers leads AI adoption with a score of 71, Netflix leads data infrastructure with 122, and Hearst emerges as a surprising operational powerhouse with top scores in automation (56), containers (31), and operations (67).

The most notable structural signal in Video Streaming is the scale of data and cloud investment relative to other industries. Warner Brothers’ cloud score of 133 and data score of 130 are among the highest absolute values in any Naftiko-tracked vertical, reflecting the engineering reality of delivering high-bitrate video at global scale. Services adoption is also exceptionally high — Warner Brothers scores 266 and Netflix 244 in the Services dimension — indicating that SaaS-enabled workflows have penetrated Video Streaming more deeply than nearly any other sector. The strategic challenge for this industry is converting that broad tool adoption into differentiated AI capabilities: most companies have the toolchain, but the leaders are pulling ahead on data depth, governance maturity, and domain-specific AI applications for content discovery, ad targeting, and production automation.


Layer 1: Foundational Layer

This layer measures core technology infrastructure investment across AI capabilities, cloud adoption, open-source engagement, programming language breadth, and software development practices spanning 16 Video Streaming companies.

Artificial Intelligence — Top Company: Warner Brothers (71)

Warner Brothers (71), NBC (67), Netflix (66), Hearst (61), and Comcast (59) form the top tier of AI adoption, with Disney (44) and Paramount (34) in the second tier. Riot Games (34), Condé Nast (30), Spotify (25), and the sports leagues (National Hockey League 24, National Basketball Association 19) form a capable mid-tier, while USA TODAY (18), Major League Baseball (18), and National Football League (12) trail. Across all 16 companies, AI tooling is fully saturated — Datadog, GitHub, Google, AWS, TensorFlow, Kubeflow, and Pandas all appear at 16-company adoption — indicating that basic AI toolchain deployment is a baseline expectation rather than a differentiator in this competitive sector.

Cloud — Top Company: Warner Brothers (133)

Warner Brothers (133), Netflix (120), and Hearst (116) lead cloud investment by a significant margin over Comcast (105), NBC (101), and Disney (97). Paramount (69), Riot Games (66), and Blizzard Entertainment (63) form the second tier, with sports leagues and USA TODAY at the lower end. The universal adoption of AWS and Microsoft alongside Google across all 16 companies confirms the multi-cloud standard, and the high absolute scores across the entire cohort reflect the compute-intensive reality of video transcoding, content delivery network management, and real-time stream processing that define cloud economics in this sector.

Open-Source — Top Company: Netflix (44)

Netflix (44), Warner Brothers (43), and Comcast (43) lead open-source engagement in a very tight top cluster, with Hearst (40), NBC (36), Condé Nast (31), and Blizzard Entertainment (31) following. Netflix’s open-source leadership is well-documented — the company has contributed foundational streaming technology projects including Conductor, Hystrix, and Zuul to the open-source ecosystem, and its score reflects both consumption and contribution patterns.

Languages — Top Company: Netflix (46)

Netflix (46), Comcast (41), and Warner Brothers (40) lead programming language breadth, with NBC (35), Hearst (33), and Riot Games (32) following. The universal adoption of TypeScript, Kotlin, Python, and R confirms that polyglot engineering is standard practice across all 16 companies, and Kotlin’s universal presence distinguishes this vertical as having stronger mobile and JVM-ecosystem investment than many other industries.

Code — Top Company: Comcast (38)

Comcast (38), Warner Brothers (36), and Disney (34) lead code practice investment, with Hearst (31), Riot Games (31), Netflix (31), and NBC (31) forming a tightly clustered second band at 30-31. SonarQube and Git appear at universal 16-company adoption, confirming that code quality automation and version control are absolute baselines across the entire Video Streaming sector.


Layer 2: Retrieval & Grounding

This layer captures investment in data infrastructure, database management, virtualization, and API specification practices that enable AI systems to access and reason over structured knowledge across 16 Video Streaming companies.

Data — Top Company: Warner Brothers (130)

Warner Brothers (130), Netflix (122), NBC (113), Comcast (104), Hearst (98), and Disney (97) dominate data infrastructure investment. The breadth of high-scoring companies in this dimension reflects the data-intensive nature of streaming operations: viewer behavior telemetry, content metadata, ad performance data, and delivery quality metrics all require substantial data infrastructure to support real-time decision making. Blizzard Entertainment (72), Paramount (69), and Condé Nast (67) represent a capable second tier, while sports leagues cluster in the 48-53 range and National Football League (23) trails significantly.

Databases — Top Company: Warner Brothers (42)

Warner Brothers (42), Netflix (34), Disney (34), and Hearst (33) lead database investment, with Comcast (32) and NBC (30) close behind. The widespread adoption of ClickHouse across all 16 companies is a distinctive signal — ClickHouse’s columnar analytics architecture is particularly well-suited to the high-volume, high-cardinality event streams that define streaming platform analytics workloads.

Virtualization — Top Company: Netflix (25)

Netflix (25), Warner Brothers (22), and Hearst (21) and NBC (21) lead virtualization investment. Netflix’s top position in virtualization is consistent with its history of pioneering container-based microservices deployment patterns, including its Titus container management system, which predates Kubernetes as an internal engineering platform.

Specifications — Top Company: Netflix (14)

Netflix (14), Warner Brothers (12), and Disney (11) lead specification investment, with NBC (10), Hearst (9), and Comcast (9) following. The higher absolute scores relative to other industries confirm that Video Streaming companies have invested more in formal API and data specification practices — consistent with the complexity of their content distribution, partner integration, and device ecosystem requirements.


Layer 3: Customization & Adaptation

This layer assesses each company’s capacity to fine-tune models, manage model versions, build multimodal pipelines, and develop domain-specific AI applications across 16 Video Streaming companies.

Data Pipelines — Top Company: Warner Brothers (15)

Warner Brothers (15), Disney (13), and Netflix (11) lead data pipeline investment, with Hearst (10) and NBC (10) close behind. The more evenly distributed scores in this dimension — compared to the top-heavy Foundational layer — suggest that formal ML pipeline infrastructure is becoming more broadly developed across the Video Streaming cohort as companies move from ad-hoc model deployment to productionized ML systems.

Model Registry & Versioning — Top Company: Netflix (19)

Netflix (19), Warner Brothers (18), and Comcast (18) lead model registry and versioning investment, with Hearst (17) and NBC (16) following. Netflix’s leadership in model versioning is consistent with its mature ML platform — the company operates thousands of models in production for recommendation, encoding optimization, and A/B test personalization, all of which require rigorous model versioning infrastructure.

Multimodal Infrastructure — Top Company: Hearst (19) / Warner Brothers (19)

Hearst (19) and Warner Brothers (19) tie for the top multimodal infrastructure score, with Netflix (18) and Riot Games (14) following. Multimodal investment in Video Streaming encompasses computer vision for content moderation, audio analysis for subtitling and metadata enrichment, and image recognition for thumbnail optimization — all high-value applications given the scale of content libraries in this sector.

Domain Specialization — Top Company: Paramount (2) / Hearst (2) / Disney (2)

Paramount (2), Hearst (2), Disney (2), Warner Brothers (2), NBC (2), and Comcast (2) all record minimal domain specialization scores. The flat distribution of very low scores indicates that purpose-built vertical AI models for Video Streaming — content-aware encoding models, genre-specific recommendation systems, character recognition models for IP protection — are nascent investments rather than deployed production capabilities across the sector.


Layer 4: Efficiency & Specialization

This layer evaluates operational automation depth, containerization maturity, platform engineering investment, and overall operations capability across 16 Video Streaming companies.

Automation — Top Company: Hearst (56) / Netflix (56) / Warner Brothers (56)

Hearst (56), Netflix (56), and Warner Brothers (56) share the top automation score in a three-way tie, with NBC (50) and Comcast (50) close behind. Riot Games (45), Paramount (44), and Disney (41) follow, with Condé Nast (35), Major League Baseball (35), and Blizzard Entertainment (35) forming the next band. The tight clustering of scores at the top reflects that automation infrastructure — CI/CD pipelines, infrastructure as code, deployment automation — has converged on similar investment levels among the leading streaming companies.

Containers — Top Company: Hearst (31)

Hearst (31), Netflix (29), and Warner Brothers (29) lead container adoption, with Comcast (26) and Disney (23) following. Hearst’s top position in containers is notable given that it is not typically perceived as a technology-forward company relative to Netflix — the score may reflect strategic infrastructure modernization investments made to compete more effectively in digital content distribution.

Platform — Top Company: Netflix (41)

Netflix (41), NBC (40), and Warner Brothers (39) lead platform engineering investment, with Hearst (38) and Comcast (38) close behind. Netflix’s platform investment lead is consistent with its internal developer platform strategy — the company has historically invested heavily in internal tooling, service mesh, and observability infrastructure that enables engineering velocity at scale.

Operations — Top Company: Hearst (67)

Hearst (67), Netflix (66), and Warner Brothers (66) again share the top tier of operations investment, with Comcast (65) essentially tied. The near-perfect parity among the top four companies in operations reflects the operational maturity required to reliably deliver streaming content at scale — all four operate 24/7 content delivery infrastructure where operational excellence is a product requirement.


Layer 5: Productivity

This layer captures adoption of developer productivity tools including AI coding assistants, copilot integrations, SaaS productivity applications, and service catalogs across 16 Video Streaming companies.

Software As A Service (SaaS) — Top Company: Riot Games (2) / Comcast (2)

Riot Games (2) and Comcast (2) lead SaaS productivity scores, with Hearst (1), Condé Nast (1), Netflix (1), Disney (1), Warner Brothers (1), and NBC (1) recording minimal signals. The broad but very low distribution suggests that AI-native developer productivity tools have begun to appear across Video Streaming but have not yet reached any company’s investment threshold for significant adoption.

Code — Top Company: Comcast (38)

Consistent with the Foundational Code dimension, Comcast (38), Warner Brothers (36), and Disney (34) lead code productivity investment, with a broad mid-tier from Hearst (31) to Blizzard (26) and a longer tail extending to National Football League (11).

Services — Top Company: Warner Brothers (266)

Warner Brothers (266), Netflix (244), NBC (232), Comcast (223), Hearst (215), and Disney (204) lead services adoption by substantial margins, with the entire cohort showing universally high services scores. The 20 universally-adopted services — including Datadog, GitHub, Salesforce, Box, Microsoft Teams, and Bitbucket — reflect the SaaS-saturated enterprise software environments of major media companies. Bitbucket’s universal presence distinguishes this cohort from other industries and reflects the historical Atlassian ecosystem adoption across media and entertainment.


Layer 6: Integration & Interoperability

This layer measures API investment, integration platform maturity, event-driven architecture adoption, architectural patterns, and participation in open standards bodies including Apache and CNCF across 16 Video Streaming companies.

API — Top Company: Netflix (27)

Netflix (27), Warner Brothers (22), and Hearst (21) lead API investment, with Comcast (19) and NBC (17) following. Netflix’s API leadership reflects its extensive partner ecosystem — device manufacturers, smart TV platforms, ISP partnerships, and content licensing integrations all require robust API management. The scores across all 16 companies are notably higher than in many other Naftiko-tracked industries, confirming that API investment is a competitive requirement in Video Streaming rather than an advanced capability.

Integrations — Top Company: Netflix (37)

Netflix (37), Warner Brothers (31), and Hearst (26) lead integration platform investment. The integration depth in Video Streaming reflects the complexity of content supply chains — licensing systems, rights management, distribution platform APIs, ad tech integrations, and analytics pipelines all require sophisticated integration middleware.

Event-Driven — Top Company: Netflix (24)

Netflix (24), Warner Brothers (23), and Hearst (20) lead event-driven architecture, with Comcast (19) and Disney (17) following. Event-driven patterns are particularly valuable in Video Streaming for real-time content availability triggers, viewer engagement events, ad delivery optimization, and live stream management — all use cases where latency-sensitive event processing drives business value.

Patterns — Top Company: Netflix (21)

Netflix (21), Warner Brothers (19), and Disney (16) lead architectural patterns investment, with Comcast (16) and NBC (15) close behind. The Semantic Kernel tool’s universal 16-company adoption is a distinctive signal — it suggests broad awareness and initial integration of Microsoft’s AI orchestration framework across the Video Streaming sector as companies begin to layer AI agents and copilot experiences into their development workflows.

Specifications — Top Company: Netflix (14)

Consistent with the Retrieval layer, Netflix (14) and Warner Brothers (12) lead specification investment. The higher absolute scores across this dimension compared to other industries confirm that formal API specification is better developed in Video Streaming than in most other Naftiko-tracked verticals.

Apache — Top Company: Netflix (13) / Warner Brothers (13)

Netflix (13) and Warner Brothers (13) tie for top Apache project engagement, with Hearst (10) following. Ethereum’s universal 16-company adoption is a surprising signal — likely reflecting JavaScript/TypeScript Ethereum developer tools that appear in job postings or developer profiles rather than direct blockchain investment, or alternatively internal token-based loyalty or rights management experiments.

CNCF — Top Company: Netflix (28)

Netflix (28), Hearst (26), and Warner Brothers (26) lead CNCF adoption, with scores substantially higher than in Utilities or Waste Management, confirming that cloud-native foundation investment is more mature and intentional in Video Streaming.


Layer 7: Statefulness

This layer evaluates observability infrastructure, governance frameworks, security posture, and data management practices that support reliable and auditable AI system operation across 16 Video Streaming companies.

Observability — Top Company: Comcast (45)

Comcast (45), Warner Brothers (43), and Netflix (41) lead observability investment. Comcast’s top observability position reflects its infrastructure service provider heritage — as an ISP and network operator in addition to a content company, Comcast operates some of the most complex telemetry and monitoring infrastructure in the cohort.

Governance — Top Company: Warner Brothers (33)

Warner Brothers (33), NBC (32), and Comcast (30) lead governance investment. Warner Brothers’ governance leadership likely reflects the complexity of its IP rights management, licensing governance, and content protection obligations across its extensive film and television catalog.

Security — Top Company: Comcast (68)

Comcast (68), Warner Brothers (66), and NBC (59) dominate security investment, with scores significantly higher than any other Naftiko-tracked industry. Comcast’s security leadership reflects its dual role as a network infrastructure provider and content company — the combination creates security obligations that extend from content protection and DRM to network-level threat detection and subscriber data privacy.

Data — Top Company: Warner Brothers (130)

Consistent with the Retrieval layer, Warner Brothers (130), Netflix (122), and NBC (113) lead data investment. The repetition of these scores across layers confirms that data infrastructure is the foundational investment driver across all statefulness and governance dimensions in Video Streaming.


Layer 8: Measurement & Accountability

This layer captures testing and quality engineering investment, observability depth, developer experience practices, and business ROI measurement frameworks across 16 Video Streaming companies.

Testing & Quality — Top Company: Netflix (23)

Netflix (23), Comcast (19), and Warner Brothers (14) lead testing and quality investment. Netflix’s testing leadership is consistent with its chaos engineering culture — the company pioneered the Simian Army and chaos testing practices that have become industry standards, reflecting a testing investment philosophy that goes far beyond static analysis to include fault injection and resilience testing.

Observability — Top Company: Comcast (45)

Consistent with the Statefulness layer, Comcast (45), Warner Brothers (43), and Netflix (41) lead observability. The universal adoption of Datadog and GitHub across all 16 companies confirms that observability tooling is fully commoditized in Video Streaming — differentiation lies in observability practice depth rather than tool selection.

Developer Experience — Top Company: Hearst (24) / NBC (24)

Hearst (24) and NBC (24) tie at the top of developer experience investment, with Comcast (22), Warner Brothers (22), and Netflix (21) close behind. Hearst’s unexpected tie for the top developer experience position reinforces its broader operational investment story — the company appears to have made systematic engineering culture investments that are reflected consistently across efficiency and experience dimensions.

ROI & Business Metrics — Top Company: Netflix (50) / Warner Brothers (50)

Netflix (50) and Warner Brothers (50) tie at the top of ROI and business metrics investment, with Disney (48) and Comcast (46) close behind. The high absolute scores reflect the rigorous financial modeling cultures of companies that operate capital-intensive content businesses with complex revenue models spanning subscription, advertising, licensing, and theatrical.


Layer 9: Governance & Risk

This layer assesses regulatory compliance posture, AI review and approval workflows, security program maturity, governance frameworks, and privacy and data rights practices across 16 Video Streaming companies.

Regulatory Posture — Top Company: Comcast (13)

Comcast (13), NBC (11), and Netflix (10) lead regulatory posture investment. Comcast’s regulatory leadership reflects its obligations as a licensed broadcast network operator, an ISP subject to FCC oversight, and a cable system operator with municipal franchise agreements — the most complex regulatory portfolio in the Video Streaming cohort.

AI Review & Approval — Top Company: Hearst (17)

Hearst (17), Netflix (15), and Warner Brothers (15) lead AI review and approval framework investment. Hearst’s leadership in AI governance is significant — for a media company known for its editorial brand quality, establishing formal AI review processes for content generation, editorial assistance, and advertising targeting is a strategic reputation investment as well as an operational control.

Security — Top Company: Comcast (68)

Consistent with the Statefulness layer, Comcast (68), Warner Brothers (66), and NBC (59) dominate security investment. The extremely high absolute security scores distinguish Video Streaming as among the highest-security-invested industries in the Naftiko dataset.

Governance — Top Company: Warner Brothers (33)

Governance scores are consistent with the Statefulness layer, with Warner Brothers (33), NBC (32), and Comcast (30) leading. The concentration of governance investment among the broadcast network and cable operator companies reflects their regulated status and the governance infrastructure required to manage complex content rights, licensing, and affiliate relationships.

Privacy & Data Rights — Top Company: Hearst (5) / Warner Brothers (5) / NBC (5)

Hearst (5), Warner Brothers (5), and NBC (5) tie for the top privacy and data rights score, with the broader cohort showing very low absolute values across this dimension. For an industry that collects some of the richest behavioral data in the consumer economy — viewing patterns, content preferences, engagement signals — the low privacy scores represent a significant governance gap relative to the data investment signals.


Layer 10: Economics & Sustainability

This layer measures AI cost optimization practices, cloud provider strategy sophistication, partnership and ecosystem investment, and talent and organizational design capabilities across 16 Video Streaming companies.

AI FinOps — Top Company: Hearst (9) / Warner Brothers (9)

Hearst (9) and Warner Brothers (9) tie for the top AI FinOps score, with Netflix (7) following. For companies operating at the scale of Warner Brothers and Netflix — with thousands of AI models and vast compute workloads for video encoding, recommendation, and personalization — AI FinOps investment is a material cost management lever that justifies dedicated investment.

Provider Strategy — Top Company: Hearst (16)

Hearst (16), Warner Brothers (15), and Paramount (13) lead provider strategy investment. Hearst’s top position in provider strategy may reflect its diversified media business model — across magazines, television, digital media, and newspapers — which requires sophisticated multi-vendor strategy to serve diverse technology requirements.

Partnerships & Ecosystem — Top Company: Riot Games (22)

Riot Games (22), Netflix (18), and Disney (16) lead partnership and ecosystem investment. Riot Games’ top position reflects its extensive esports ecosystem partnerships — tournament organizers, streaming platform agreements, hardware sponsors, and regional league operators — which require the most complex partnership management of any company in the cohort.

Talent & Organizational Design — Top Company: Hearst (18) / Warner Brothers (18) / NBC (18)

Hearst (18), Warner Brothers (18), and NBC (18) share the top talent and organizational design score. The equal distribution among these three companies suggests that AI talent strategy is a common investment priority among the major traditional media companies as they manage the most significant workforce transformation in their history.


Layer 11: Storytelling & Entertainment & Theater

This layer captures strategic alignment signaling, technology standardization maturity, and merger and acquisition activity as indicators of competitive positioning and market strategy across 16 Video Streaming companies.

Alignment — Top Company: Hearst (29)

Hearst (29), Riot Games (28), and Netflix (26) lead strategic alignment. Hearst’s top alignment score is a notable finding — it suggests the company has the most coherent internal and external narrative connecting its AI investment signals to its stated business strategy, which may reflect a disciplined technology modernization program communicated consistently across engineering, product, and corporate communications channels.

Standardization — Top Company: Netflix (12) / NBC (12)

Netflix (12) and NBC (12) tie for the top standardization score, with Disney (11) and Warner Brothers (11) close behind. Netflix’s standardization investment reflects its history of internal standards development — the company has created and enforced technical standards for streaming protocol implementation, encoding profiles, and API design that have influenced the broader industry.

Mergers & Acquisitions — Top Company: Warner Brothers (23)

Warner Brothers (23), Condé Nast (21), and Netflix (18) lead M&A activity signals. Warner Brothers’ M&A leadership reflects its position at the center of the entertainment industry’s consolidation wave — the Discovery-Warner Bros. merger, followed by ongoing portfolio rationalization, represents among the most complex M&A activity in the cohort. Condé Nast’s second-place position suggests active technology acquisition activity alongside its media brand portfolio.


Industry Strategic Assessment

The Video Streaming industry represents the most mature AI investment environment in the Naftiko dataset — not because every company is advanced, but because the industry’s top companies have made AI a core infrastructure investment rather than a peripheral experimentation budget. Netflix, Warner Brothers, and Hearst consistently appear at the top across the most consequential dimensions: data infrastructure, operations, automation, and model management. The scale of data scores — Warner Brothers at 130, Netflix at 122, NBC at 113 — reflects an industry that generates and consumes behavioral and operational data at a pace that most other industries cannot match, and that data velocity creates both the opportunity and the obligation for advanced AI investment.

The strategic fracture in this industry is not between the top performers and a single laggard, but rather between the streaming-native and content-platform companies on one side, and the sports leagues, trade publishing companies, and game studios on the other. National Football League (12 in AI), USA TODAY (18 in AI), and Major League Baseball (18 in AI) are not technology companies by orientation, and their video streaming and digital media operations are secondary to their core business models. The gap between these organizations and Netflix is structurally inevitable and will likely widen as AI-driven recommendation, personalization, and content production automation continue to compound advantage for companies that have made AI a first-class engineering investment.

Vendor opportunities in Video Streaming are concentrated in three areas. First, AI-native content production tooling — automated captioning, localization, thumbnail optimization, and content moderation at scale are already deployed by the leaders but represent growth opportunities among the mid-tier companies including Riot Games, Paramount, and Condé Nast. Second, privacy and data rights governance technology is the most underinvested dimension relative to the data intensity of this sector — a governance vendor that can offer AI-specific privacy controls integrated with streaming analytics infrastructure addresses a genuine compliance gap. Third, AI FinOps for video workloads — the combination of high compute costs for encoding, model inference at viewer scale, and recommendation serving creates a specialized cost optimization problem that generic cloud FinOps tools have not fully addressed, representing a category opportunity for streaming-specific AI cost management platforms.

Companies — Total:22

  • AMC Networks
    AMC Networks is a global entertainment company that owns and operates distinctive cable television and...
  • Blizzard Entertainment
    An American video game developer and publisher known for iconic franchises like World of Warcraft,...
  • Comcast
    A global media and technology conglomerate and the largest cable television and internet provider in...
  • Condé Nast
    A global media company producing some of the world's most iconic magazine brands including Vogue,...
  • Disney
    A global entertainment conglomerate operating theme parks, film studios, television networks, and streaming services. One...
  • Fox Corporation
    Fox Corporation is a U.S. media company whose portfolio includes Fox News Media, Fox Sports,...
  • Hearst
    A diversified media, information, and services company operating magazines, television stations, and newspapers. Also owns...
  • Major League Baseball
    The oldest major professional sports league in the United States and Canada consisting of 30...
  • National Basketball Association
    A professional basketball league consisting of 30 teams across the United States and Canada. One...
  • National Football League
    The premier professional American football league consisting of 32 teams and the most-watched sports league...
  • National Hockey League
    A professional ice hockey league featuring 32 teams across the United States and Canada. Known...
  • NBC
    A major American commercial broadcast television network and a subsidiary of Comcast through NBCUniversal. Produces...
  • Netflix
    The world's leading streaming entertainment service with hundreds of millions of subscribers across 190 countries....
  • Paramount
    A global media and entertainment company producing and distributing film, television, and streaming content. Operates...
  • Riot Games
    An American video game developer and esports organizer best known for creating League of Legends...
  • Roku
    Roku is the leading TV streaming platform in the U.S., Canada, and Mexico, offering a...
  • Spotify
    The world's largest audio streaming platform offering music, podcasts, and audiobooks to hundreds of millions...
  • TelevisaUnivision (Univision Communications)
    TelevisaUnivision (formerly Univision Communications) is the world's leading Spanish-language media company, operating television networks (Univision,...
  • USA TODAY
    A major American daily national newspaper and digital news platform owned by Gannett. One of...
  • Walt Disney
    The Walt Disney Company is a leading diversified international family entertainment and media enterprise with...
  • Warner Bros. Discovery
    Warner Bros. Discovery is a leading global media and entertainment company that creates and distributes...
  • Warner Brothers
    A major American film and entertainment studio producing movies, television shows, and interactive entertainment. Part...

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
1377 capabilities

Pulls advertising campaign metrics from Snowflake, refreshes the Power BI executive dashboard, and sends the weekly report to stakeholders via Microsoft Teams.

naftiko: '0.5'
info:
  label: Ad Campaign Performance Reporter
  description: Pulls advertising campaign metrics from Snowflake, refreshes the Power BI executive dashboard, and sends the weekly report to stakeholders via Microsoft Teams.
  tags:
  - advertising
  - analytics
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ad-performance
    port: 8080
    tools:
    - name: generate-ad-report
      description: Given a campaign ID and date range, generate the performance report.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Advertising campaign ID.
      - name: date_range
        in: body
        type: string
        description: Reporting date range.
      steps:
      - name: get-metrics
        type: call
        call: snowflake.query-ad-metrics
        with:
          campaign_id: '{{campaign_id}}'
          date_range: '{{date_range}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: ad-performance
      - name: notify-stakeholders
        type: call
        call: teams.post-message
        with:
          channel_id: ad-operations
          text: 'Ad report: {{campaign_id}}. Impressions: {{get-metrics.impressions}}. CTR: {{get-metrics.ctr}}%. Dashboard refreshed.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-ad-metrics
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ad-campaign-performance-reporter.yml

Runs quarterly Okta access reviews by pulling user-app assignments, creating Jira review tasks for managers, and posting summary to the governance Teams channel.

naftiko: '0.5'
info:
  label: Okta Quarterly Access Review
  description: Runs quarterly Okta access reviews by pulling user-app assignments, creating Jira review tasks for managers, and posting summary to the governance Teams channel.
  tags:
  - security
  - governance
  - okta
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: access-review
    port: 8080
    tools:
    - name: run-access-review
      description: Given a department, run the quarterly access review and create review tasks.
      inputParameters:
      - name: department
        in: body
        type: string
        description: Department to review.
      steps:
      - name: get-assignments
        type: call
        call: okta.get-department-apps
        with:
          department: '{{department}}'
      - name: create-review
        type: call
        call: jira.create-issue
        with:
          project: GRC
          summary: 'Q1 access review: {{department}}'
          description: 'Users: {{get-assignments.user_count}}. Apps: {{get-assignments.app_count}}'
      - name: notify-governance
        type: call
        call: teams.post-message
        with:
          channel_id: iam-governance
          text: 'Access review: {{department}}. {{get-assignments.user_count}} users, {{get-assignments.app_count}} apps. Jira: {{create-review.key}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: get-department-apps
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-quarterly-access-review.yml

Triggers a Power BI dataset refresh for the subscriber analytics dashboard after Snowflake pipeline completion and notifies the analytics team in Teams.

naftiko: '0.5'
info:
  label: Power BI Dashboard Refresh Trigger
  description: Triggers a Power BI dataset refresh for the subscriber analytics dashboard after Snowflake pipeline completion and notifies the analytics team in Teams.
  tags:
  - data
  - analytics
  - power-bi
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: trigger-dashboard-refresh
      description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and notify the analytics team in Teams when complete.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace (group) ID.
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID to refresh.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.refresh-dataset
        with:
          workspaceId: '{{workspace_id}}'
          datasetId: '{{dataset_id}}'
      - name: notify-analytics
        type: call
        call: msteams.post-channel-message
        with:
          channelId: analytics-team
          message: Power BI dataset {{dataset_id}} refresh triggered in workspace {{workspace_id}}.
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /groups/{{workspaceId}}/datasets/{{datasetId}}/refreshes
      inputParameters:
      - name: workspaceId
        in: path
      - name: datasetId
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-dashboard-refresh-trigger.yml

When an employee's role changes in Workday, updates Okta group memberships to match the new role's access profile.

naftiko: '0.5'
info:
  label: Workday Role Change Access Provisioning
  description: When an employee's role changes in Workday, updates Okta group memberships to match the new role's access profile.
  tags:
  - hr
  - identity
  - workday
  - okta
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: hr-identity
    port: 8080
    tools:
    - name: sync-role-access
      description: Given a Workday employee ID and new job profile, update Okta group memberships to reflect the new role's access entitlements.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID.
      - name: new_job_profile
        in: body
        type: string
        description: The new Workday job profile name.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: assign-okta-group
        type: call
        call: okta.add-user-to-group
        with:
          userId: '{{get-worker.okta_user_id}}'
          groupProfile: '{{new_job_profile}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /comcast/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-members
      path: /groups/{{groupProfile}}/users/{{userId}}
      inputParameters:
      - name: groupProfile
        in: path
      - name: userId
        in: path
      operations:
      - name: add-user-to-group
        method: PUT
Open in Framework → View in Fleet → workday-role-change-access-provisioning.yml

Checks content licensing rights expiry in Snowflake, creates a Jira task for the content operations team, and notifies stakeholders via Microsoft Teams.

naftiko: '0.5'
info:
  label: NBC Universal Content Rights Checker
  description: Checks content licensing rights expiry in Snowflake, creates a Jira task for the content operations team, and notifies stakeholders via Microsoft Teams.
  tags:
  - content
  - licensing
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: content-rights
    port: 8080
    tools:
    - name: check-content-rights
      description: Given a content catalog ID, check licensing rights and flag expirations.
      inputParameters:
      - name: catalog_id
        in: body
        type: string
        description: Content catalog identifier.
      steps:
      - name: get-rights
        type: call
        call: snowflake.query-rights
        with:
          catalog_id: '{{catalog_id}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project: CONTENT
          summary: 'Rights expiry: {{get-rights.title}} — {{get-rights.expiry_date}}'
          description: 'Territories: {{get-rights.territories}}. License type: {{get-rights.license_type}}'
      - name: notify-content-ops
        type: call
        call: teams.post-message
        with:
          channel_id: content-operations
          text: 'Rights expiring: {{get-rights.title}} on {{get-rights.expiry_date}}. Jira: {{create-task.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-rights
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → nbc-universal-content-rights-checker.yml

Generates SailPoint identity governance reports, stores results in Snowflake, and posts summary to the security governance Teams channel.

naftiko: '0.5'
info:
  label: SailPoint Identity Governance Reporter
  description: Generates SailPoint identity governance reports, stores results in Snowflake, and posts summary to the security governance Teams channel.
  tags:
  - security
  - identity-governance
  - sailpoint
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: identity-governance
    port: 8080
    tools:
    - name: generate-governance-report
      description: Given a governance campaign ID, generate the compliance report.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: SailPoint certification campaign ID.
      steps:
      - name: get-campaign
        type: call
        call: sailpoint.get-campaign
        with:
          campaign_id: '{{campaign_id}}'
      - name: store-results
        type: call
        call: snowflake.insert-governance
        with:
          campaign_id: '{{campaign_id}}'
          completion_pct: '{{get-campaign.completion_pct}}'
      - name: notify-governance
        type: call
        call: teams.post-message
        with:
          channel_id: security-governance
          text: 'Governance report: {{get-campaign.name}}. Completion: {{get-campaign.completion_pct}}%. Reviewed: {{get-campaign.decisions_made}}'
  consumes:
  - type: http
    namespace: sailpoint
    baseUri: https://comcast.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign_id}}
      operations:
      - name: get-campaign
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-governance
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sailpoint-identity-governance-reporter.yml

When GitHub Dependabot finds a critical vulnerability, creates a Jira security ticket, notifies the owning team via Microsoft Teams, and logs the event in Splunk.

naftiko: '0.5'
info:
  label: GitHub Dependency Vulnerability Handler
  description: When GitHub Dependabot finds a critical vulnerability, creates a Jira security ticket, notifies the owning team via Microsoft Teams, and logs the event in Splunk.
  tags:
  - security
  - development
  - github
  - jira
  - microsoft-teams
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: dep-vuln-handler
    port: 8080
    tools:
    - name: handle-dependency-vuln
      description: Given a GitHub repository and advisory ID, create tracking ticket and notify.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: advisory_id
        in: body
        type: string
        description: GitHub security advisory ID.
      steps:
      - name: get-advisory
        type: call
        call: github.get-advisory
        with:
          repo_name: '{{repo_name}}'
          advisory_id: '{{advisory_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: SEC
          summary: 'Dependency vuln: {{repo_name}} — {{get-advisory.package}}'
          description: 'Severity: {{get-advisory.severity}}. CVE: {{get-advisory.cve}}'
      - name: log-event
        type: call
        call: splunk.index-event
        with:
          source: github-dependabot
          event: 'Vulnerability: {{repo_name}} — {{get-advisory.cve}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: appsec
          text: 'Critical vuln: {{repo_name}} — {{get-advisory.package}} ({{get-advisory.severity}}). Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: advisories
      path: /repos/comcast/{{repo_name}}/security-advisories/{{advisory_id}}
      operations:
      - name: get-advisory
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8088
    authentication:
      type: bearer
      token: $secrets.splunk_hec_token
    resources:
    - name: events
      path: /services/collector/event
      operations:
      - name: index-event
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-dependency-vulnerability-handler.yml

Searches the Comcast Confluence knowledge base for articles matching a given query and returns the top results.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Search
  description: Searches the Comcast Confluence knowledge base for articles matching a given query and returns the top results.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: kb-search
    port: 8080
    tools:
    - name: search-articles
      description: Given a search query, return the top Confluence article titles and page IDs.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query string.
      call: confluence.search
      with:
        query: '{{query}}'
      outputParameters:
      - name: result_count
        type: number
        mapping: $.size
      - name: top_title
        type: string
        mapping: $.results[0].title
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://comcast.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content/search
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-base-search.yml

Returns current active headcount by department and cost center from Workday, for workforce planning and finance reporting.

naftiko: '0.5'
info:
  label: Workday Headcount Snapshot
  description: Returns current active headcount by department and cost center from Workday, for workforce planning and finance reporting.
  tags:
  - hr
  - finance
  - workday
  - headcount
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns current active employee headcount grouped by department and cost center from Workday. Use for workforce planning, headcount budgeting, and finance period close.
      call: workday.get-headcount
      outputParameters:
      - name: employees
        type: array
        mapping: $.data
        items:
        - name: employee_id
          type: string
          mapping: $.id
        - name: full_name
          type: string
          mapping: $.name
        - name: department
          type: string
          mapping: $.department
        - name: cost_center
          type: string
          mapping: $.costCenter
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /comcast/workers
      operations:
      - name: get-headcount
        method: GET
Open in Framework → View in Fleet → workday-headcount-snapshot.yml

Checks the latest Terraform Cloud run status for a Comcast infrastructure workspace.

naftiko: '0.5'
info:
  label: Terraform Workspace Run Status
  description: Checks the latest Terraform Cloud run status for a Comcast infrastructure workspace.
  tags:
  - infrastructure
  - terraform
capability:
  exposes:
  - type: mcp
    namespace: infra-runs
    port: 8080
    tools:
    - name: get-run-status
      description: Given a Terraform workspace name, return the latest run status and resource change count.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Terraform Cloud workspace name.
      call: terraform.get-latest-run
      with:
        workspace_name: '{{workspace_name}}'
      outputParameters:
      - name: run_status
        type: string
        mapping: $.data.attributes.status
      - name: resource_changes
        type: number
        mapping: $.data.attributes.resource_changes
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/comcast/workspaces/{{workspace_name}}
      inputParameters:
      - name: workspace_name
        in: path
      operations:
      - name: get-latest-run
        method: GET
Open in Framework → View in Fleet → terraform-workspace-run-status.yml

Reconciles ServiceNow CMDB asset inventory against discovered assets, creates Jira tickets for unmatched items, and posts the reconciliation summary to Microsoft Teams.

naftiko: '0.5'
info:
  label: ServiceNow Asset Discovery Reconciliation
  description: Reconciles ServiceNow CMDB asset inventory against discovered assets, creates Jira tickets for unmatched items, and posts the reconciliation summary to Microsoft Teams.
  tags:
  - itsm
  - asset-management
  - servicenow
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: asset-reconciliation
    port: 8080
    tools:
    - name: reconcile-assets
      description: Given a ServiceNow discovery run ID, reconcile discovered vs. registered assets.
      inputParameters:
      - name: discovery_run_id
        in: body
        type: string
        description: ServiceNow discovery run ID.
      steps:
      - name: get-discovery
        type: call
        call: servicenow.get-discovery-results
        with:
          run_id: '{{discovery_run_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: ITAM
          summary: 'Asset reconciliation: {{get-discovery.unmatched_count}} unmatched'
          description: 'Discovered: {{get-discovery.discovered_count}}. Matched: {{get-discovery.matched_count}}. Unmatched: {{get-discovery.unmatched_count}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: it-asset-management
          text: 'Asset reconciliation: {{get-discovery.unmatched_count}} unmatched devices found. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: discovery
      path: /table/discovery_status/{{run_id}}
      operations:
      - name: get-discovery-results
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-asset-discovery-reconciliation.yml

When a ServiceNow P1 incident is created, sets up a Teams bridge call, pages the on-call via PagerDuty, and posts status updates to the NOC channel.

naftiko: '0.5'
info:
  label: ServiceNow Major Incident Bridge Coordinator
  description: When a ServiceNow P1 incident is created, sets up a Teams bridge call, pages the on-call via PagerDuty, and posts status updates to the NOC channel.
  tags:
  - incident-management
  - servicenow
  - microsoft-teams
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: major-incident
    port: 8080
    tools:
    - name: coordinate-major-incident
      description: Given a ServiceNow P1 incident number, set up the major incident bridge.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow P1 incident number.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_number: '{{incident_number}}'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: noc-oncall
          title: 'P1: {{get-incident.short_description}} — {{incident_number}}'
          urgency: high
      - name: post-bridge
        type: call
        call: teams.post-message
        with:
          channel_id: noc-major-incidents
          text: 'P1 BRIDGE: {{incident_number}} — {{get-incident.short_description}}. On-call paged. Join bridge immediately.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident/{{incident_number}}
      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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-major-incident-bridge-coordinator.yml

Retrieves the candidate pipeline status for an open Workday job requisition and summarizes candidate stage counts for the recruiting team.

naftiko: '0.5'
info:
  label: Workday Recruiting Pipeline Summary
  description: Retrieves the candidate pipeline status for an open Workday job requisition and summarizes candidate stage counts for the recruiting team.
  tags:
  - hr
  - recruiting
  - workday
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: get-requisition-pipeline
      description: Given a Workday job requisition ID, return a stage-by-stage summary of candidates in the hiring pipeline including screened, interviewed, and offered counts.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition ID.
      call: workday.get-job-requisition
      with:
        requisitionId: '{{requisition_id}}'
      outputParameters:
      - name: job_title
        type: string
        mapping: $.jobRequisition.jobTitle
      - name: total_candidates
        type: number
        mapping: $.jobRequisition.candidateCount
      - name: open_since
        type: string
        mapping: $.jobRequisition.openDate
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /comcast/jobRequisitions/{{requisitionId}}
      inputParameters:
      - name: requisitionId
        in: path
      operations:
      - name: get-job-requisition
        method: GET
Open in Framework → View in Fleet → workday-recruiting-pipeline-summary.yml

Retrieves the approval status and total amount of a SAP Concur expense report at Comcast.

naftiko: '0.5'
info:
  label: SAP Concur Expense Status Lookup
  description: Retrieves the approval status and total amount of a SAP Concur expense report at Comcast.
  tags:
  - finance
  - expenses
  - sap-concur
capability:
  exposes:
  - type: mcp
    namespace: expense-status
    port: 8080
    tools:
    - name: get-expense-report
      description: Given a Concur expense report ID, return its status, total amount, and approver name.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: SAP Concur expense report ID.
      call: concur.get-report
      with:
        report_id: '{{report_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.ApprovalStatusName
      - name: total
        type: number
        mapping: $.Total
      - name: approver
        type: string
        mapping: $.ApproverName
  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-status-lookup.yml

Monitors Xfinity mobile app crash rates via Datadog, creates a Jira bug when thresholds are exceeded, and notifies the mobile engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Xfinity App Crash Rate Monitor
  description: Monitors Xfinity mobile app crash rates via Datadog, creates a Jira bug when thresholds are exceeded, and notifies the mobile engineering team via Microsoft Teams.
  tags:
  - mobile
  - observability
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: app-crash-monitor
    port: 8080
    tools:
    - name: handle-crash-rate-alert
      description: Given a Datadog alert for app crash rate spike, create bug and notify.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: app_version
        in: body
        type: string
        description: App version affected.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: MOBILE
          summary: 'Crash rate spike: Xfinity app {{app_version}}'
          issue_type: Bug
          description: '{{get-alert.message}}'
      - name: notify-mobile
        type: call
        call: teams.post-message
        with:
          channel_id: mobile-engineering
          text: 'Crash rate alert: Xfinity app {{app_version}}. Jira: {{create-bug.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → xfinity-app-crash-rate-monitor.yml

When an employee termination is processed in Workday, deactivates their Okta account, closes ServiceNow assignments, and logs the offboarding in Splunk.

naftiko: '0.5'
info:
  label: Workday Termination Access Revocation
  description: When an employee termination is processed in Workday, deactivates their Okta account, closes ServiceNow assignments, and logs the offboarding in Splunk.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - servicenow
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: termination-sync
    port: 8080
    tools:
    - name: process-termination
      description: Given a Workday employee ID for a terminated employee, revoke all access.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          user_email: '{{get-worker.email}}'
      - name: close-assignments
        type: call
        call: servicenow.close-user-tickets
        with:
          user_email: '{{get-worker.email}}'
      - name: log-offboarding
        type: call
        call: splunk.index-event
        with:
          source: hr-offboarding
          event: 'Terminated: {{get-worker.name}} ({{get-worker.email}}). Okta deactivated. ServiceNow closed.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{employee_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{user_email}}/lifecycle/deactivate
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: tickets
      path: /table/incident
      operations:
      - name: close-user-tickets
        method: PATCH
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8088
    authentication:
      type: bearer
      token: $secrets.splunk_hec_token
    resources:
    - name: events
      path: /services/collector/event
      operations:
      - name: index-event
        method: POST
Open in Framework → View in Fleet → workday-termination-access-revocation.yml

Retrieves the latest pipeline run status for a Comcast Azure DevOps project.

naftiko: '0.5'
info:
  label: Azure DevOps Pipeline Status
  description: Retrieves the latest pipeline run status for a Comcast Azure DevOps project.
  tags:
  - cicd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: pipeline-status
    port: 8080
    tools:
    - name: get-pipeline-run
      description: Given an Azure DevOps project name and pipeline ID, return the latest run status and result.
      inputParameters:
      - name: project_name
        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_name: '{{project_name}}'
        pipeline_id: '{{pipeline_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.value[0].state
      - name: result
        type: string
        mapping: $.value[0].result
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/comcast
    authentication:
      type: basic
      username: $secrets.azdo_user
      password: $secrets.azdo_pat
    resources:
    - name: pipelines
      path: /{{project_name}}/_apis/pipelines/{{pipeline_id}}/runs
      inputParameters:
      - name: project_name
        in: path
      - name: pipeline_id
        in: path
      operations:
      - name: get-run
        method: GET
Open in Framework → View in Fleet → azure-devops-pipeline-status.yml

Checks Jira for release readiness by verifying all stories are done, creates a Confluence release notes page, and posts the go/no-go status to Microsoft Teams.

naftiko: '0.5'
info:
  label: Jira Release Readiness Checker
  description: Checks Jira for release readiness by verifying all stories are done, creates a Confluence release notes page, and posts the go/no-go status to Microsoft Teams.
  tags:
  - release-management
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-readiness
    port: 8080
    tools:
    - name: check-release-readiness
      description: Given a Jira release version, verify readiness and generate release notes.
      inputParameters:
      - name: version_name
        in: body
        type: string
        description: Jira fix version name.
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      steps:
      - name: get-version-issues
        type: call
        call: jira.search-version-issues
        with:
          project: '{{project_key}}'
          version: '{{version_name}}'
      - name: create-release-notes
        type: call
        call: confluence.create-page
        with:
          space_key: REL
          title: 'Release Notes: {{project_key}} {{version_name}}'
          content: 'Total: {{get-version-issues.total}}. Done: {{get-version-issues.done}}. Open: {{get-version-issues.open}}'
      - name: post-status
        type: call
        call: teams.post-message
        with:
          channel_id: release-management
          text: 'Release {{version_name}}: {{get-version-issues.done}}/{{get-version-issues.total}} done. Notes: {{create-release-notes.url}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.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-version-issues
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://comcast.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-release-readiness-checker.yml

When Datadog alerts on RDS storage approaching capacity, retrieves instance details, creates a ServiceNow change request for expansion, and notifies the DBA team via Microsoft Teams.

naftiko: '0.5'
info:
  label: AWS RDS Storage Capacity Handler
  description: When Datadog alerts on RDS storage approaching capacity, retrieves instance details, creates a ServiceNow change request for expansion, and notifies the DBA team via Microsoft Teams.
  tags:
  - database
  - cloud
  - aws
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: rds-capacity
    port: 8080
    tools:
    - name: handle-rds-capacity
      description: Given a Datadog alert for RDS storage, initiate capacity expansion.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: db_instance
        in: body
        type: string
        description: RDS instance identifier.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-change
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'RDS storage expansion: {{db_instance}}'
          category: database
          priority: '2'
      - name: notify-dba
        type: call
        call: teams.post-message
        with:
          channel_id: dba-team
          text: 'RDS storage alert: {{db_instance}}. Change: {{create-change.number}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: changes
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → aws-rds-storage-capacity-handler.yml

When an expense report is submitted in SAP Concur, validates the amount against policy and routes the approval request to the manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Approval
  description: When an expense report is submitted in SAP Concur, validates the amount against policy and routes the approval request to the manager via Microsoft Teams.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-approval
    port: 8080
    tools:
    - name: approve-expense-report
      description: Given an SAP Concur expense report ID and manager email, retrieve report details and send an approval card to the manager in Teams.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      - name: manager_email
        in: body
        type: string
        description: The Microsoft Teams UPN of the approving manager.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          reportId: '{{report_id}}'
      - name: send-approval
        type: call
        call: msteams.post-message
        with:
          recipient: '{{manager_email}}'
          message: 'Expense approval needed: Report {{report_id}} for {{get-report.Total}} {{get-report.CurrencyCode}} submitted by {{get-report.OwnerName}}.'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports/{{reportId}}
      inputParameters:
      - name: reportId
        in: path
      operations:
      - name: get-expense-report
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /chats/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-report-approval.yml

Aggregates broadband speed test data from Snowflake, identifies underperforming markets, and posts the report to the network engineering Teams channel.

naftiko: '0.5'
info:
  label: Broadband Speed Test Analytics Reporter
  description: Aggregates broadband speed test data from Snowflake, identifies underperforming markets, and posts the report to the network engineering Teams channel.
  tags:
  - network
  - analytics
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: speed-analytics
    port: 8080
    tools:
    - name: generate-speed-report
      description: Given a market region, generate the speed test analytics report.
      inputParameters:
      - name: market_region
        in: body
        type: string
        description: Market region to analyze.
      steps:
      - name: get-speed-data
        type: call
        call: snowflake.query-speed-tests
        with:
          market_region: '{{market_region}}'
      - name: notify-engineering
        type: call
        call: teams.post-message
        with:
          channel_id: network-engineering
          text: 'Speed report: {{market_region}}. Avg download: {{get-speed-data.avg_download_mbps}} Mbps. Below-threshold: {{get-speed-data.below_threshold_pct}}%'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-speed-tests
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → broadband-speed-test-analytics-reporter.yml

Retrieves Okta users with privileged group assignments for a quarterly access review and posts the report to SharePoint for compliance records.

naftiko: '0.5'
info:
  label: Okta User Access Review
  description: Retrieves Okta users with privileged group assignments for a quarterly access review and posts the report to SharePoint for compliance records.
  tags:
  - identity
  - security
  - okta
  - sharepoint
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: run-access-review
      description: Given an Okta group ID, retrieve all active group members and their application assignments, then upload the access review report to SharePoint.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Okta group ID to review for privileged access.
      - name: sharepoint_site_id
        in: body
        type: string
        description: The SharePoint site ID where the access review report should be uploaded.
      steps:
      - name: get-group-members
        type: call
        call: okta.get-group-members
        with:
          groupId: '{{group_id}}'
      - name: upload-report
        type: call
        call: sharepoint.create-file
        with:
          siteId: '{{sharepoint_site_id}}'
          fileName: access-review-{{group_id}}.json
          content: '{{get-group-members.members}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-members
      path: /groups/{{groupId}}/users
      inputParameters:
      - name: groupId
        in: path
      operations:
      - name: get-group-members
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /sites/{{siteId}}/drive/root/children
      inputParameters:
      - name: siteId
        in: path
      operations:
      - name: create-file
        method: POST
Open in Framework → View in Fleet → okta-user-access-review.yml

When a SAP Concur expense report violates policy, retrieves violation details, creates a Jira compliance ticket, and notifies the finance team via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Policy Violation Handler
  description: When a SAP Concur expense report violates policy, retrieves violation details, creates a Jira compliance ticket, and notifies the finance team via Microsoft Teams.
  tags:
  - finance
  - compliance
  - sap-concur
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: expense-compliance
    port: 8080
    tools:
    - name: handle-policy-violation
      description: Given a Concur report ID with policy violations, create tracking and notify.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: SAP Concur expense report ID.
      steps:
      - name: get-report
        type: call
        call: concur.get-report
        with:
          report_id: '{{report_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: FIN
          summary: 'Expense violation: {{get-report.employee_name}} — ${{get-report.total}}'
          description: 'Violation: {{get-report.violation_reason}}'
      - name: notify-finance
        type: call
        call: teams.post-message
        with:
          channel_id: finance-compliance
          text: 'Expense violation: {{get-report.employee_name}} (${{get-report.total}}). Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: reports
      path: /expense/reports/{{report_id}}
      operations:
      - name: get-report
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-concur-policy-violation-handler.yml

When Datadog detects API gateway throttling, retrieves request metrics, creates a Jira capacity ticket, and alerts the API team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Datadog API Gateway Throttle Handler
  description: When Datadog detects API gateway throttling, retrieves request metrics, creates a Jira capacity ticket, and alerts the API team via Microsoft Teams.
  tags:
  - api
  - observability
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: api-throttle
    port: 8080
    tools:
    - name: handle-throttle-alert
      description: Given a Datadog alert for API throttling, investigate and create capacity ticket.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: api_name
        in: body
        type: string
        description: API service name.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: API
          summary: 'Throttling: {{api_name}}'
          description: '{{get-alert.message}}'
      - name: notify-api-team
        type: call
        call: teams.post-message
        with:
          channel_id: api-platform
          text: 'API throttling: {{api_name}}. Jira: {{create-ticket.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-api-gateway-throttle-handler.yml

After a ServiceNow incident is resolved, extracts lessons learned and updates the Confluence runbook, then notifies the engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Confluence Incident Runbook Updater
  description: After a ServiceNow incident is resolved, extracts lessons learned and updates the Confluence runbook, then notifies the engineering team via Microsoft Teams.
  tags:
  - knowledge-management
  - servicenow
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: runbook-ops
    port: 8080
    tools:
    - name: update-runbook
      description: Given a resolved ServiceNow incident, update the related Confluence runbook.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_number: '{{incident_number}}'
      - name: update-page
        type: call
        call: confluence.update-page
        with:
          page_id: '{{get-incident.runbook_id}}'
          content: 'Lessons from {{incident_number}}: {{get-incident.close_notes}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: sre-team
          text: 'Runbook updated from {{incident_number}}. Page: {{get-incident.runbook_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident/{{incident_number}}
      operations:
      - name: get-incident
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://comcast.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages/{{page_id}}
      operations:
      - name: update-page
        method: PUT
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → confluence-incident-runbook-updater.yml

When a Salesforce service case is escalated by a high-value subscriber, creates a ServiceNow priority ticket and notifies the enterprise support team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Case Escalation Handler
  description: When a Salesforce service case is escalated by a high-value subscriber, creates a ServiceNow priority ticket and notifies the enterprise support team in Microsoft Teams.
  tags:
  - customer-support
  - crm
  - salesforce
  - servicenow
  - microsoft-teams
  - escalation
capability:
  exposes:
  - type: mcp
    namespace: support-ops
    port: 8080
    tools:
    - name: handle-case-escalation
      description: Given a Salesforce case ID, retrieve case details and escalate to ServiceNow with a Teams notification to the enterprise support team.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: The Salesforce case record ID.
      steps:
      - name: get-case
        type: call
        call: salesforce.get-case
        with:
          caseId: '{{case_id}}'
      - name: create-snow-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Escalated case: {{get-case.Subject}}'
          description: 'Salesforce Case: {{case_id}}

            Account: {{get-case.AccountName}}

            Description: {{get-case.Description}}'
          urgency: '2'
      - name: notify-enterprise-support
        type: call
        call: msteams.post-channel-message
        with:
          channelId: enterprise-support
          message: 'Case escalation: {{get-case.Subject}} | Account: {{get-case.AccountName}} | ServiceNow: {{create-snow-ticket.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case/{{caseId}}
      inputParameters:
      - name: caseId
        in: path
      operations:
      - name: get-case
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-case-escalation-handler.yml

When a new deployment is released via GitHub Actions, creates a Datadog deployment marker to annotate the release on all monitoring dashboards.

naftiko: '0.5'
info:
  label: Datadog Dashboard Annotation on Deployment
  description: When a new deployment is released via GitHub Actions, creates a Datadog deployment marker to annotate the release on all monitoring dashboards.
  tags:
  - devops
  - observability
  - github
  - datadog
  - deployment
capability:
  exposes:
  - type: mcp
    namespace: deployment-ops
    port: 8080
    tools:
    - name: annotate-deployment
      description: Given a GitHub repository, branch, and commit SHA, create a Datadog deployment marker to annotate dashboards at the deployment timestamp.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository name in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch that was deployed.
      - name: commit_sha
        in: body
        type: string
        description: The git commit SHA being deployed.
      - name: service_name
        in: body
        type: string
        description: The Datadog service name to annotate.
      steps:
      - name: create-dd-marker
        type: call
        call: datadog.create-event
        with:
          title: 'Deployment: {{service_name}} {{commit_sha}}'
          text: 'Repo: {{repo}} | Branch: {{branch}} | Commit: {{commit_sha}}'
          alert_type: info
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channelId: deployments
          message: 'Deployment annotated in Datadog: {{service_name}} {{commit_sha}} from {{branch}}.'
  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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-dashboard-annotation-on-deployment.yml

Retrieves completed NPS survey responses from Salesforce and posts a weekly satisfaction summary to the customer success Teams channel.

naftiko: '0.5'
info:
  label: Salesforce NPS Score Campaign Sync
  description: Retrieves completed NPS survey responses from Salesforce and posts a weekly satisfaction summary to the customer success Teams channel.
  tags:
  - crm
  - customer-success
  - salesforce
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: cx-reporting
    port: 8080
    tools:
    - name: publish-nps-digest
      description: Given a date range, retrieve NPS survey results from Salesforce and post a satisfaction score summary to the customer success Teams channel.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Report start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Report end date in YYYY-MM-DD format.
      steps:
      - name: get-nps-results
        type: call
        call: salesforce.get-nps-surveys
        with:
          startDate: '{{start_date}}'
          endDate: '{{end_date}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channelId: customer-success
          message: 'NPS digest ({{start_date}} to {{end_date}}): Score={{get-nps-results.npsScore}}, Promoters={{get-nps-results.promoters}}, Detractors={{get-nps-results.detractors}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: nps-surveys
      path: /query
      inputParameters:
      - name: startDate
        in: query
      - name: endDate
        in: query
      operations:
      - name: get-nps-surveys
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-nps-score-campaign-sync.yml

Retrieves details of a CrowdStrike endpoint detection including severity, tactic, and affected hostname.

naftiko: '0.5'
info:
  label: CrowdStrike Endpoint Detection Lookup
  description: Retrieves details of a CrowdStrike endpoint detection including severity, tactic, and affected hostname.
  tags:
  - security
  - endpoint
  - crowdstrike
capability:
  exposes:
  - type: mcp
    namespace: endpoint-detections
    port: 8080
    tools:
    - name: get-detection
      description: Given a CrowdStrike detection ID, return the severity, tactic, technique, and hostname.
      inputParameters:
      - name: detection_id
        in: body
        type: string
        description: CrowdStrike detection ID.
      call: crowdstrike.get-detection
      with:
        detection_id: '{{detection_id}}'
      outputParameters:
      - name: severity
        type: string
        mapping: $.resources[0].severity
      - name: tactic
        type: string
        mapping: $.resources[0].tactic
      - name: hostname
        type: string
        mapping: $.resources[0].hostname
  consumes:
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: detections
      path: /detects/entities/summaries/GET/v1
      operations:
      - name: get-detection
        method: POST
Open in Framework → View in Fleet → crowdstrike-endpoint-detection-lookup.yml

When CrowdStrike detects ransomware activity, isolates the affected endpoint, creates a ServiceNow P1 security incident, and alerts the SOC and CISO via Microsoft Teams.

naftiko: '0.5'
info:
  label: CrowdStrike Ransomware Containment
  description: When CrowdStrike detects ransomware activity, isolates the affected endpoint, creates a ServiceNow P1 security incident, and alerts the SOC and CISO via Microsoft Teams.
  tags:
  - security
  - ransomware
  - crowdstrike
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ransomware-response
    port: 8080
    tools:
    - name: contain-ransomware
      description: Given a CrowdStrike detection ID, contain the ransomware and escalate.
      inputParameters:
      - name: detection_id
        in: body
        type: string
        description: CrowdStrike detection ID.
      steps:
      - name: get-detection
        type: call
        call: crowdstrike.get-detection
        with:
          detection_id: '{{detection_id}}'
      - name: isolate-host
        type: call
        call: crowdstrike.contain-host
        with:
          host_id: '{{get-detection.host_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Ransomware: {{get-detection.malware_family}} on {{get-detection.hostname}}'
          urgency: '1'
          impact: '1'
      - name: alert-soc
        type: call
        call: teams.post-message
        with:
          channel_id: soc-critical
          text: 'RANSOMWARE: {{get-detection.hostname}} isolated. Family: {{get-detection.malware_family}}. ServiceNow: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: detections
      path: /detects/entities/summaries/GET/v1
      operations:
      - name: get-detection
        method: POST
    - name: hosts
      path: /hosts/entities/host-actions/v1
      operations:
      - name: contain-host
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → crowdstrike-ransomware-containment.yml

On a protected-branch GitHub Actions failure, creates a Jira bug, posts an alert to the engineering Teams channel, and logs an event in Datadog.

naftiko: '0.5'
info:
  label: GitHub Actions Pipeline Failure Handler
  description: On a protected-branch GitHub Actions failure, creates a Jira bug, posts an alert to the engineering Teams channel, and logs an event in Datadog.
  tags:
  - devops
  - cicd
  - github
  - jira
  - datadog
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions workflow failure, create a Jira bug, send a Datadog event marker, and alert the engineering Teams channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: workflow_name
        in: body
        type: string
        description: The name of the failed GitHub Actions workflow.
      - name: branch
        in: body
        type: string
        description: The branch on which the failure occurred.
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      steps:
      - name: get-run-details
        type: call
        call: github.get-workflow-run
        with:
          repo: '{{repo}}'
          run_id: '{{run_id}}'
      - name: create-jira-bug
        type: call
        call: jira.create-issue
        with:
          projectKey: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}'
          description: 'Run: {{run_id}}

            Conclusion: {{get-run-details.conclusion}}'
      - name: log-datadog
        type: call
        call: datadog.create-event
        with:
          title: 'CI Failure: {{repo}} {{workflow_name}}'
          text: 'Branch: {{branch}}, Run: {{run_id}}'
          alert_type: error
      - name: alert-team
        type: call
        call: msteams.post-channel-message
        with:
          channelId: engineering-alerts
          message: 'CI Failure: {{repo}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-jira-bug.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repo}}/actions/runs/{{run_id}}
      inputParameters:
      - name: repo
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-actions-pipeline-failure-handler.yml

Monitors subscriber data quality in Snowflake, identifies anomalies, creates Jira tickets for the data team, and posts alerts to the data-ops Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Subscriber Data Quality Monitor
  description: Monitors subscriber data quality in Snowflake, identifies anomalies, creates Jira tickets for the data team, and posts alerts to the data-ops Teams channel.
  tags:
  - data-quality
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: check-data-quality
      description: Given a Snowflake table name, run quality checks and report anomalies.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Snowflake table name.
      steps:
      - name: run-checks
        type: call
        call: snowflake.run-quality-checks
        with:
          table_name: '{{table_name}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: DATA
          summary: 'Data quality: {{table_name}} — {{run-checks.anomaly_count}} anomalies'
          description: 'Null rate: {{run-checks.null_rate}}%. Duplicate rate: {{run-checks.duplicate_rate}}%'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: data-ops
          text: 'Data quality: {{table_name}}. {{run-checks.anomaly_count}} anomalies. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-quality-checks
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-subscriber-data-quality-monitor.yml

When Datadog detects database connection pool exhaustion, retrieves metrics, creates a ServiceNow incident, and notifies the DBA team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Datadog Database Connection Pool Alert
  description: When Datadog detects database connection pool exhaustion, retrieves metrics, creates a ServiceNow incident, and notifies the DBA team via Microsoft Teams.
  tags:
  - database
  - observability
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: db-pool-alert
    port: 8080
    tools:
    - name: handle-pool-exhaustion
      description: Given a Datadog alert for connection pool issues, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: db_host
        in: body
        type: string
        description: Database hostname.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'DB pool exhaustion: {{db_host}}'
          urgency: '2'
          description: '{{get-alert.message}}'
      - name: notify-dba
        type: call
        call: teams.post-message
        with:
          channel_id: dba-team
          text: 'DB pool alert: {{db_host}}. ServiceNow: {{create-incident.number}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-database-connection-pool-alert.yml

Retrieves an employee profile from Workday including job title, department, manager name, and hire date.

naftiko: '0.5'
info:
  label: Workday Employee Profile Lookup
  description: Retrieves an employee profile from Workday including job title, department, manager name, and hire date.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: employee-profiles
    port: 8080
    tools:
    - name: get-employee-profile
      description: Given a Workday employee ID, return the employee profile details.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-worker
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: job_title
        type: string
        mapping: $.jobTitle
      - name: department
        type: string
        mapping: $.department
      - name: manager
        type: string
        mapping: $.manager
      - name: hire_date
        type: string
        mapping: $.hireDate
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-employee-profile-lookup.yml

Coordinates bulk DOCSIS modem firmware upgrades by verifying compatibility, creating a ServiceNow change request, and scheduling the maintenance window via PagerDuty.

naftiko: '0.5'
info:
  label: DOCSIS Modem Firmware Upgrade Coordinator
  description: Coordinates bulk DOCSIS modem firmware upgrades by verifying compatibility, creating a ServiceNow change request, and scheduling the maintenance window via PagerDuty.
  tags:
  - network
  - cable
  - firmware
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: modem-firmware
    port: 8080
    tools:
    - name: coordinate-modem-upgrade
      description: Given a modem model and target firmware version, coordinate the upgrade across affected devices.
      inputParameters:
      - name: modem_model
        in: body
        type: string
        description: DOCSIS modem model identifier.
      - name: target_firmware
        in: body
        type: string
        description: Target firmware version.
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'DOCSIS firmware upgrade: {{modem_model}} to {{target_firmware}}'
          category: network
          priority: '3'
      - name: schedule-maintenance
        type: call
        call: pagerduty.create-maintenance-window
        with:
          service_id: cable-network-ops
          description: 'Modem firmware: {{modem_model}} — CHG: {{create-change.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: changes
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: maintenance
      path: /maintenance_windows
      operations:
      - name: create-maintenance-window
        method: POST
Open in Framework → View in Fleet → docsis-modem-firmware-upgrade-coordinator.yml

Detects infrastructure drift in Terraform Cloud, creates a Jira ticket, triggers a remediation run, and notifies the platform team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Drift Remediator
  description: Detects infrastructure drift in Terraform Cloud, creates a Jira ticket, triggers a remediation run, and notifies the platform team via Microsoft Teams.
  tags:
  - infrastructure
  - terraform
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: drift-remediation
    port: 8080
    tools:
    - name: remediate-drift
      description: Given a Terraform workspace with drift, initiate remediation.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Terraform workspace name.
      - name: drift_summary
        in: body
        type: string
        description: Summary of detected drift.
      steps:
      - name: get-workspace
        type: call
        call: terraform.get-workspace
        with:
          workspace_name: '{{workspace_name}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: INFRA
          summary: 'Drift: {{workspace_name}}'
          description: '{{drift_summary}}'
      - name: trigger-run
        type: call
        call: terraform.create-run
        with:
          workspace_id: '{{get-workspace.id}}'
          message: Drift fix — {{create-ticket.key}}
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: platform-engineering
          text: 'Drift: {{workspace_name}}. Jira: {{create-ticket.key}}. 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: workspaces
      path: /organizations/comcast/workspaces/{{workspace_name}}
      operations:
      - name: get-workspace
        method: GET
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → terraform-infrastructure-drift-remediator.yml

Retrieves the current sprint status and issue breakdown for a Comcast engineering Jira project.

naftiko: '0.5'
info:
  label: Jira Project Status Lookup
  description: Retrieves the current sprint status and issue breakdown for a Comcast engineering Jira project.
  tags:
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: project-status
    port: 8080
    tools:
    - name: get-project-status
      description: Given a Jira project key, return the active sprint name, total issues, and done count.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key (e.g., XFIN, STREAM).
      call: jira.get-board-sprint
      with:
        project_key: '{{project_key}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: total_issues
        type: number
        mapping: $.values[0].total
      - name: done_count
        type: number
        mapping: $.values[0].done
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{project_key}}/sprint
      inputParameters:
      - name: project_key
        in: path
      operations:
      - name: get-board-sprint
        method: GET
Open in Framework → View in Fleet → jira-project-status-lookup.yml

When Splunk detects a log volume anomaly exceeding a threshold, creates a Jira bug for the owning team and posts an alert to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Splunk Log Anomaly to Jira
  description: When Splunk detects a log volume anomaly exceeding a threshold, creates a Jira bug for the owning team and posts an alert to the engineering Teams channel.
  tags:
  - observability
  - devops
  - splunk
  - jira
  - microsoft-teams
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: log-monitoring
    port: 8080
    tools:
    - name: handle-log-anomaly
      description: Given a Splunk alert and affected service name, create a Jira bug and notify the engineering Teams channel with log anomaly details.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The service or application generating the anomalous log volume.
      - name: alert_count
        in: body
        type: integer
        description: Number of error events detected in the anomaly window.
      - name: time_window
        in: body
        type: string
        description: The time window of the anomaly, e.g. last 15 minutes.
      steps:
      - name: create-jira-bug
        type: call
        call: jira.create-issue
        with:
          projectKey: OPS
          issuetype: Bug
          summary: 'Log anomaly: {{service_name}} — {{alert_count}} errors in {{time_window}}'
          description: 'Service: {{service_name}}

            Error count: {{alert_count}}

            Window: {{time_window}}'
      - name: alert-engineering
        type: call
        call: msteams.post-channel-message
        with:
          channelId: engineering-alerts
          message: 'Splunk anomaly: {{service_name}} — {{alert_count}} errors in {{time_window}} | Jira: {{create-jira-bug.key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → splunk-log-anomaly-to-jira.yml

When a new hire record appears in Workday, provisions Okta account, creates a ServiceNow equipment request, and notifies the hiring manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday New Hire IT Provisioning
  description: When a new hire record appears in Workday, provisions Okta account, creates a ServiceNow equipment request, and notifies the hiring manager via Microsoft Teams.
  tags:
  - hr
  - onboarding
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hire-provisioning
    port: 8080
    tools:
    - name: provision-new-hire
      description: Given a Workday employee ID for a new hire, provision IT resources.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{employee_id}}'
      - name: create-okta-user
        type: call
        call: okta.create-user
        with:
          email: '{{get-worker.email}}'
          first_name: '{{get-worker.first_name}}'
          last_name: '{{get-worker.last_name}}'
          department: '{{get-worker.department}}'
      - name: create-equipment-request
        type: call
        call: servicenow.create-request
        with:
          short_description: 'New hire equipment: {{get-worker.name}}'
          description: 'Department: {{get-worker.department}}. Start date: {{get-worker.start_date}}'
      - name: notify-manager
        type: call
        call: teams.post-message
        with:
          channel_id: hr-onboarding
          text: 'IT provisioned for {{get-worker.name}}: Okta created, equipment requested ({{create-equipment-request.number}}).'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{employee_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-new-hire-it-provisioning.yml

Retrieves Comcast subscriber account details from Salesforce Service Cloud given an account number, returning service tier, billing status, and open cases.

naftiko: '0.5'
info:
  label: Customer Subscriber Lookup
  description: Retrieves Comcast subscriber account details from Salesforce Service Cloud given an account number, returning service tier, billing status, and open cases.
  tags:
  - crm
  - customer-support
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: subscriber-ops
    port: 8080
    tools:
    - name: get-subscriber-account
      description: Given a Comcast subscriber account number, retrieve account details including service tier, billing status, equipment, and open support cases from Salesforce Service Cloud.
      inputParameters:
      - name: account_number
        in: body
        type: string
        description: The Comcast customer account number.
      call: salesforce.get-account
      with:
        accountNumber: '{{account_number}}'
      outputParameters:
      - name: account_id
        type: string
        mapping: $.records[0].Id
      - name: subscriber_name
        type: string
        mapping: $.records[0].Name
      - name: service_tier
        type: string
        mapping: $.records[0].ServiceTier__c
      - name: billing_status
        type: string
        mapping: $.records[0].BillingStatus__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query
      inputParameters:
      - name: accountNumber
        in: query
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → customer-subscriber-lookup.yml

Retrieves full incident details including priority, assigned group, and resolution notes from ServiceNow.

naftiko: '0.5'
info:
  label: ServiceNow Incident Detail Lookup
  description: Retrieves full incident details including priority, assigned group, and resolution notes from ServiceNow.
  tags:
  - itsm
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: incident-details
    port: 8080
    tools:
    - name: get-incident-detail
      description: Given a ServiceNow incident number, return priority, assigned group, state, and resolution notes.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number.
      call: servicenow.get-incident
      with:
        incident_number: '{{incident_number}}'
      outputParameters:
      - name: priority
        type: string
        mapping: $.result.priority
      - name: assigned_to
        type: string
        mapping: $.result.assigned_to
      - name: state
        type: string
        mapping: $.result.state
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_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-detail-lookup.yml

Returns the current paid time-off and vacation accrual balances for a Comcast employee from Workday, for use in absence planning.

naftiko: '0.5'
info:
  label: Workday Time-Off Balance Lookup
  description: Returns the current paid time-off and vacation accrual balances for a Comcast employee from Workday, for use in absence planning.
  tags:
  - hr
  - workday
  - absence-management
capability:
  exposes:
  - type: mcp
    namespace: hr-absence
    port: 8080
    tools:
    - name: get-time-off-balance
      description: Given a Workday employee ID, return current accrued vacation, PTO, and sick leave balances. Use when an employee or manager needs to verify available time before approving an absence request.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-leave-balance
      with:
        worker_id: '{{employee_id}}'
      outputParameters:
      - name: vacation_days
        type: number
        mapping: $.leaveBalances.vacation
      - name: pto_days
        type: number
        mapping: $.leaveBalances.pto
      - name: sick_days
        type: number
        mapping: $.leaveBalances.sick
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: leave-balances
      path: /comcast/workers/{{worker_id}}/leaveBalance
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-leave-balance
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance-lookup.yml

Runs data quality checks against Snowflake production tables and creates ServiceNow incidents for any datasets that fail freshness or completeness thresholds.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Monitor
  description: Runs data quality checks against Snowflake production tables and creates ServiceNow incidents for any datasets that fail freshness or completeness thresholds.
  tags:
  - data
  - analytics
  - snowflake
  - servicenow
  - data-quality
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: check-data-quality
      description: Given a Snowflake table name and freshness threshold, validate table row count and last updated timestamp, and open a ServiceNow ticket if quality checks fail.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table name in DATABASE.SCHEMA.TABLE format.
      - name: freshness_hours
        in: body
        type: integer
        description: Maximum acceptable age in hours for the table's data.
      steps:
      - name: get-table-metadata
        type: call
        call: snowflake.get-table-info
        with:
          tableName: '{{table_name}}'
      - name: create-dq-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data quality failure: {{table_name}}'
          category: data_pipeline
          description: 'Table {{table_name}} failed freshness check. Last updated: {{get-table-metadata.last_altered}}. Required: within {{freshness_hours}} hours.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: tables
      path: /databases/tables
      inputParameters:
      - name: tableName
        in: query
      operations:
      - name: get-table-info
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-monitor.yml

Retrieves the status and configuration summary of a CloudFront CDN distribution used for Comcast content delivery.

naftiko: '0.5'
info:
  label: AWS CloudFront Distribution Status
  description: Retrieves the status and configuration summary of a CloudFront CDN distribution used for Comcast content delivery.
  tags:
  - cdn
  - cloud
  - aws
capability:
  exposes:
  - type: mcp
    namespace: cdn-status
    port: 8080
    tools:
    - name: get-distribution-status
      description: Given a CloudFront distribution ID, return its status and domain name.
      inputParameters:
      - name: distribution_id
        in: body
        type: string
        description: CloudFront distribution ID.
      call: cloudfront.get-distribution
      with:
        distribution_id: '{{distribution_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Distribution.Status
      - name: domain_name
        type: string
        mapping: $.Distribution.DomainName
  consumes:
  - type: http
    namespace: cloudfront
    baseUri: https://cloudfront.amazonaws.com/2020-05-31
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_auth_token
      placement: header
    resources:
    - name: distributions
      path: /distribution/{{distribution_id}}
      inputParameters:
      - name: distribution_id
        in: path
      operations:
      - name: get-distribution
        method: GET
Open in Framework → View in Fleet → aws-cloudfront-distribution-status.yml

When a ServiceNow incident SLA is about to breach, escalates via PagerDuty, updates the incident priority, and notifies management via Microsoft Teams.

naftiko: '0.5'
info:
  label: ServiceNow SLA Breach Escalation
  description: When a ServiceNow incident SLA is about to breach, escalates via PagerDuty, updates the incident priority, and notifies management via Microsoft Teams.
  tags:
  - itsm
  - sla
  - servicenow
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sla-escalation
    port: 8080
    tools:
    - name: escalate-sla-breach
      description: Given a ServiceNow incident nearing SLA breach, escalate and notify.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number.
      - name: minutes_remaining
        in: body
        type: number
        description: Minutes until SLA breach.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_number: '{{incident_number}}'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: itsm-escalation
          title: 'SLA breach: {{incident_number}} in {{minutes_remaining}} min'
          urgency: high
      - name: notify-management
        type: call
        call: teams.post-message
        with:
          channel_id: it-management
          text: 'SLA breach imminent: {{incident_number}} — {{get-incident.short_description}}. {{minutes_remaining}} min remaining.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident/{{incident_number}}
      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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-sla-breach-escalation.yml

Looks up the current on-call engineer for a specified PagerDuty escalation policy at Comcast.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Engineer Lookup
  description: Looks up the current on-call engineer for a specified PagerDuty escalation policy at Comcast.
  tags:
  - incident-management
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: oncall-lookup
    port: 8080
    tools:
    - name: get-oncall
      description: Given a PagerDuty escalation policy ID, return the current on-call engineer name and contact.
      inputParameters:
      - name: policy_id
        in: body
        type: string
        description: PagerDuty escalation policy ID.
      call: pagerduty.get-oncall
      with:
        policy_id: '{{policy_id}}'
      outputParameters:
      - name: engineer_name
        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
      inputParameters:
      - name: policy_id
        in: query
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-engineer-lookup.yml

Scans GitHub Dependabot alerts for critical vulnerabilities across Comcast repositories, creates Jira security tickets, and notifies the security team in Teams.

naftiko: '0.5'
info:
  label: GitHub Security Vulnerability Triage
  description: Scans GitHub Dependabot alerts for critical vulnerabilities across Comcast repositories, creates Jira security tickets, and notifies the security team in Teams.
  tags:
  - security
  - devops
  - github
  - jira
  - microsoft-teams
  - vulnerability-management
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: triage-vulnerability-alerts
      description: Given a GitHub repository, retrieve critical Dependabot alerts, create Jira security tickets, and post a summary to the security Teams channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      steps:
      - name: get-alerts
        type: call
        call: github.get-dependabot-alerts
        with:
          repo: '{{repo}}'
          severity: critical
      - name: create-security-ticket
        type: call
        call: jira.create-issue
        with:
          projectKey: SEC
          issuetype: Security
          summary: 'Critical vulnerability: {{get-alerts.advisory_summary}}'
          description: 'Package: {{get-alerts.package_name}}

            CVSS: {{get-alerts.cvss_score}}

            Repo: {{repo}}'
      - name: notify-security
        type: call
        call: msteams.post-channel-message
        with:
          channelId: security-team
          message: 'Critical vulnerability in {{repo}}: {{get-alerts.advisory_summary}} | Jira: {{create-security-ticket.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alerts
      path: /repos/{{repo}}/dependabot/alerts
      inputParameters:
      - name: repo
        in: path
      - name: severity
        in: query
      operations:
      - name: get-dependabot-alerts
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-security-vulnerability-triage.yml

Retrieves unestimated and stale Jira backlog items for a project and posts a grooming reminder digest to the product team's Teams channel.

naftiko: '0.5'
info:
  label: Jira Backlog Grooming Report
  description: Retrieves unestimated and stale Jira backlog items for a project and posts a grooming reminder digest to the product team's Teams channel.
  tags:
  - devops
  - engineering
  - jira
  - microsoft-teams
  - backlog-management
capability:
  exposes:
  - type: mcp
    namespace: backlog-ops
    port: 8080
    tools:
    - name: digest-backlog-health
      description: Given a Jira project key, retrieve unestimated and stale backlog issues older than 30 days and post a grooming summary to the product team's Teams channel.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The Jira project key, e.g. XFIN.
      steps:
      - name: get-stale-issues
        type: call
        call: jira.search-issues
        with:
          jql: project={{project_key}} AND status=Backlog AND created<=-30d AND storyPoints is EMPTY
      - name: post-reminder
        type: call
        call: msteams.post-channel-message
        with:
          channelId: product-team
          message: 'Backlog health for {{project_key}}: {{get-stale-issues.total}} unestimated or stale issues need grooming. Oldest: {{get-stale-issues.oldest_issue}}.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /search
      inputParameters:
      - name: jql
        in: query
      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: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → jira-backlog-grooming-report.yml

When AWS Cost Anomaly Detection identifies an unexpected spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams.

naftiko: '0.5'
info:
  label: AWS Cost Anomaly Alert Handler
  description: When AWS Cost Anomaly Detection identifies an unexpected spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams.
  tags:
  - cloud
  - finops
  - aws
  - servicenow
  - microsoft-teams
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-aws-cost-anomaly
      description: Given an AWS account ID, anomalous spend amount, and service name, create a ServiceNow cost ticket and alert the FinOps team in Teams.
      inputParameters:
      - name: aws_account_id
        in: body
        type: string
        description: The AWS account ID where the anomaly occurred.
      - name: anomaly_amount
        in: body
        type: number
        description: The anomalous incremental spend in USD.
      - name: aws_service
        in: body
        type: string
        description: The AWS service responsible for the spend spike, e.g. EC2, S3.
      steps:
      - name: get-cost-details
        type: call
        call: aws-cost.get-anomalies
        with:
          accountId: '{{aws_account_id}}'
          service: '{{aws_service}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'AWS cost anomaly: {{aws_service}} in account {{aws_account_id}} +${{anomaly_amount}}'
          category: cloud_cost
          urgency: '2'
      - name: alert-finops
        type: call
        call: msteams.post-channel-message
        with:
          channelId: finops-team
          message: 'AWS cost spike: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}} | ServiceNow: {{create-ticket.number}}'
  consumes:
  - type: http
    namespace: aws-cost
    baseUri: https://ce.us-east-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_token
    resources:
    - name: anomalies
      path: /GetAnomalies
      operations:
      - name: get-anomalies
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → aws-cost-anomaly-alert-handler.yml

When an Xfinity Mobile order is placed, provisions the SIM in the carrier system, updates Salesforce, and sends activation confirmation via the messaging platform.

naftiko: '0.5'
info:
  label: Xfinity Mobile Provisioning Orchestrator
  description: When an Xfinity Mobile order is placed, provisions the SIM in the carrier system, updates Salesforce, and sends activation confirmation via the messaging platform.
  tags:
  - mobile
  - provisioning
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: mobile-provisioning
    port: 8080
    tools:
    - name: provision-mobile-line
      description: Given a Salesforce order ID for Xfinity Mobile, provision and activate the line.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Salesforce mobile order ID.
      steps:
      - name: get-order
        type: call
        call: salesforce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-work-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Mobile activation: {{order_id}}'
          description: 'Customer: {{get-order.customer_name}}. Plan: {{get-order.plan_name}}'
      - name: update-order
        type: call
        call: salesforce.update-order-status
        with:
          order_id: '{{order_id}}'
          status: Provisioned
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: orders
      path: /sobjects/Order/{{order_id}}
      operations:
      - name: get-order
        method: GET
      - name: update-order-status
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: work-orders
      path: /table/wm_order
      operations:
      - name: create-work-order
        method: POST
Open in Framework → View in Fleet → xfinity-mobile-provisioning-orchestrator.yml

Returns current payroll headcount grouped by department and pay grade from Workday for finance and HR reporting.

naftiko: '0.5'
info:
  label: Workday Payroll Headcount Export
  description: Returns current payroll headcount grouped by department and pay grade from Workday for finance and HR reporting.
  tags:
  - hr
  - finance
  - workday
  - payroll
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: payroll-reporting
    port: 8080
    tools:
    - name: get-payroll-headcount
      description: Returns active employees grouped by department and pay grade from Workday payroll. Use for headcount reporting, period close, and compensation analysis.
      call: workday.get-payroll-results
      outputParameters:
      - name: total_gross_pay
        type: number
        mapping: $.totals.grossPay
      - name: total_employees
        type: number
        mapping: $.totals.headcount
      - name: period
        type: string
        mapping: $.payPeriod
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: payroll-results
      path: /comcast/payrollResults
      operations:
      - name: get-payroll-results
        method: GET
Open in Framework → View in Fleet → workday-payroll-headcount-export.yml

Queries Splunk for security events matching a given source IP or user, and posts the event summary to the security operations Teams channel for investigation.

naftiko: '0.5'
info:
  label: Splunk Security Event Investigation
  description: Queries Splunk for security events matching a given source IP or user, and posts the event summary to the security operations Teams channel for investigation.
  tags:
  - security
  - observability
  - splunk
  - microsoft-teams
  - investigation
capability:
  exposes:
  - type: mcp
    namespace: security-investigation
    port: 8080
    tools:
    - name: investigate-security-event
      description: Given a source IP address or username, query Splunk for recent security events and post a summary of findings to the security operations Teams channel.
      inputParameters:
      - name: search_term
        in: body
        type: string
        description: The IP address or username to search for in Splunk security events.
      - name: lookback_hours
        in: body
        type: integer
        description: Number of hours to look back in Splunk for events.
      steps:
      - name: search-splunk
        type: call
        call: splunk.run-search
        with:
          search: index=security (src_ip={{search_term}} OR user={{search_term}}) earliest=-{{lookback_hours}}h
      - name: post-findings
        type: call
        call: msteams.post-channel-message
        with:
          channelId: security-operations
          message: 'Security investigation for {{search_term}} (last {{lookback_hours}}h): {{search-splunk.event_count}} events found. Top events: {{search-splunk.top_events}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8089
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search-jobs
      path: /services/search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → splunk-security-event-investigation.yml

Coordinates subscriber equipment swaps by updating the Salesforce account, creating a ServiceNow work order, and notifying the logistics team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Subscriber Equipment Swap Orchestrator
  description: Coordinates subscriber equipment swaps by updating the Salesforce account, creating a ServiceNow work order, and notifying the logistics team via Microsoft Teams.
  tags:
  - customer-support
  - equipment
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: equipment-swap
    port: 8080
    tools:
    - name: process-equipment-swap
      description: Given a subscriber account and new equipment serial, orchestrate the equipment swap.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Subscriber account ID.
      - name: new_serial
        in: body
        type: string
        description: New equipment serial number.
      steps:
      - name: update-account
        type: call
        call: salesforce.update-equipment
        with:
          account_id: '{{account_id}}'
          serial: '{{new_serial}}'
      - name: create-work-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Equipment swap: account {{account_id}}'
          description: 'New serial: {{new_serial}}'
      - name: notify-logistics
        type: call
        call: teams.post-message
        with:
          channel_id: logistics
          text: 'Equipment swap: {{account_id}} → {{new_serial}}. WO: {{create-work-order.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      operations:
      - name: update-equipment
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: work-orders
      path: /table/wm_order
      operations:
      - name: create-work-order
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → subscriber-equipment-swap-orchestrator.yml

Monitors video transcoding pipeline health in Datadog, creates a Jira ticket when failure rates spike, and alerts the media engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Video Transcoding Pipeline Monitor
  description: Monitors video transcoding pipeline health in Datadog, creates a Jira ticket when failure rates spike, and alerts the media engineering team via Microsoft Teams.
  tags:
  - media
  - transcoding
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: transcoding-ops
    port: 8080
    tools:
    - name: handle-transcoding-alert
      description: Given a Datadog alert for transcoding failures, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MEDIA
          summary: 'Transcoding failures: {{get-alert.name}}'
          description: '{{get-alert.message}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: media-engineering
          text: 'Transcoding alert: {{get-alert.name}}. Jira: {{create-ticket.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → video-transcoding-pipeline-monitor.yml

When a network outage alert fires in Datadog, creates a ServiceNow P1 incident, posts to the NOC Teams channel, and logs the event in Splunk.

naftiko: '0.5'
info:
  label: Network Outage Incident Response
  description: When a network outage alert fires in Datadog, creates a ServiceNow P1 incident, posts to the NOC Teams channel, and logs the event in Splunk.
  tags:
  - itsm
  - observability
  - datadog
  - servicenow
  - splunk
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: noc-ops
    port: 8080
    tools:
    - name: handle-network-outage
      description: Given a Datadog monitor alert for a network outage, create a ServiceNow P1 incident, send a NOC channel alert in Teams, and index the event in Splunk.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID that triggered the alert.
      - name: affected_region
        in: body
        type: string
        description: Geographic region or network segment affected by the outage.
      - name: alert_message
        in: body
        type: string
        description: The alert message text from Datadog.
      steps:
      - name: get-monitor
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Network outage: {{affected_region}}'
          description: '{{alert_message}}

            Monitor: {{monitor_id}}

            State: {{get-monitor.overall_state}}'
          urgency: '1'
          impact: '1'
      - name: alert-noc
        type: call
        call: msteams.post-channel-message
        with:
          channelId: noc-alerts
          message: 'P1 Outage: {{affected_region}} | Monitor: {{monitor_id}} | ServiceNow: {{create-incident.number}} | {{alert_message}}'
      - name: log-splunk
        type: call
        call: splunk.index-event
        with:
          source: datadog-alert
          event: 'Network outage detected in {{affected_region}}: {{alert_message}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8088
    authentication:
      type: bearer
      token: $secrets.splunk_hec_token
    resources:
    - name: events
      path: /services/collector/event
      operations:
      - name: index-event
        method: POST
Open in Framework → View in Fleet → network-outage-incident-response.yml

Identifies expiring enterprise contracts in Salesforce, creates Jira renewal tasks, and notifies account managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Contract Renewal Workflow
  description: Identifies expiring enterprise contracts in Salesforce, creates Jira renewal tasks, and notifies account managers via Microsoft Teams.
  tags:
  - sales
  - contracts
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: contract-renewal
    port: 8080
    tools:
    - name: process-renewal
      description: Given a Salesforce contract ID nearing expiry, initiate the renewal workflow.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: Salesforce contract ID.
      steps:
      - name: get-contract
        type: call
        call: salesforce.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project: SALES
          summary: 'Renewal: {{get-contract.account_name}} — {{get-contract.end_date}}'
          description: 'Annual value: ${{get-contract.annual_value}}'
      - name: notify-am
        type: call
        call: teams.post-message
        with:
          channel_id: account-management
          text: 'Renewal due: {{get-contract.account_name}}. Expires: {{get-contract.end_date}}. Value: ${{get-contract.annual_value}}. Jira: {{create-task.key}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contracts
      path: /sobjects/Contract/{{contract_id}}
      operations:
      - name: get-contract
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-contract-renewal-workflow.yml

Retrieves the current Xfinity service tier, bundle details, and contract end date for a subscriber from Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Subscriber Service Tier Lookup
  description: Retrieves the current Xfinity service tier, bundle details, and contract end date for a subscriber from Salesforce.
  tags:
  - crm
  - subscriber
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: subscriber-tiers
    port: 8080
    tools:
    - name: get-service-tier
      description: Given a Comcast subscriber account ID, return service tier, bundle name, and contract end date.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Comcast subscriber account ID.
      call: salesforce.get-subscriber
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: service_tier
        type: string
        mapping: $.records[0].ServiceTier__c
      - name: bundle_name
        type: string
        mapping: $.records[0].BundleName__c
      - name: contract_end
        type: string
        mapping: $.records[0].ContractEnd__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query
      inputParameters:
      - name: account_id
        in: query
      operations:
      - name: get-subscriber
        method: GET
Open in Framework → View in Fleet → salesforce-subscriber-service-tier-lookup.yml

Refreshes the subscriber analytics Power BI dashboard, verifies completion, and posts the status to the analytics Teams channel.

naftiko: '0.5'
info:
  label: Power BI Subscriber Dashboard Auto-Refresh
  description: Refreshes the subscriber analytics Power BI dashboard, verifies completion, and posts the status to the analytics Teams channel.
  tags:
  - analytics
  - dashboards
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: dashboard-refresh
    port: 8080
    tools:
    - name: refresh-subscriber-dashboard
      description: Given a Power BI dataset ID, trigger refresh and report status.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: '{{dataset_id}}'
      - name: notify-analytics
        type: call
        call: teams.post-message
        with:
          channel_id: analytics-team
          text: 'Subscriber dashboard refreshed. 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: /datasets/{{dataset_id}}/refreshes
      operations:
      - name: trigger-refresh
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → power-bi-subscriber-dashboard-auto-refresh.yml

Retrieves subscriber usage patterns from Snowflake, identifies high-risk churn accounts in Salesforce, and creates a retention campaign task for the account team.

naftiko: '0.5'
info:
  label: Customer Churn Prediction Workflow
  description: Retrieves subscriber usage patterns from Snowflake, identifies high-risk churn accounts in Salesforce, and creates a retention campaign task for the account team.
  tags:
  - crm
  - analytics
  - churn
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: churn-prediction
    port: 8080
    tools:
    - name: process-churn-risk
      description: Given a market segment, identify high-risk churn subscribers and initiate retention workflows.
      inputParameters:
      - name: market_segment
        in: body
        type: string
        description: Market segment to analyze.
      steps:
      - name: get-usage-patterns
        type: call
        call: snowflake.query-churn-risk
        with:
          market_segment: '{{market_segment}}'
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: 'Retention: {{market_segment}} — {{get-usage-patterns.high_risk_count}} accounts'
          type: Retention
      - name: notify-retention
        type: call
        call: teams.post-message
        with:
          channel_id: customer-retention
          text: 'Churn risk: {{get-usage-patterns.high_risk_count}} accounts in {{market_segment}}. Campaign: {{create-campaign.id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-churn-risk
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → customer-churn-prediction-workflow.yml

Monitors enterprise internet SLA compliance via Datadog, stores metrics in Snowflake, and emails weekly SLA reports to account managers via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Enterprise Internet SLA Monitor
  description: Monitors enterprise internet SLA compliance via Datadog, stores metrics in Snowflake, and emails weekly SLA reports to account managers via Microsoft Outlook.
  tags:
  - sla
  - enterprise
  - datadog
  - snowflake
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: enterprise-sla
    port: 8080
    tools:
    - name: generate-sla-report
      description: Given an enterprise account ID, generate the SLA compliance report.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Enterprise account ID.
      steps:
      - name: get-sla-metrics
        type: call
        call: datadog.get-sla
        with:
          account_id: '{{account_id}}'
      - name: store-metrics
        type: call
        call: snowflake.insert-sla
        with:
          account_id: '{{account_id}}'
          uptime: '{{get-sla-metrics.uptime_pct}}'
      - name: email-report
        type: call
        call: outlook.send-email
        with:
          to: '{{get-sla-metrics.am_email}}'
          subject: 'SLA Report: {{account_id}}'
          body: 'Uptime: {{get-sla-metrics.uptime_pct}}%. Latency: {{get-sla-metrics.latency_ms}}ms.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: sla
      path: /slo
      operations:
      - name: get-sla
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-sla
        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 → enterprise-internet-sla-monitor.yml

Retrieves the CDN cache hit ratio and bandwidth metrics from Datadog for Comcast content delivery infrastructure.

naftiko: '0.5'
info:
  label: Datadog CDN Cache Hit Ratio
  description: Retrieves the CDN cache hit ratio and bandwidth metrics from Datadog for Comcast content delivery infrastructure.
  tags:
  - cdn
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: cdn-metrics
    port: 8080
    tools:
    - name: get-cache-metrics
      description: Given a CDN region, return the cache hit ratio and bandwidth utilization.
      inputParameters:
      - name: cdn_region
        in: body
        type: string
        description: CDN region (e.g., us-east, us-west).
      call: datadog.query-cdn-metrics
      with:
        cdn_region: '{{cdn_region}}'
      outputParameters:
      - name: hit_ratio
        type: number
        mapping: $.series[0].hit_ratio
      - name: bandwidth_gbps
        type: number
        mapping: $.series[0].bandwidth
  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
      inputParameters:
      - name: cdn_region
        in: query
      operations:
      - name: query-cdn-metrics
        method: GET
Open in Framework → View in Fleet → datadog-cdn-cache-hit-ratio.yml

Pulls completed sprint data from Jira for an engineering team, calculates velocity, and posts the sprint summary to the team's Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Report
  description: Pulls completed sprint data from Jira for an engineering team, calculates velocity, and posts the sprint summary to the team's Microsoft Teams channel.
  tags:
  - devops
  - engineering
  - jira
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: engineering-reporting
    port: 8080
    tools:
    - name: publish-sprint-velocity
      description: Given a Jira board ID and sprint ID, retrieve completed issues and story points, then post a velocity summary to the engineering Teams channel.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira software board ID.
      - name: sprint_id
        in: body
        type: string
        description: The Jira sprint ID to report on.
      steps:
      - name: get-sprint-issues
        type: call
        call: jira.get-sprint-issues
        with:
          boardId: '{{board_id}}'
          sprintId: '{{sprint_id}}'
      - name: post-velocity
        type: call
        call: msteams.post-channel-message
        with:
          channelId: engineering-team
          message: 'Sprint {{sprint_id}} complete: {{get-sprint-issues.completedIssues}} issues, {{get-sprint-issues.completedPoints}} story points delivered.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprint-issues
      path: /board/{{boardId}}/sprint/{{sprintId}}/issue
      inputParameters:
      - name: boardId
        in: path
      - name: sprintId
        in: path
      operations:
      - name: get-sprint-issues
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-velocity-report.yml

Retrieves LinkedIn employer brand metrics, stores trends in Snowflake, and posts the weekly summary to the HR marketing Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Talent Brand Monitor
  description: Retrieves LinkedIn employer brand metrics, stores trends in Snowflake, and posts the weekly summary to the HR marketing Teams channel.
  tags:
  - hr
  - employer-brand
  - linkedin
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: talent-brand
    port: 8080
    tools:
    - name: monitor-talent-brand
      description: Given a reporting period, generate the LinkedIn employer brand report.
      inputParameters:
      - name: period
        in: body
        type: string
        description: Reporting period (e.g., 2026-W13).
      steps:
      - name: get-brand-metrics
        type: call
        call: linkedin.get-brand-stats
        with:
          period: '{{period}}'
      - name: store-metrics
        type: call
        call: snowflake.insert-brand-metrics
        with:
          period: '{{period}}'
          followers: '{{get-brand-metrics.followers}}'
          engagement_rate: '{{get-brand-metrics.engagement_rate}}'
      - name: notify-hr
        type: call
        call: teams.post-message
        with:
          channel_id: hr-marketing
          text: 'LinkedIn brand: {{period}}. Followers: {{get-brand-metrics.followers}}. Engagement: {{get-brand-metrics.engagement_rate}}%'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: brand
      path: /organizationalEntityFollowerStatistics
      operations:
      - name: get-brand-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-brand-metrics
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → linkedin-talent-brand-monitor.yml

When Datadog detects an error spike in AWS Lambda functions, retrieves function metrics, creates a Jira ticket, and pages the on-call engineer via PagerDuty.

naftiko: '0.5'
info:
  label: AWS Lambda Error Spike Responder
  description: When Datadog detects an error spike in AWS Lambda functions, retrieves function metrics, creates a Jira ticket, and pages the on-call engineer via PagerDuty.
  tags:
  - cloud
  - serverless
  - datadog
  - jira
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: lambda-errors
    port: 8080
    tools:
    - name: handle-lambda-errors
      description: Given a Datadog alert for Lambda errors, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: function_name
        in: body
        type: string
        description: Lambda function name.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: CLOUD
          summary: 'Lambda error spike: {{function_name}}'
          description: '{{get-alert.message}}'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: cloud-engineering
          title: 'Lambda errors: {{function_name}} — {{create-ticket.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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 → aws-lambda-error-spike-responder.yml

Retrieves the status and review state of a GitHub pull request in Comcast engineering repositories.

naftiko: '0.5'
info:
  label: GitHub Pull Request Status Check
  description: Retrieves the status and review state of a GitHub pull request in Comcast engineering repositories.
  tags:
  - development
  - github
capability:
  exposes:
  - type: mcp
    namespace: pr-status
    port: 8080
    tools:
    - name: get-pr-status
      description: Given a repository name and PR number, return the PR title, status, and mergeable state.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: pr_number
        in: body
        type: string
        description: PR number.
      call: github.get-pr
      with:
        repo_name: '{{repo_name}}'
        pr_number: '{{pr_number}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: state
        type: string
        mapping: $.state
      - name: mergeable
        type: string
        mapping: $.mergeable
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pulls
      path: /repos/comcast/{{repo_name}}/pulls/{{pr_number}}
      inputParameters:
      - name: repo_name
        in: path
      - name: pr_number
        in: path
      operations:
      - name: get-pr
        method: GET
Open in Framework → View in Fleet → github-pull-request-status-check.yml

When a cable node reaches capacity threshold, retrieves utilization data from Snowflake, creates a Jira planning epic, and notifies the network planning team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Cable Node Split Planning Workflow
  description: When a cable node reaches capacity threshold, retrieves utilization data from Snowflake, creates a Jira planning epic, and notifies the network planning team via Microsoft Teams.
  tags:
  - network
  - cable
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: node-planning
    port: 8080
    tools:
    - name: plan-node-split
      description: Given a cable node ID and utilization percentage, initiate the node split planning workflow.
      inputParameters:
      - name: node_id
        in: body
        type: string
        description: Cable node identifier.
      - name: utilization_pct
        in: body
        type: number
        description: Current utilization percentage.
      steps:
      - name: get-node-data
        type: call
        call: snowflake.query-node-usage
        with:
          node_id: '{{node_id}}'
      - name: create-epic
        type: call
        call: jira.create-issue
        with:
          project: NETPLAN
          summary: 'Node split: {{node_id}} at {{utilization_pct}}%'
          issue_type: Epic
          description: 'Subscriber count: {{get-node-data.subscriber_count}}. Peak usage: {{get-node-data.peak_gbps}} Gbps'
      - name: notify-planning
        type: call
        call: teams.post-message
        with:
          channel_id: network-planning
          text: 'Node split needed: {{node_id}} ({{utilization_pct}}%). {{get-node-data.subscriber_count}} subscribers. Jira: {{create-epic.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-node-usage
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cable-node-split-planning-workflow.yml

Searches Splunk for network events matching a given CMTS node ID to aid in troubleshooting cable network issues.

naftiko: '0.5'
info:
  label: Splunk Network Event Search
  description: Searches Splunk for network events matching a given CMTS node ID to aid in troubleshooting cable network issues.
  tags:
  - network
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: network-events
    port: 8080
    tools:
    - name: search-network-events
      description: Given a CMTS node ID, search Splunk for recent events and return the count and most common event type.
      inputParameters:
      - name: cmts_node_id
        in: body
        type: string
        description: CMTS node identifier.
      call: splunk.search
      with:
        cmts_node_id: '{{cmts_node_id}}'
      outputParameters:
      - name: event_count
        type: number
        mapping: $.results.event_count
      - name: top_event_type
        type: string
        mapping: $.results.top_type
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8089
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /services/search/jobs/export
      inputParameters:
      - name: cmts_node_id
        in: query
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → splunk-network-event-search.yml

Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure, and creates a ServiceNow change record documenting the deployment.

naftiko: '0.5'
info:
  label: Terraform Cloud Infrastructure Provisioning
  description: Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure, and creates a ServiceNow change record documenting the deployment.
  tags:
  - cloud
  - infrastructure
  - terraform
  - servicenow
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: infra-provisioning
    port: 8080
    tools:
    - name: trigger-terraform-run
      description: Given a Terraform Cloud workspace ID and change description, trigger a plan and apply run and create a ServiceNow change record.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Terraform Cloud workspace ID.
      - name: change_description
        in: body
        type: string
        description: Description of the infrastructure change being applied.
      steps:
      - name: create-run
        type: call
        call: terraform.create-run
        with:
          workspaceId: '{{workspace_id}}'
          message: '{{change_description}}'
      - name: create-change-record
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Terraform infra change: {{change_description}}'
          description: 'Workspace: {{workspace_id}}

            Run ID: {{create-run.runId}}'
          category: Infrastructure
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
Open in Framework → View in Fleet → terraform-cloud-infrastructure-provisioning.yml

Queries Snowflake for content viewership metrics including total views, average watch time, and completion rate.

naftiko: '0.5'
info:
  label: Snowflake Content Viewership Query
  description: Queries Snowflake for content viewership metrics including total views, average watch time, and completion rate.
  tags:
  - analytics
  - content
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: content-analytics
    port: 8080
    tools:
    - name: query-viewership
      description: Given a content ID and date range, return viewership analytics from Snowflake.
      inputParameters:
      - name: content_id
        in: body
        type: string
        description: Content identifier.
      - name: date_range
        in: body
        type: string
        description: Date range (e.g., 2026-03-01:2026-03-27).
      call: snowflake.run-query
      with:
        content_id: '{{content_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: total_views
        type: number
        mapping: $.data[0].total_views
      - name: avg_watch_min
        type: number
        mapping: $.data[0].avg_watch_minutes
      - name: completion_rate
        type: number
        mapping: $.data[0].completion_rate
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.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-content-viewership-query.yml

Audits compensation changes in Workday, logs them in Snowflake for compliance, and notifies the HR compliance team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Compensation Change Audit
  description: Audits compensation changes in Workday, logs them in Snowflake for compliance, and notifies the HR compliance team via Microsoft Teams.
  tags:
  - hr
  - compensation
  - compliance
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: comp-audit
    port: 8080
    tools:
    - name: audit-comp-change
      description: Given an employee ID with a recent compensation change, audit and log.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-comp-history
        type: call
        call: workday.get-compensation
        with:
          employee_id: '{{employee_id}}'
      - name: log-audit
        type: call
        call: snowflake.insert-audit
        with:
          employee_id: '{{employee_id}}'
          old_salary: '{{get-comp-history.previous_salary}}'
          new_salary: '{{get-comp-history.current_salary}}'
      - name: notify-compliance
        type: call
        call: teams.post-message
        with:
          channel_id: hr-compliance
          text: 'Comp change: {{employee_id}}. Previous: ${{get-comp-history.previous_salary}} → ${{get-comp-history.current_salary}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: compensation
      path: /workers/{{employee_id}}/compensation
      operations:
      - name: get-compensation
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-audit
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-compensation-change-audit.yml

Pulls diversity and inclusion metrics from Workday, stores trend data in Snowflake, and posts the quarterly report to the HR leadership Teams channel.

naftiko: '0.5'
info:
  label: Workday Diversity Metrics Reporter
  description: Pulls diversity and inclusion metrics from Workday, stores trend data in Snowflake, and posts the quarterly report to the HR leadership Teams channel.
  tags:
  - hr
  - diversity
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: diversity-metrics
    port: 8080
    tools:
    - name: generate-diversity-report
      description: Given a fiscal quarter, generate the diversity metrics report.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter (e.g., FY26-Q1).
      steps:
      - name: get-metrics
        type: call
        call: workday.get-diversity-stats
        with:
          quarter: '{{fiscal_quarter}}'
      - name: store-trends
        type: call
        call: snowflake.insert-diversity
        with:
          quarter: '{{fiscal_quarter}}'
          headcount: '{{get-metrics.total_headcount}}'
      - name: notify-leadership
        type: call
        call: teams.post-message
        with:
          channel_id: hr-leadership
          text: 'Diversity report: {{fiscal_quarter}}. Headcount: {{get-metrics.total_headcount}}. Representation: {{get-metrics.representation_pct}}%'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: diversity
      path: /reports/diversity
      operations:
      - name: get-diversity-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-diversity
        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/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-diversity-metrics-reporter.yml

When Datadog detects VoIP quality degradation for Comcast Business customers, retrieves metrics, creates a ServiceNow incident, and pages the voice team via PagerDuty.

naftiko: '0.5'
info:
  label: Business VoIP Quality Alert Handler
  description: When Datadog detects VoIP quality degradation for Comcast Business customers, retrieves metrics, creates a ServiceNow incident, and pages the voice team via PagerDuty.
  tags:
  - voice
  - business
  - datadog
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: voip-quality
    port: 8080
    tools:
    - name: handle-voip-alert
      description: Given a Datadog alert for VoIP quality issues, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: business_account
        in: body
        type: string
        description: Business customer account ID.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'VoIP quality: business account {{business_account}}'
          urgency: '2'
          description: '{{get-alert.message}}'
      - name: page-voice
        type: call
        call: pagerduty.create-incident
        with:
          service_id: voice-engineering
          title: 'VoIP quality: {{business_account}} — {{create-incident.number}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → business-voip-quality-alert-handler.yml

When Okta detects a suspicious login, retrieves user details, creates a ServiceNow security incident, and alerts the security team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Okta Suspicious Login Response
  description: When Okta detects a suspicious login, retrieves user details, creates a ServiceNow security incident, and alerts the security team via Microsoft Teams.
  tags:
  - security
  - identity
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: suspicious-login
    port: 8080
    tools:
    - name: handle-suspicious-login
      description: Given an Okta event ID for a suspicious login, investigate and escalate.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: Okta system log event ID.
      - name: user_email
        in: body
        type: string
        description: Affected user email.
      steps:
      - name: get-user
        type: call
        call: okta.get-user
        with:
          user_email: '{{user_email}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Suspicious login: {{user_email}}'
          urgency: '2'
          category: security
          description: 'User: {{get-user.name}}. Department: {{get-user.department}}. Event: {{event_id}}'
      - name: alert-security
        type: call
        call: teams.post-message
        with:
          channel_id: security-alerts
          text: 'Suspicious login: {{user_email}} ({{get-user.department}}). ServiceNow: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{user_email}}
      operations:
      - name: get-user
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-login-response.yml

When a GitHub release is published, annotates the Datadog deployment dashboard, creates a Jira release ticket, and notifies the engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: GitHub Release Deployment Tracker
  description: When a GitHub release is published, annotates the Datadog deployment dashboard, creates a Jira release ticket, and notifies the engineering team via Microsoft Teams.
  tags:
  - deployment
  - github
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-tracking
    port: 8080
    tools:
    - name: track-release
      description: Given a GitHub repository and release tag, track the deployment.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: release_tag
        in: body
        type: string
        description: Release tag (e.g., v2.3.1).
      steps:
      - name: get-release
        type: call
        call: github.get-release
        with:
          repo_name: '{{repo_name}}'
          tag: '{{release_tag}}'
      - name: annotate-datadog
        type: call
        call: datadog.create-event
        with:
          title: 'Deploy: {{repo_name}} {{release_tag}}'
          text: '{{get-release.body}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: REL
          summary: 'Release: {{repo_name}} {{release_tag}}'
          description: '{{get-release.body}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: releases
          text: 'Released: {{repo_name}} {{release_tag}}. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/comcast/{{repo_name}}/releases/tags/{{tag}}
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-release-deployment-tracker.yml

Retrieves Comcast Business opportunity pipeline from Salesforce, calculates weighted forecast, and posts the weekly summary to the sales leadership Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Business Opportunity Pipeline
  description: Retrieves Comcast Business opportunity pipeline from Salesforce, calculates weighted forecast, and posts the weekly summary to the sales leadership Teams channel.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sales-pipeline
    port: 8080
    tools:
    - name: generate-pipeline-report
      description: Given a sales region, generate the opportunity pipeline report.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Sales region.
      steps:
      - name: get-pipeline
        type: call
        call: salesforce.query-opportunities
        with:
          region: '{{region}}'
      - name: notify-leadership
        type: call
        call: teams.post-message
        with:
          channel_id: sales-leadership
          text: 'Pipeline: {{region}}. Total: ${{get-pipeline.total_value}}. Weighted: ${{get-pipeline.weighted_value}}. Deals: {{get-pipeline.deal_count}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-business-opportunity-pipeline.yml

When Datadog detects Kubernetes cluster health degradation, retrieves node metrics, creates a Jira ticket, and pages the platform team via PagerDuty.

naftiko: '0.5'
info:
  label: Datadog Kubernetes Cluster Health Responder
  description: When Datadog detects Kubernetes cluster health degradation, retrieves node metrics, creates a Jira ticket, and pages the platform team via PagerDuty.
  tags:
  - cloud
  - kubernetes
  - datadog
  - jira
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: k8s-health
    port: 8080
    tools:
    - name: handle-cluster-alert
      description: Given a Datadog alert for K8s cluster issues, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: cluster_name
        in: body
        type: string
        description: Kubernetes cluster name.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: PLATFORM
          summary: 'K8s cluster: {{cluster_name}}'
          description: '{{get-alert.message}}'
      - name: page-platform
        type: call
        call: pagerduty.create-incident
        with:
          service_id: platform-engineering
          title: 'K8s: {{cluster_name}} — {{create-ticket.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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 → datadog-kubernetes-cluster-health-responder.yml

When a Workday termination is processed, deactivates the employee's Okta account, disables Microsoft 365, and resolves open ServiceNow tickets.

naftiko: '0.5'
info:
  label: Employee Offboarding Access Revocation
  description: When a Workday termination is processed, deactivates the employee's Okta account, disables Microsoft 365, and resolves open ServiceNow tickets.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, deactivate Okta, disable Microsoft Graph account, and resolve open ServiceNow tickets.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the departing employee.
      - name: termination_date
        in: body
        type: string
        description: Termination date in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          login: '{{get-worker.work_email}}'
      - name: disable-m365
        type: call
        call: msgraph.update-user
        with:
          userPrincipalName: '{{get-worker.work_email}}'
          accountEnabled: 'false'
      - name: close-tickets
        type: call
        call: servicenow.close-user-tickets
        with:
          caller_id: '{{get-worker.work_email}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /comcast/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{login}}/lifecycle/deactivate
      inputParameters:
      - name: login
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{userPrincipalName}}
      inputParameters:
      - name: userPrincipalName
        in: path
      operations:
      - name: update-user
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: close-user-tickets
        method: PATCH
Open in Framework → View in Fleet → employee-offboarding-access-revocation.yml

When a Salesforce NPS survey returns a detractor score, retrieves subscriber details, creates a Jira follow-up task, and notifies the customer experience team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce NPS Detractor Response
  description: When a Salesforce NPS survey returns a detractor score, retrieves subscriber details, creates a Jira follow-up task, and notifies the customer experience team via Microsoft Teams.
  tags:
  - customer-experience
  - nps
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nps-response
    port: 8080
    tools:
    - name: handle-detractor
      description: Given a Salesforce NPS survey ID with detractor score, initiate follow-up.
      inputParameters:
      - name: survey_id
        in: body
        type: string
        description: Salesforce survey response ID.
      - name: account_id
        in: body
        type: string
        description: Subscriber account ID.
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: create-followup
        type: call
        call: jira.create-issue
        with:
          project: CX
          summary: 'NPS detractor: {{get-account.Name}}'
          description: 'Survey: {{survey_id}}. Service tier: {{get-account.ServiceTier__c}}'
      - name: notify-cx
        type: call
        call: teams.post-message
        with:
          channel_id: customer-experience
          text: 'NPS detractor: {{get-account.Name}} ({{account_id}}). Jira: {{create-followup.key}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-nps-detractor-response.yml

Validates ServiceNow CMDB configuration item relationships, identifies orphaned CIs, creates Jira cleanup tasks, and notifies the CMDB team via Microsoft Teams.

naftiko: '0.5'
info:
  label: ServiceNow CMDB CI Relationship Validator
  description: Validates ServiceNow CMDB configuration item relationships, identifies orphaned CIs, creates Jira cleanup tasks, and notifies the CMDB team via Microsoft Teams.
  tags:
  - itsm
  - cmdb
  - servicenow
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cmdb-validation
    port: 8080
    tools:
    - name: validate-ci-relationships
      description: Given a CI class, validate relationships and identify orphans.
      inputParameters:
      - name: ci_class
        in: body
        type: string
        description: ServiceNow CI class name.
      steps:
      - name: get-orphans
        type: call
        call: servicenow.query-orphan-cis
        with:
          ci_class: '{{ci_class}}'
      - name: create-cleanup
        type: call
        call: jira.create-issue
        with:
          project: CMDB
          summary: 'Orphan CIs: {{ci_class}} — {{get-orphans.count}} found'
          description: 'Class: {{ci_class}}. Orphan count: {{get-orphans.count}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: cmdb-team
          text: 'CMDB validation: {{ci_class}}. {{get-orphans.count}} orphan CIs. Jira: {{create-cleanup.key}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: cmdb
      path: /table/{{ci_class}}
      operations:
      - name: query-orphan-cis
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-cmdb-ci-relationship-validator.yml

When a new lead is created in Salesforce, enriches the record with ZoomInfo firmographic data and updates the account owner based on territory rules.

naftiko: '0.5'
info:
  label: Salesforce Lead Enrichment
  description: When a new lead is created in Salesforce, enriches the record with ZoomInfo firmographic data and updates the account owner based on territory rules.
  tags:
  - crm
  - sales
  - salesforce
  - zoominfo
  - lead-management
capability:
  exposes:
  - type: mcp
    namespace: crm-leads
    port: 8080
    tools:
    - name: enrich-lead
      description: Given a Salesforce lead ID, fetch firmographic data from ZoomInfo and update the lead record with enriched company details and revenue information.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead record ID.
      steps:
      - name: get-lead
        type: call
        call: salesforce.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: enrich-company
        type: call
        call: zoominfo.search-company
        with:
          companyName: '{{get-lead.Company}}'
      - name: update-lead
        type: call
        call: salesforce-update.update-lead
        with:
          lead_id: '{{lead_id}}'
          AnnualRevenue: '{{enrich-company.revenue}}'
          NumberOfEmployees: '{{enrich-company.employeeCount}}'
          Industry: '{{enrich-company.industry}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /company
      operations:
      - name: search-company
        method: POST
  - type: http
    namespace: salesforce-update
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: update-lead
        method: PATCH
Open in Framework → View in Fleet → salesforce-lead-enrichment.yml

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

naftiko: '0.5'
info:
  label: New Employee Onboarding Orchestrator
  description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: 'Given a Workday employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision Okta, and send a Teams welcome.'
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: Employee start date in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-snow-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-worker.full_name}}'
          category: hr_onboarding
      - name: activate-okta
        type: call
        call: okta.create-user
        with:
          login: '{{get-worker.work_email}}'
          firstName: '{{get-worker.first_name}}'
          lastName: '{{get-worker.last_name}}'
      - name: send-welcome
        type: call
        call: msteams.post-message
        with:
          recipient: '{{get-worker.work_email}}'
          message: 'Welcome to Comcast, {{get-worker.first_name}}! Your onboarding ticket: {{create-snow-ticket.number}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /comcast/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /chats/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-employee-onboarding-orchestrator.yml

Audits Terraform-managed security groups for overly permissive rules, creates Jira compliance tickets, and notifies the cloud security team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Security Group Audit
  description: Audits Terraform-managed security groups for overly permissive rules, creates Jira compliance tickets, and notifies the cloud security team via Microsoft Teams.
  tags:
  - security
  - cloud
  - terraform
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sg-audit
    port: 8080
    tools:
    - name: audit-security-groups
      description: Given a Terraform workspace, audit security group rules for compliance.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Terraform workspace name.
      steps:
      - name: get-state
        type: call
        call: terraform.get-state
        with:
          workspace_name: '{{workspace_name}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: CLOUDSEC
          summary: 'SG audit: {{workspace_name}}'
          description: 'Open rules found: {{get-state.open_rule_count}}'
      - name: notify-security
        type: call
        call: teams.post-message
        with:
          channel_id: cloud-security
          text: 'SG audit: {{workspace_name}}. Open rules: {{get-state.open_rule_count}}. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: state
      path: /workspaces/{{workspace_name}}/current-state-version
      operations:
      - name: get-state
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → terraform-security-group-audit.yml

Monitors the Peacock content recommendation ML pipeline via Datadog, creates a Jira ticket when accuracy drops, and notifies the ML team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Peacock Content Recommendation Pipeline Monitor
  description: Monitors the Peacock content recommendation ML pipeline via Datadog, creates a Jira ticket when accuracy drops, and notifies the ML team via Microsoft Teams.
  tags:
  - streaming
  - ml-ops
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ml-pipeline
    port: 8080
    tools:
    - name: handle-recommendation-alert
      description: Given a Datadog alert for recommendation pipeline degradation, investigate and escalate.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: pipeline_name
        in: body
        type: string
        description: ML pipeline name.
      steps:
      - name: get-metrics
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MLOPS
          summary: 'Recommendation accuracy drop: {{pipeline_name}}'
          description: '{{get-metrics.message}}'
      - name: notify-ml-team
        type: call
        call: teams.post-message
        with:
          channel_id: ml-engineering
          text: 'Recommendation pipeline alert: {{pipeline_name}}. Jira: {{create-ticket.key}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → peacock-content-recommendation-pipeline-monitor.yml

When a high-volume alert fires in Splunk, sends the log context to Anthropic Claude for root cause analysis and posts the AI-generated triage summary to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Intelligent Incident Triage with Claude
  description: When a high-volume alert fires in Splunk, sends the log context to Anthropic Claude for root cause analysis and posts the AI-generated triage summary to the engineering Teams channel.
  tags:
  - ai
  - automation
  - anthropic
  - splunk
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: ai-triage
    port: 8080
    tools:
    - name: triage-incident-with-ai
      description: Given a Splunk alert message and affected service, send log context to Claude for root cause analysis and post the triage summary to the engineering Teams channel.
      inputParameters:
      - name: alert_message
        in: body
        type: string
        description: The full Splunk alert message text including log snippets.
      - name: service_name
        in: body
        type: string
        description: The service or application that generated the alert.
      - name: teams_channel_id
        in: body
        type: string
        description: The Teams channel ID to post the triage summary to.
      steps:
      - name: analyze-logs
        type: call
        call: anthropic.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Analyze this Splunk alert for {{service_name}} and provide a concise root cause analysis with recommended remediation steps:


            {{alert_message}}'
      - name: post-triage
        type: call
        call: msteams.post-channel-message
        with:
          channelId: '{{teams_channel_id}}'
          message: 'AI Triage for {{service_name}}:

            {{analyze-logs.content}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → intelligent-incident-triage-with-claude.yml

Creates a ServiceNow standard change request for a planned network maintenance window, associates affected CIs, and notifies the NOC team in Teams.

naftiko: '0.5'
info:
  label: ServiceNow Change Request for Network Maintenance
  description: Creates a ServiceNow standard change request for a planned network maintenance window, associates affected CIs, and notifies the NOC team in Teams.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
  - network
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: open-network-change
      description: Given a maintenance description, affected network CIs, and planned time window, create a ServiceNow change request and notify the NOC team in Teams.
      inputParameters:
      - name: change_description
        in: body
        type: string
        description: Description of the planned network maintenance activity.
      - name: affected_ci
        in: body
        type: string
        description: Comma-separated list of affected network configuration items.
      - name: planned_start
        in: body
        type: string
        description: Planned maintenance start in ISO 8601 format.
      - name: planned_end
        in: body
        type: string
        description: Planned maintenance end in ISO 8601 format.
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: '{{change_description}}'
          type: standard
          start_date: '{{planned_start}}'
          end_date: '{{planned_end}}'
          cmdb_ci: '{{affected_ci}}'
      - name: notify-noc
        type: call
        call: msteams.post-channel-message
        with:
          channelId: noc-team
          message: 'Network change {{create-change.number}} scheduled: {{change_description}} | Window: {{planned_start}} to {{planned_end}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-for-network-maintenance.yml

Checks the current latency and error rate for Peacock and Xfinity streaming services in Datadog.

naftiko: '0.5'
info:
  label: Datadog Streaming Service Latency Check
  description: Checks the current latency and error rate for Peacock and Xfinity streaming services in Datadog.
  tags:
  - streaming
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: streaming-health
    port: 8080
    tools:
    - name: get-streaming-latency
      description: Given a streaming service name, return p50 and p99 latency and error rate.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Streaming service name (e.g., peacock-api, xfinity-stream).
      call: datadog.get-service-stats
      with:
        service_name: '{{service_name}}'
      outputParameters:
      - name: p50_latency_ms
        type: number
        mapping: $.series[0].p50
      - name: p99_latency_ms
        type: number
        mapping: $.series[0].p99
      - name: error_rate
        type: number
        mapping: $.series[0].error_rate
  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
      inputParameters:
      - name: service_name
        in: query
      operations:
      - name: get-service-stats
        method: GET
Open in Framework → View in Fleet → datadog-streaming-service-latency-check.yml

When a Snowflake data pipeline fails, retrieves error details, creates a Jira bug for the data engineering team, and posts the failure to the data-ops Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Failure Handler
  description: When a Snowflake data pipeline fails, retrieves error details, creates a Jira bug for the data engineering team, and posts the failure to the data-ops Teams channel.
  tags:
  - data-engineering
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: data-pipeline-ops
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a Snowflake task name and error code, create a tracking ticket and notify.
      inputParameters:
      - name: task_name
        in: body
        type: string
        description: Snowflake task name.
      - name: error_code
        in: body
        type: string
        description: Error code from the failed run.
      steps:
      - name: get-task-history
        type: call
        call: snowflake.get-task-history
        with:
          task_name: '{{task_name}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: DATA
          summary: 'Pipeline failure: {{task_name}}'
          issue_type: Bug
          description: 'Error: {{error_code}}. Last success: {{get-task-history.last_success}}'
      - name: notify-data-ops
        type: call
        call: teams.post-message
        with:
          channel_id: data-ops
          text: 'Pipeline failed: {{task_name}} ({{error_code}}). Jira: {{create-bug.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: tasks
      path: /statements
      operations:
      - name: get-task-history
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-failure-handler.yml

Checks the last refresh status and duration for a Power BI dataset used in Comcast operational dashboards.

naftiko: '0.5'
info:
  label: Power BI Dataset Refresh Status
  description: Checks the last refresh status and duration for a Power BI dataset used in Comcast operational dashboards.
  tags:
  - analytics
  - dashboards
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: bi-refresh
    port: 8080
    tools:
    - name: get-refresh-status
      description: Given a Power BI dataset ID, return the last refresh status, time, and duration.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      call: powerbi.get-refresh-history
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].status
      - name: end_time
        type: string
        mapping: $.value[0].endTime
      - name: duration_sec
        type: number
        mapping: $.value[0].durationSeconds
  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: get-refresh-history
        method: GET
Open in Framework → View in Fleet → power-bi-dataset-refresh-status.yml

When a Datadog SLO drops below its error budget threshold, creates a ServiceNow incident and notifies the responsible engineering team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Datadog SLO Breach Alert
  description: When a Datadog SLO drops below its error budget threshold, creates a ServiceNow incident and notifies the responsible engineering team in Microsoft Teams.
  tags:
  - observability
  - itsm
  - datadog
  - servicenow
  - microsoft-teams
  - slo
capability:
  exposes:
  - type: mcp
    namespace: slo-ops
    port: 8080
    tools:
    - name: handle-slo-breach
      description: Given a Datadog SLO ID and service name, retrieve current SLO status, open a ServiceNow incident, and page the engineering team in Teams.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: The Datadog SLO ID that is breaching its error budget.
      - name: service_name
        in: body
        type: string
        description: The service name associated with the SLO.
      steps:
      - name: get-slo-status
        type: call
        call: datadog.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'SLO breach: {{service_name}}'
          description: 'SLO {{slo_id}} for {{service_name}} has breached error budget. Current: {{get-slo-status.sli_value}}%'
          urgency: '2'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channelId: engineering-alerts
          message: 'SLO breach: {{service_name}} | SLO: {{slo_id}} | Current SLI: {{get-slo-status.sli_value}}% | ServiceNow: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo/{{slo_id}}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-breach-alert.yml

When Splunk detects potential account fraud, retrieves subscriber details from Salesforce, creates a ServiceNow security incident, and notifies the fraud team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Splunk Fraud Detection Alert Handler
  description: When Splunk detects potential account fraud, retrieves subscriber details from Salesforce, creates a ServiceNow security incident, and notifies the fraud team via Microsoft Teams.
  tags:
  - security
  - fraud
  - splunk
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: fraud-detection
    port: 8080
    tools:
    - name: handle-fraud-alert
      description: Given a Splunk alert for potential fraud, investigate and escalate.
      inputParameters:
      - name: search_id
        in: body
        type: string
        description: Splunk search job ID.
      - name: account_id
        in: body
        type: string
        description: Affected subscriber account ID.
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Potential fraud: {{account_id}} — {{get-account.Name}}'
          urgency: '1'
          category: security
      - name: notify-fraud-team
        type: call
        call: teams.post-message
        with:
          channel_id: fraud-investigations
          text: 'Fraud alert: {{get-account.Name}} ({{account_id}}). Splunk: {{search_id}}. ServiceNow: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://comcast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-fraud-detection-alert-handler.yml

After a PagerDuty incident resolves, retrieves the timeline, creates a Confluence postmortem page, and shares the link via Microsoft Teams.

naftiko: '0.5'
info:
  label: PagerDuty Postmortem Generator
  description: After a PagerDuty incident resolves, retrieves the timeline, creates a Confluence postmortem page, and shares the link via Microsoft Teams.
  tags:
  - sre
  - postmortem
  - pagerduty
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: postmortem
    port: 8080
    tools:
    - name: generate-postmortem
      description: Given a PagerDuty incident ID, create a postmortem document.
      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: create-page
        type: call
        call: confluence.create-page
        with:
          space_key: SRE
          title: 'Postmortem: {{get-incident.title}}'
          content: 'Duration: {{get-incident.duration}}. Service: {{get-incident.service_name}}'
      - name: notify-sre
        type: call
        call: teams.post-message
        with:
          channel_id: sre-team
          text: 'Postmortem: {{get-incident.title}}. Confluence: {{create-page.url}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents/{{incident_id}}
      operations:
      - name: get-incident
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://comcast.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → pagerduty-postmortem-generator.yml

When Datadog detects a WiFi hotspot cluster outage, retrieves affected area data, creates a ServiceNow incident, and notifies field operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Xfinity WiFi Hotspot Outage Handler
  description: When Datadog detects a WiFi hotspot cluster outage, retrieves affected area data, creates a ServiceNow incident, and notifies field operations via Microsoft Teams.
  tags:
  - network
  - wifi
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: wifi-ops
    port: 8080
    tools:
    - name: handle-hotspot-outage
      description: Given a Datadog alert for WiFi hotspot outage, create incident and notify field ops.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: cluster_id
        in: body
        type: string
        description: WiFi hotspot cluster ID.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Xfinity WiFi hotspot outage: cluster {{cluster_id}}'
          urgency: '2'
          description: '{{get-alert.message}}'
      - name: notify-field-ops
        type: call
        call: teams.post-message
        with:
          channel_id: field-operations
          text: 'WiFi hotspot outage: cluster {{cluster_id}}. ServiceNow: {{create-incident.number}}'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → xfinity-wifi-hotspot-outage-handler.yml

When a streaming CDN failure is detected in Datadog, creates a ServiceNow P1 incident, alerts the streaming ops team via Microsoft Teams, and triggers CloudFront failover.

naftiko: '0.5'
info:
  label: Streaming Content Delivery Failure Handler
  description: When a streaming CDN failure is detected in Datadog, creates a ServiceNow P1 incident, alerts the streaming ops team via Microsoft Teams, and triggers CloudFront failover.
  tags:
  - streaming
  - cdn
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: streaming-cdn-ops
    port: 8080
    tools:
    - name: handle-cdn-failure
      description: Given a Datadog alert ID for CDN failure, create incident and trigger failover.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: cdn_region
        in: body
        type: string
        description: Affected CDN region.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'CDN failure: {{cdn_region}} streaming'
          urgency: '1'
          impact: '1'
          description: '{{get-alert.message}}'
      - name: notify-ops
        type: call
        call: teams.post-message
        with:
          channel_id: streaming-ops
          text: 'CDN P1: {{cdn_region}}. ServiceNow: {{create-incident.number}}. Failover initiated.'
  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/{{alert_id}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → streaming-content-delivery-failure-handler.yml

Lists all applications assigned to an Okta user at Comcast, including app name, status, and last sign-on time.

naftiko: '0.5'
info:
  label: Okta User Application List
  description: Lists all applications assigned to an Okta user at Comcast, including app name, status, and last sign-on time.
  tags:
  - identity
  - okta
capability:
  exposes:
  - type: mcp
    namespace: user-apps
    port: 8080
    tools:
    - name: list-user-apps
      description: Given an Okta user email, return the list of assigned applications.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: Okta user email address.
      call: okta.list-apps
      with:
        user_email: '{{user_email}}'
      outputParameters:
      - name: app_count
        type: number
        mapping: $.length
      - name: apps
        type: string
        mapping: $.apps
  consumes:
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: appLinks
      path: /users/{{user_email}}/appLinks
      inputParameters:
      - name: user_email
        in: path
      operations:
      - name: list-apps
        method: GET
Open in Framework → View in Fleet → okta-user-application-list.yml

Analyzes AWS cost data from Snowflake, identifies optimization opportunities, creates Jira tickets for the cloud team, and posts savings summary to Microsoft Teams.

naftiko: '0.5'
info:
  label: AWS Cost Optimization Recommender
  description: Analyzes AWS cost data from Snowflake, identifies optimization opportunities, creates Jira tickets for the cloud team, and posts savings summary to Microsoft Teams.
  tags:
  - cloud
  - cost-optimization
  - aws
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cost-optimization
    port: 8080
    tools:
    - name: generate-cost-recommendations
      description: Given an AWS account ID, analyze costs and generate optimization recommendations.
      inputParameters:
      - name: aws_account_id
        in: body
        type: string
        description: AWS account ID.
      steps:
      - name: get-cost-data
        type: call
        call: snowflake.query-aws-costs
        with:
          aws_account_id: '{{aws_account_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: CLOUD
          summary: 'Cost optimization: {{aws_account_id}} — ${{get-cost-data.savings_potential}}/mo'
          description: 'Current spend: ${{get-cost-data.monthly_spend}}. Idle resources: {{get-cost-data.idle_count}}'
      - name: notify-cloud-team
        type: call
        call: teams.post-message
        with:
          channel_id: cloud-finops
          text: 'Cost optimization: {{aws_account_id}}. Potential savings: ${{get-cost-data.savings_potential}}/mo. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://comcast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-aws-costs
        method: POST
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → aws-cost-optimization-recommender.yml

Monitors SSL certificate expiry events in Splunk, creates ServiceNow change requests for renewal, and notifies the security team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Splunk SSL Certificate Expiry Monitor
  description: Monitors SSL certificate expiry events in Splunk, creates ServiceNow change requests for renewal, and notifies the security team via Microsoft Teams.
  tags:
  - security
  - certificates
  - splunk
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cert-monitor
    port: 8080
    tools:
    - name: handle-cert-expiry
      description: Given a domain with an expiring certificate detected in Splunk, initiate renewal.
      inputParameters:
      - name: domain
        in: body
        type: string
        description: Domain with expiring certificate.
      - name: days_remaining
        in: body
        type: number
        description: Days until expiry.
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'SSL renewal: {{domain}}'
          category: security
          priority: '2'
      - name: notify-security
        type: call
        call: teams.post-message
        with:
          channel_id: security-ops
          text: 'SSL expiring: {{domain}} in {{days_remaining}} days. Change: {{create-change.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: changes
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-ssl-certificate-expiry-monitor.yml

When a Databricks job fails, retrieves run details, creates a Jira ticket, and notifies the data engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Azure Databricks Job Failure Handler
  description: When a Databricks job fails, retrieves run details, creates a Jira ticket, and notifies the data engineering team via Microsoft Teams.
  tags:
  - data-engineering
  - databricks
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: databricks-ops
    port: 8080
    tools:
    - name: handle-job-failure
      description: Given a Databricks run ID, investigate the failure and escalate.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: Databricks run ID.
      steps:
      - name: get-run
        type: call
        call: databricks.get-run
        with:
          run_id: '{{run_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: DATA
          summary: 'Databricks failure: {{get-run.run_name}}'
          description: 'Error: {{get-run.error_message}}. Cluster: {{get-run.cluster_id}}'
      - name: notify-team
        type: call
        call: teams.post-message
        with:
          channel_id: data-engineering
          text: 'Databricks failed: {{get-run.run_name}}. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://comcast.cloud.databricks.com/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: runs
      path: /jobs/runs/get
      operations:
      - name: get-run
        method: GET
  - type: http
    namespace: jira
    baseUri: https://comcast.atlassian.net/rest/api/3
    authentication:
      type: 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
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-databricks-job-failure-handler.yml

Aggregates Jira epic progress across product teams, generates a quarterly roadmap digest, and posts to the product leadership Teams channel.

naftiko: '0.5'
info:
  label: Jira Quarterly Roadmap Digest
  description: Aggregates Jira epic progress across product teams, generates a quarterly roadmap digest, and posts to the product leadership Teams channel.
  tags:
  - product-management
  - roadmap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: roadmap-digest
    port: 8080
    tools:
    - name: generate-roadmap-digest
      description: Given a fiscal quarter, generate the roadmap progress digest.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter (e.g., FY26-Q1).
      steps:
      - name: get-epics
        type: call
        call: jira.search-epics
        with:
          quarter: '{{fiscal_quarter}}'
      - name: notify-leadership
        type: call
        call: teams.post-message
        with:
          channel_id: product-leadership
          text: 'Roadmap digest: {{fiscal_quarter}}. Total epics: {{get-epics.total}}. On-track: {{get-epics.on_track}}. At-risk: {{get-epics.at_risk}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://comcast.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-epics
        method: GET
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-quarterly-roadmap-digest.yml

Enriches Splunk security alerts with CrowdStrike threat intelligence, creates a ServiceNow security incident, and notifies the SOC via Microsoft Teams.

naftiko: '0.5'
info:
  label: Splunk Security Incident Enrichment
  description: Enriches Splunk security alerts with CrowdStrike threat intelligence, creates a ServiceNow security incident, and notifies the SOC via Microsoft Teams.
  tags:
  - security
  - siem
  - splunk
  - crowdstrike
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-enrichment
    port: 8080
    tools:
    - name: enrich-security-alert
      description: Given a Splunk alert and indicator, enrich with threat intel and escalate.
      inputParameters:
      - name: search_id
        in: body
        type: string
        description: Splunk search ID.
      - name: indicator
        in: body
        type: string
        description: Threat indicator.
      steps:
      - name: get-results
        type: call
        call: splunk.get-results
        with:
          search_id: '{{search_id}}'
      - name: check-intel
        type: call
        call: crowdstrike.check-indicator
        with:
          indicator: '{{indicator}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Threat: {{indicator}} — {{check-intel.verdict}}'
          urgency: '1'
      - name: alert-soc
        type: call
        call: teams.post-message
        with:
          channel_id: soc-alerts
          text: 'Threat: {{indicator}}. Verdict: {{check-intel.verdict}}. ServiceNow: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.comcast.com:8089
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /services/search/jobs/{{search_id}}/results
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: intel
      path: /intel/combined/indicators/v1
      operations:
      - name: check-indicator
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-security-incident-enrichment.yml

When an org restructure is processed in Workday, updates Okta group memberships, adjusts ServiceNow assignments, and notifies affected managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Org Restructure Sync
  description: When an org restructure is processed in Workday, updates Okta group memberships, adjusts ServiceNow assignments, and notifies affected managers via Microsoft Teams.
  tags:
  - hr
  - identity
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: org-sync
    port: 8080
    tools:
    - name: sync-org-change
      description: Given an employee ID with a department transfer, sync access across systems.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: new_department
        in: body
        type: string
        description: New department.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{employee_id}}'
      - name: update-okta
        type: call
        call: okta.update-groups
        with:
          email: '{{get-worker.email}}'
          department: '{{new_department}}'
      - name: update-snow
        type: call
        call: servicenow.update-user
        with:
          email: '{{get-worker.email}}'
          department: '{{new_department}}'
      - name: notify-manager
        type: call
        call: teams.post-message
        with:
          channel_id: hr-notifications
          text: 'Org change: {{get-worker.name}} → {{new_department}}. Access updated.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/comcast
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{employee_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://comcast.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: groups
      path: /users/{{email}}/groups
      operations:
      - name: update-groups
        method: PUT
  - type: http
    namespace: servicenow
    baseUri: https://comcast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: users
      path: /table/sys_user
      operations:
      - name: update-user
        method: PATCH
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-org-restructure-sync.yml

Retrieves the status of an expense report from SAP Concur, returning total amount, approval status, and payment status.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Status
  description: Retrieves the status of an expense report from SAP Concur, returning total amount, approval status, and payment status.
  tags:
  - expense-management
  - sap-concur
  - finance
capability:
  exposes:
  - type: mcp
    namespace: expense-management
    port: 8080
    tools:
    - name: get-expense-report
      description: Look up a SAP Concur expense report. Returns total amount, approval status, and payment status.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      call: concur.get-report
      with:
        report_id: '{{report_id}}'
      outputParameters:
      - name: total_amount
        type: number
        mapping: $.Total
      - name: approval_status
        type: string
        mapping: $.ApprovalStatusName
      - name: payment_status
        type: string
        mapping: $.PaymentStatusName
  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-report-status.yml

Orchestrates video content production by importing footage from cloud storage, triggering transcoding in AWS MediaConvert, uploading to YouTube, and scheduling promotion via social media.

naftiko: '0.5'
info:
  label: Video Content Production Pipeline
  description: Orchestrates video content production by importing footage from cloud storage, triggering transcoding in AWS MediaConvert, uploading to YouTube, and scheduling promotion via social media.
  tags:
  - video
  - aws
  - youtube
  - social-media
capability:
  exposes:
  - type: mcp
    namespace: video-production
    port: 8080
    tools:
    - name: produce-video-content
      description: Process raw video footage through transcoding, upload to YouTube, and schedule social promotion.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The video project identifier.
      - name: brand
        in: body
        type: string
        description: The brand this video belongs to.
      - name: publish_date
        in: body
        type: string
        description: The target publish date.
      steps:
      - name: get-source-footage
        type: call
        call: s3.get-object-list
        with:
          bucket: cn-video-raw
          prefix: '{{project_id}}/'
      - name: transcode-video
        type: call
        call: mediaconvert.create-job
        with:
          source_key: '{{get-source-footage.objects[0].key}}'
          output_preset: web-hd
      - name: upload-to-youtube
        type: call
        call: youtube.upload-video
        with:
          title: '{{project_id}}'
          channel_id: '{{brand}}_channel'
      - name: schedule-social-posts
        type: call
        call: sprout-social.create-post
        with:
          text: 'New video from {{brand}}: {{upload-to-youtube.video_url}}'
          scheduled_time: '{{publish_date}}'
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_access_token
    resources:
    - name: objects
      path: /{{bucket}}
      inputParameters:
      - name: bucket
        in: path
      operations:
      - name: get-object-list
        method: GET
  - type: http
    namespace: mediaconvert
    baseUri: https://mediaconvert.us-east-1.amazonaws.com/2017-08-29
    authentication:
      type: bearer
      token: $secrets.aws_mediaconvert_token
    resources:
    - name: jobs
      path: /jobs
      operations:
      - name: create-job
        method: POST
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/upload/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?part=snippet,status
      operations:
      - name: upload-video
        method: POST
  - type: http
    namespace: sprout-social
    baseUri: https://api.sproutsocial.com/v1
    authentication:
      type: bearer
      token: $secrets.sprout_social_token
    resources:
    - name: posts
      path: /{{customer_id}}/messages
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → video-content-production-pipeline.yml

Retrieves performance metrics for a Facebook Ads campaign, returning impressions, reach, clicks, and cost per result.

naftiko: '0.5'
info:
  label: Facebook Ads Campaign Performance
  description: Retrieves performance metrics for a Facebook Ads campaign, returning impressions, reach, clicks, and cost per result.
  tags:
  - advertising
  - facebook-ads
  - paid-media
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-fb-campaign-performance
      description: Look up Facebook Ads campaign performance. Returns impressions, reach, clicks, and cost per result.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Facebook Ads campaign ID.
      call: facebook-ads.get-insights
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.data[0].impressions
      - name: reach
        type: number
        mapping: $.data[0].reach
      - name: clicks
        type: number
        mapping: $.data[0].clicks
      - name: cost_per_result
        type: number
        mapping: $.data[0].cost_per_action_type[0].value
  consumes:
  - type: http
    namespace: facebook-ads
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_ads_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-insights
        method: GET
Open in Framework → View in Fleet → facebook-ads-campaign-performance.yml

Monitors subscription churn risk by querying Snowflake analytics, creating a Jira ticket for customer success, sending a retention email via Mailchimp, and logging the event in Salesforce.

naftiko: '0.5'
info:
  label: Digital Subscription Churn Alert Pipeline
  description: Monitors subscription churn risk by querying Snowflake analytics, creating a Jira ticket for customer success, sending a retention email via Mailchimp, and logging the event in Salesforce.
  tags:
  - subscriptions
  - snowflake
  - jira
  - mailchimp
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: churn-alert
    port: 8080
    tools:
    - name: handle-churn-risk
      description: Detect and respond to subscription churn risk signals.
      inputParameters:
      - name: subscriber_id
        in: body
        type: string
        description: The subscriber identifier.
      - name: risk_score
        in: body
        type: number
        description: The churn risk score (0-100).
      steps:
      - name: get-subscriber-data
        type: call
        call: snowflake.run-query
        with:
          query: SELECT * FROM subscribers WHERE id = '{{subscriber_id}}'
      - name: create-jira-ticket
        type: call
        call: jira.create-issue
        with:
          project: CS
          summary: 'Churn risk: {{subscriber_id}}'
          priority: High
      - name: send-retention-email
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: retention
          subscriber_email: '{{get-subscriber-data.email}}'
      - name: log-in-salesforce
        type: call
        call: salesforce.create-activity
        with:
          contact_id: '{{subscriber_id}}'
          subject: Churn risk alert triggered
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://condenast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira
    baseUri: https://condenast.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: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://condenast.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 → digital-subscription-churn-alert-pipeline.yml

Processes GDPR data deletion requests by removing subscriber data from Snowflake, Salesforce, Mailchimp, and Google Analytics, then confirming completion via email to the requester.

naftiko: '0.5'
info:
  label: GDPR Data Deletion Request Pipeline
  description: Processes GDPR data deletion requests by removing subscriber data from Snowflake, Salesforce, Mailchimp, and Google Analytics, then confirming completion via email to the requester.
  tags:
  - compliance
  - gdpr
  - privacy
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: gdpr-deletion
    port: 8080
    tools:
    - name: process-deletion-request
      description: Remove user data across all systems in compliance with GDPR deletion requests.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: The email of the user requesting deletion.
      - name: request_id
        in: body
        type: string
        description: The GDPR request tracking identifier.
      steps:
      - name: delete-from-snowflake
        type: call
        call: snowflake.run-query
        with:
          query: DELETE FROM subscribers WHERE email = '{{user_email}}'
      - name: delete-from-salesforce
        type: call
        call: salesforce.delete-contact
        with:
          email: '{{user_email}}'
      - name: delete-from-mailchimp
        type: call
        call: mailchimp.delete-member
        with:
          email: '{{user_email}}'
      - name: confirm-deletion
        type: call
        call: gmail.send-email
        with:
          to: '{{user_email}}'
          subject: Data Deletion Confirmation - Request {{request_id}}
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://condenast.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://condenast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: delete-contact
        method: DELETE
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: members
      path: /lists/{{list_id}}/members/{{subscriber_hash}}
      operations:
      - name: delete-member
        method: DELETE
  - type: http
    namespace: gmail
    baseUri: https://gmail.googleapis.com/gmail/v1
    authentication:
      type: bearer
      token: $secrets.gmail_token
    resources:
    - name: messages
      path: /users/me/messages/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → gdpr-data-deletion-request-pipeline.yml

When a podcast episode is finalized, uploads to the hosting platform, distributes to Apple Podcasts and Spotify, updates the show notes in the CMS, and notifies the audio team via Slack.

naftiko: '0.5'
info:
  label: Podcast Distribution Pipeline
  description: When a podcast episode is finalized, uploads to the hosting platform, distributes to Apple Podcasts and Spotify, updates the show notes in the CMS, and notifies the audio team via Slack.
  tags:
  - podcast
  - audio
  - distribution
  - slack
capability:
  exposes:
  - type: mcp
    namespace: podcast-ops
    port: 8080
    tools:
    - name: distribute-podcast-episode
      description: Given an episode file and metadata, upload to hosting, distribute to platforms, update CMS, and notify team.
      inputParameters:
      - name: episode_title
        in: body
        type: string
        description: The episode title.
      - name: audio_url
        in: body
        type: string
        description: The finalized audio file URL.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: show_notes
        in: body
        type: string
        description: The episode show notes.
      steps:
      - name: upload-episode
        type: call
        call: podcast-host.upload-episode
        with:
          title: '{{episode_title}}'
          audio_url: '{{audio_url}}'
          show_notes: '{{show_notes}}'
      - name: update-cms
        type: call
        call: cms.create-podcast-page
        with:
          title: '{{episode_title}}'
          embed_url: '{{upload-episode.embed_url}}'
          show_notes: '{{show_notes}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-audio'
          text: 'Podcast episode published: "{{episode_title}}". Listen: {{upload-episode.episode_url}}. CMS page: {{update-cms.url}}.'
  consumes:
  - type: http
    namespace: podcast-host
    baseUri: https://api.internal.condenast.com/podcasts/v1
    authentication:
      type: bearer
      token: $secrets.podcast_token
    resources:
    - name: episodes
      path: /episodes
      operations:
      - name: upload-episode
        method: POST
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: podcasts
      path: /podcasts
      operations:
      - name: create-podcast-page
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → podcast-distribution-pipeline.yml

Checks the health of a MuleSoft API integration, returning deployment status, request count, error rate, and average response time.

naftiko: '0.5'
info:
  label: MuleSoft API Integration Health
  description: Checks the health of a MuleSoft API integration, returning deployment status, request count, error rate, and average response time.
  tags:
  - integration
  - mulesoft
  - api-management
capability:
  exposes:
  - type: mcp
    namespace: integration-health
    port: 8080
    tools:
    - name: get-mulesoft-api-health
      description: Look up MuleSoft API health metrics. Returns deployment status, request count, error rate, and response time.
      inputParameters:
      - name: environment_id
        in: body
        type: string
        description: The Anypoint environment ID.
      - name: api_id
        in: body
        type: string
        description: The API instance ID.
      call: mulesoft.get-api-analytics
      with:
        environment_id: '{{environment_id}}'
        api_id: '{{api_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: request_count
        type: number
        mapping: $.analytics.requestCount
      - name: error_rate
        type: number
        mapping: $.analytics.errorRate
  consumes:
  - type: http
    namespace: mulesoft
    baseUri: https://anypoint.mulesoft.com/analytics/1.0
    authentication:
      type: bearer
      token: $secrets.mulesoft_token
    resources:
    - name: analytics
      path: /{{organization_id}}/environments/{{environment_id}}/apis/{{api_id}}
      inputParameters:
      - name: environment_id
        in: path
      - name: api_id
        in: path
      operations:
      - name: get-api-analytics
        method: GET
Open in Framework → View in Fleet → mulesoft-api-integration-health.yml

Compiles a comprehensive advertising campaign report by pulling data from Google Ads, Facebook Ads, and Salesforce, then publishes the report to Tableau and emails the advertiser.

naftiko: '0.5'
info:
  label: Advertiser Campaign Report Pipeline
  description: Compiles a comprehensive advertising campaign report by pulling data from Google Ads, Facebook Ads, and Salesforce, then publishes the report to Tableau and emails the advertiser.
  tags:
  - advertising
  - google-ads
  - facebook-ads
  - salesforce
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: ad-campaign-report
    port: 8080
    tools:
    - name: generate-campaign-report
      description: Generate a multi-platform advertising campaign report and distribute it.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The internal campaign identifier.
      - name: advertiser_email
        in: body
        type: string
        description: The advertiser contact email.
      steps:
      - name: get-google-ads-data
        type: call
        call: google-ads.get-campaign-metrics
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-facebook-ads-data
        type: call
        call: facebook-ads.get-campaign-insights
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-salesforce-deal
        type: call
        call: salesforce.get-opportunity
        with:
          campaign_id: '{{campaign_id}}'
      - name: publish-to-tableau
        type: call
        call: tableau.refresh-datasource
        with:
          datasource_id: campaign_reports
      - name: send-report-email
        type: call
        call: sendgrid.send-email
        with:
          to: '{{advertiser_email}}'
          subject: Campaign Report - {{campaign_id}}
          template: campaign_report
  consumes:
  - 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/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-metrics
        method: GET
  - type: http
    namespace: facebook-ads
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_ads_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-insights
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://condenast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: tableau
    baseUri: https://tableau.condenast.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{site_id}}/datasources/{{datasource_id}}/refresh
      operations:
      - name: refresh-datasource
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → advertiser-campaign-report-pipeline.yml

Reviews article content for brand voice compliance by fetching from CMS, analyzing tone via AI, flagging issues in Jira, and reporting results to the editorial team in Slack.

naftiko: '0.5'
info:
  label: Brand Voice Compliance Review Pipeline
  description: Reviews article content for brand voice compliance by fetching from CMS, analyzing tone via AI, flagging issues in Jira, and reporting results to the editorial team in Slack.
  tags:
  - editorial
  - compliance
  - ai
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: brand-voice-compliance
    port: 8080
    tools:
    - name: review-brand-voice
      description: Analyze article content for brand voice compliance and flag issues.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The CMS article identifier.
      - name: brand
        in: body
        type: string
        description: The brand whose voice guidelines apply.
      steps:
      - name: fetch-article
        type: call
        call: cms.get-article
        with:
          article_id: '{{article_id}}'
      - name: analyze-tone
        type: call
        call: openai.analyze-text
        with:
          text: '{{fetch-article.body}}'
          guidelines: '{{brand}}_voice_guide'
      - name: create-issues
        type: call
        call: jira.create-issue
        with:
          project: EDITORIAL
          summary: 'Brand voice issues: {{article_id}}'
          description: '{{analyze-tone.findings}}'
      - name: notify-editor
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-editorial'
          text: 'Brand voice review complete for {{article_id}}. Score: {{analyze-tone.score}}/100.'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: openai
    baseUri: https://api.openai.com/v1
    authentication:
      type: bearer
      token: $secrets.openai_api_key
    resources:
    - name: completions
      path: /chat/completions
      operations:
      - name: analyze-text
        method: POST
  - type: http
    namespace: jira
    baseUri: https://condenast.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 → brand-voice-compliance-review-pipeline.yml

Retrieves file metadata from Google Drive, returning file name, MIME type, size, and web view link.

naftiko: '0.5'
info:
  label: Google Drive File Lookup
  description: Retrieves file metadata from Google Drive, returning file name, MIME type, size, and web view link.
  tags:
  - document-management
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: file-management
    port: 8080
    tools:
    - name: get-drive-file
      description: Look up a Google Drive file. Returns name, MIME type, size, and web view link.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: The Google Drive file ID.
      call: gdrive.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: mime_type
        type: string
        mapping: $.mimeType
      - name: size
        type: number
        mapping: $.size
      - name: web_view_link
        type: string
        mapping: $.webViewLink
  consumes:
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → google-drive-file-lookup.yml

Onboards a new influencer collaborator by creating their profile in Salesforce, setting up a Slack channel, configuring DocuSign for contract signing, and adding them to the content calendar.

naftiko: '0.5'
info:
  label: Influencer Collaboration Onboarding Pipeline
  description: Onboards a new influencer collaborator by creating their profile in Salesforce, setting up a Slack channel, configuring DocuSign for contract signing, and adding them to the content calendar.
  tags:
  - influencer
  - salesforce
  - slack
  - docusign
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: influencer-onboarding
    port: 8080
    tools:
    - name: onboard-influencer
      description: Set up a new influencer collaboration across CRM, communications, contracts, and calendar.
      inputParameters:
      - name: influencer_name
        in: body
        type: string
        description: The influencer display name.
      - name: influencer_email
        in: body
        type: string
        description: The influencer email address.
      - name: brand
        in: body
        type: string
        description: The brand they will collaborate with.
      steps:
      - name: create-salesforce-contact
        type: call
        call: salesforce.create-contact
        with:
          name: '{{influencer_name}}'
          email: '{{influencer_email}}'
          type: Influencer
      - name: create-slack-channel
        type: call
        call: slack.create-channel
        with:
          name: collab-{{influencer_name}}
          is_private: 'true'
      - name: send-contract
        type: call
        call: docusign.create-envelope
        with:
          template_id: influencer_agreement
          signer_email: '{{influencer_email}}'
      - name: add-to-calendar
        type: call
        call: airtable.create-record
        with:
          base_id: content_calendar
          table_name: '{{brand}}_influencers'
          name: '{{influencer_name}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://condenast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: create-contact
        method: POST
  - type: http
    namespace: 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
  - type: http
    namespace: docusign
    baseUri: https://demo.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/{{account_id}}/envelopes
      operations:
      - name: create-envelope
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → influencer-collaboration-onboarding-pipeline.yml

Localizes content for international editions by fetching the source article, translating via DeepL, adapting metadata, publishing to the regional WordPress site, and updating the global content tracker.

naftiko: '0.5'
info:
  label: Content Localization Pipeline
  description: Localizes content for international editions by fetching the source article, translating via DeepL, adapting metadata, publishing to the regional WordPress site, and updating the global content tracker.
  tags:
  - localization
  - translation
  - wordpress
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: content-localization
    port: 8080
    tools:
    - name: localize-content
      description: Translate and publish content for international editions.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The source article ID.
      - name: target_locale
        in: body
        type: string
        description: The target locale code (e.g., fr-FR, de-DE).
      - name: brand
        in: body
        type: string
        description: The brand name.
      steps:
      - name: fetch-source
        type: call
        call: cms.get-article
        with:
          article_id: '{{article_id}}'
      - name: translate-content
        type: call
        call: deepl.translate
        with:
          text: '{{fetch-source.body}}'
          target_lang: '{{target_locale}}'
      - name: publish-regional
        type: call
        call: wordpress.create-post
        with:
          title: '{{translate-content.translated_title}}'
          content: '{{translate-content.translated_text}}'
          status: draft
      - name: update-tracker
        type: call
        call: airtable.create-record
        with:
          base_id: global_content
          table_name: localizations
          article_id: '{{article_id}}'
          locale: '{{target_locale}}'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: deepl
    baseUri: https://api-free.deepl.com/v2
    authentication:
      type: bearer
      token: $secrets.deepl_api_key
    resources:
    - name: translations
      path: /translate
      operations:
      - name: translate
        method: POST
  - type: http
    namespace: wordpress
    baseUri: https://{{target_locale}}.{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_intl_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → content-localization-pipeline.yml

Sets up livestream coverage for events by creating a YouTube Live stream, scheduling social media teasers, and creating a Slack coordination channel.

naftiko: '0.5'
info:
  label: Event Coverage Livestream Pipeline
  description: Sets up livestream coverage for events by creating a YouTube Live stream, scheduling social media teasers, and creating a Slack coordination channel.
  tags:
  - events
  - youtube
  - social-media
  - slack
  - livestream
capability:
  exposes:
  - type: mcp
    namespace: event-livestream
    port: 8080
    tools:
    - name: setup-event-livestream
      description: Set up livestream infrastructure and social promotion for event coverage.
      inputParameters:
      - name: event_name
        in: body
        type: string
        description: The event name.
      - name: brand
        in: body
        type: string
        description: The brand covering the event.
      - name: stream_date
        in: body
        type: string
        description: The scheduled stream date.
      steps:
      - name: create-youtube-stream
        type: call
        call: youtube.create-live-broadcast
        with:
          title: '{{brand}} Live: {{event_name}}'
          scheduled_start: '{{stream_date}}'
      - name: create-social-teaser
        type: call
        call: instagram.create-post
        with:
          caption: Watch us LIVE at {{event_name}} on {{stream_date}}!
          brand: '{{brand}}'
      - name: create-coordination-channel
        type: call
        call: slack.create-channel
        with:
          name: live-{{event_name}}
          topic: Livestream coordination for {{event_name}}
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: broadcasts
      path: /liveBroadcasts?part=snippet,status
      operations:
      - name: create-live-broadcast
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      operations:
      - name: create-post
        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 → event-coverage-livestream-pipeline.yml

Processes freelancer payments by verifying completed assignments in Airtable, generating invoices in QuickBooks, processing payment via Stripe, and sending confirmation via email.

naftiko: '0.5'
info:
  label: Editorial Freelancer Payment Pipeline
  description: Processes freelancer payments by verifying completed assignments in Airtable, generating invoices in QuickBooks, processing payment via Stripe, and sending confirmation via email.
  tags:
  - finance
  - freelancer
  - airtable
  - quickbooks
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: freelancer-payment
    port: 8080
    tools:
    - name: process-freelancer-payment
      description: Verify assignment completion, generate invoice, process payment, and send confirmation.
      inputParameters:
      - name: freelancer_id
        in: body
        type: string
        description: The freelancer identifier.
      - name: assignment_id
        in: body
        type: string
        description: The assignment record identifier.
      steps:
      - name: verify-assignment
        type: call
        call: airtable.get-record
        with:
          base_id: freelancers
          record_id: '{{assignment_id}}'
      - name: create-invoice
        type: call
        call: quickbooks.create-invoice
        with:
          vendor_id: '{{freelancer_id}}'
          amount: '{{verify-assignment.rate}}'
          description: '{{verify-assignment.assignment_title}}'
      - name: process-payment
        type: call
        call: stripe.create-payout
        with:
          amount: '{{verify-assignment.rate}}'
          destination: '{{verify-assignment.stripe_account}}'
      - name: send-confirmation
        type: call
        call: gmail.send-email
        with:
          to: '{{verify-assignment.email}}'
          subject: Payment processed for {{verify-assignment.assignment_title}}
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/freelancers/{{record_id}}
      inputParameters:
      - name: base_id
        in: path
      - name: record_id
        in: path
      operations:
      - name: get-record
        method: GET
  - type: http
    namespace: quickbooks
    baseUri: https://quickbooks.api.intuit.com/v3
    authentication:
      type: bearer
      token: $secrets.quickbooks_token
    resources:
    - name: invoices
      path: /company/{{company_id}}/invoice
      operations:
      - name: create-invoice
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: payouts
      path: /payouts
      operations:
      - name: create-payout
        method: POST
  - type: http
    namespace: gmail
    baseUri: https://gmail.googleapis.com/gmail/v1
    authentication:
      type: bearer
      token: $secrets.gmail_token
    resources:
    - name: messages
      path: /users/me/messages/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → editorial-freelancer-payment-pipeline.yml

Retrieves content performance metrics from Google Analytics for a given article URL, returning page views, average time on page, and bounce rate.

naftiko: '0.5'
info:
  label: Google Analytics Content Performance Lookup
  description: Retrieves content performance metrics from Google Analytics for a given article URL, returning page views, average time on page, and bounce rate.
  tags:
  - analytics
  - google-analytics
  - content-performance
capability:
  exposes:
  - type: mcp
    namespace: content-analytics
    port: 8080
    tools:
    - name: get-article-performance
      description: Look up Google Analytics performance for an article URL. Returns page views, avg time on page, and bounce rate.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The Google Analytics 4 property ID.
      - name: article_url
        in: body
        type: string
        description: The article URL path.
      call: ga4.get-page-report
      with:
        property_id: '{{property_id}}'
        page_path: '{{article_url}}'
      outputParameters:
      - name: page_views
        type: number
        mapping: $.rows[0].metricValues[0].value
      - name: avg_time_on_page
        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-page-report
        method: POST
Open in Framework → View in Fleet → google-analytics-content-performance-lookup.yml

Pulls A/B test results from Google Optimize, calculates statistical significance, logs findings in Google Sheets, and posts the winner to Slack.

naftiko: '0.5'
info:
  label: A/B Test Results Pipeline
  description: Pulls A/B test results from Google Optimize, calculates statistical significance, logs findings in Google Sheets, and posts the winner to Slack.
  tags:
  - experimentation
  - google-optimize
  - google-sheets
  - slack
capability:
  exposes:
  - type: mcp
    namespace: experimentation
    port: 8080
    tools:
    - name: evaluate-ab-test
      description: Given a Google Optimize experiment ID, pull results, determine the winner, log to Sheets, and notify via Slack.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The Google Optimize experiment ID.
      - name: brand
        in: body
        type: string
        description: The brand running the experiment.
      steps:
      - name: get-results
        type: call
        call: optimize.get-experiment
        with:
          experiment_id: '{{experiment_id}}'
      - name: log-results
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: ab_test_results
          range: Results!A:E
          values:
          - '{{experiment_id}}'
          - '{{brand}}'
          - '{{get-results.winner_variant}}'
          - '{{get-results.improvement_pct}}'
          - '{{get-results.confidence}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-growth'
          text: 'A/B Test {{experiment_id}} results: Winner is variant {{get-results.winner_variant}} with {{get-results.improvement_pct}}% improvement ({{get-results.confidence}}% confidence).'
  consumes:
  - type: http
    namespace: optimize
    baseUri: https://www.googleapis.com/analytics/v3
    authentication:
      type: bearer
      token: $secrets.google_optimize_token
    resources:
    - name: experiments
      path: /management/accounts/{{account_id}}/webproperties/{{property_id}}/experiments/{{experiment_id}}
      inputParameters:
      - name: experiment_id
        in: path
      operations:
      - name: get-experiment
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4/spreadsheets
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
  - 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 → a-b-test-results-pipeline.yml

Retrieves the deployment status of a Condé Nast brand website on Vercel, returning deployment state, URL, and build duration.

naftiko: '0.5'
info:
  label: Vercel Deployment Status
  description: Retrieves the deployment status of a Condé Nast brand website on Vercel, returning deployment state, URL, and build duration.
  tags:
  - deployment
  - vercel
  - web-platform
capability:
  exposes:
  - type: mcp
    namespace: web-deployments
    port: 8080
    tools:
    - name: get-vercel-deployment
      description: Look up a Vercel deployment. Returns state, URL, and build duration.
      inputParameters:
      - name: deployment_id
        in: body
        type: string
        description: The Vercel deployment ID.
      call: vercel.get-deployment
      with:
        deployment_id: '{{deployment_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state
      - name: url
        type: string
        mapping: $.url
      - name: build_duration_ms
        type: number
        mapping: $.buildDuration
  consumes:
  - type: http
    namespace: vercel
    baseUri: https://api.vercel.com/v13
    authentication:
      type: bearer
      token: $secrets.vercel_token
    resources:
    - name: deployments
      path: /deployments/{{deployment_id}}
      inputParameters:
      - name: deployment_id
        in: path
      operations:
      - name: get-deployment
        method: GET
Open in Framework → View in Fleet → vercel-deployment-status.yml

Retrieves error details from Sentry for a brand website, returning error title, count, affected users, and first/last seen timestamps.

naftiko: '0.5'
info:
  label: Sentry Error Tracking Lookup
  description: Retrieves error details from Sentry for a brand website, returning error title, count, affected users, and first/last seen timestamps.
  tags:
  - monitoring
  - sentry-system
  - error-tracking
capability:
  exposes:
  - type: mcp
    namespace: error-tracking
    port: 8080
    tools:
    - name: get-sentry-issue
      description: Look up a Sentry error issue. Returns title, count, affected users, and timestamps.
      inputParameters:
      - name: issue_id
        in: body
        type: string
        description: The Sentry issue ID.
      call: sentry.get-issue
      with:
        issue_id: '{{issue_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: count
        type: number
        mapping: $.count
      - name: users_affected
        type: number
        mapping: $.userCount
  consumes:
  - type: http
    namespace: sentry
    baseUri: https://sentry.io/api/0
    authentication:
      type: bearer
      token: $secrets.sentry_token
    resources:
    - name: issues
      path: /issues/{{issue_id}}/
      inputParameters:
      - name: issue_id
        in: path
      operations:
      - name: get-issue
        method: GET
Open in Framework → View in Fleet → sentry-error-tracking-lookup.yml

Retrieves trending interest data for a topic from Google Trends to inform editorial planning.

naftiko: '0.5'
info:
  label: Google Trends Topic Interest
  description: Retrieves trending interest data for a topic from Google Trends to inform editorial planning.
  tags:
  - analytics
  - google-trends
  - editorial
capability:
  exposes:
  - type: mcp
    namespace: google-trends
    port: 8080
    tools:
    - name: get-topic-interest
      description: Fetch Google Trends interest over time for a topic.
      inputParameters:
      - name: keyword
        in: body
        type: string
        description: The keyword or topic to query.
      - name: geo
        in: body
        type: string
        description: The geographic region code (e.g., US).
      call: trends.get-interest
      with:
        keyword: '{{keyword}}'
        geo: '{{geo}}'
      outputParameters:
      - name: interest_score
        type: number
        mapping: $.default.timelineData[-1].value[0]
      - name: trend_direction
        type: string
        mapping: $.default.trend
  consumes:
  - type: http
    namespace: trends
    baseUri: https://trends.googleapis.com/trends/api
    authentication:
      type: bearer
      token: $secrets.google_trends_token
    resources:
    - name: explore
      path: /widgetdata/multiline
      operations:
      - name: get-interest
        method: GET
Open in Framework → View in Fleet → google-trends-topic-interest.yml

Republishes an article across multiple brand sites by fetching from CMS, adapting for each brand, publishing to WordPress, and notifying editors via Slack.

naftiko: '0.5'
info:
  label: Brand Content Republication Pipeline
  description: Republishes an article across multiple brand sites by fetching from CMS, adapting for each brand, publishing to WordPress, and notifying editors via Slack.
  tags:
  - editorial
  - publishing
  - wordpress
  - slack
capability:
  exposes:
  - type: mcp
    namespace: content-republication
    port: 8080
    tools:
    - name: republish-article
      description: Republish a CMS article across multiple Conde Nast brand sites.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The source article ID in the CMS.
      - name: target_brands
        in: body
        type: string
        description: Comma-separated brand slugs to publish to.
      steps:
      - name: fetch-article
        type: call
        call: cms.get-article
        with:
          article_id: '{{article_id}}'
      - name: publish-to-brands
        type: call
        call: wordpress.create-post
        with:
          title: '{{fetch-article.title}}'
          content: '{{fetch-article.body}}'
          status: publish
      - name: notify-editors
        type: call
        call: slack.post-message
        with:
          channel: '#cross-brand-publishing'
          text: Article '{{fetch-article.title}}' republished to {{target_brands}}.
  consumes:
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: wordpress
    baseUri: https://publish.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        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 → brand-content-republication-pipeline.yml

Triggers a Tableau dashboard refresh for editorial content reporting and returns the refresh status and last data update time.

naftiko: '0.5'
info:
  label: Tableau Content Dashboard Refresh
  description: Triggers a Tableau dashboard refresh for editorial content reporting and returns the refresh status and last data update time.
  tags:
  - analytics
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-content-dashboard
      description: Trigger a Tableau dashboard refresh. Returns refresh status and last update time.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: The Tableau workbook ID.
      call: tableau.refresh-workbook
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.extractRefreshJob.status
      - name: last_updated
        type: string
        mapping: $.extractRefreshJob.endedAt
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.internal.condenast.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
Open in Framework → View in Fleet → tableau-content-dashboard-refresh.yml

Retrieves product details from a Conde Nast brand Shopify storefront including price and availability.

naftiko: '0.5'
info:
  label: Shopify Storefront Product Lookup
  description: Retrieves product details from a Conde Nast brand Shopify storefront including price and availability.
  tags:
  - e-commerce
  - shopify
  - retail
capability:
  exposes:
  - type: mcp
    namespace: shopify-products
    port: 8080
    tools:
    - name: get-product
      description: Look up a product by handle from Shopify storefront.
      inputParameters:
      - name: product_handle
        in: body
        type: string
        description: The product handle slug.
      call: shopify.get-product-by-handle
      with:
        handle: '{{product_handle}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.product.title
      - name: price
        type: string
        mapping: $.product.variants[0].price
      - name: available
        type: boolean
        mapping: $.product.variants[0].available
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shop.condenast.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: products
      path: /products.json?handle={{product_handle}}
      inputParameters:
      - name: product_handle
        in: path
      operations:
      - name: get-product-by-handle
        method: GET
Open in Framework → View in Fleet → shopify-storefront-product-lookup.yml

Syndicates content to partner platforms by fetching from CMS, transforming to partner format, pushing via API, and tracking syndication in Airtable.

naftiko: '0.5'
info:
  label: Content Syndication Partner Pipeline
  description: Syndicates content to partner platforms by fetching from CMS, transforming to partner format, pushing via API, and tracking syndication in Airtable.
  tags:
  - syndication
  - content-management
  - partnerships
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: content-syndication
    port: 8080
    tools:
    - name: syndicate-content
      description: Push content to syndication partners and track distribution.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The source article identifier.
      - name: partner_slug
        in: body
        type: string
        description: The syndication partner slug.
      steps:
      - name: fetch-article
        type: call
        call: cms.get-article
        with:
          article_id: '{{article_id}}'
      - name: transform-content
        type: call
        call: content-transform.adapt-for-partner
        with:
          content: '{{fetch-article.body}}'
          partner: '{{partner_slug}}'
      - name: push-to-partner
        type: call
        call: syndication-api.submit-content
        with:
          partner: '{{partner_slug}}'
          content: '{{transform-content.adapted_content}}'
      - name: track-syndication
        type: call
        call: airtable.create-record
        with:
          base_id: syndication_tracker
          table_name: distributions
          article_id: '{{article_id}}'
          partner: '{{partner_slug}}'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: content-transform
    baseUri: https://transform.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.content_transform_token
    resources:
    - name: adaptations
      path: /adapt
      operations:
      - name: adapt-for-partner
        method: POST
  - type: http
    namespace: syndication-api
    baseUri: https://syndication.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.syndication_token
    resources:
    - name: submissions
      path: /submit
      operations:
      - name: submit-content
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → content-syndication-partner-pipeline.yml

Retrieves an audience segment report from Adobe Analytics, returning segment size, engagement score, and top content categories.

naftiko: '0.5'
info:
  label: Adobe Analytics Audience Report
  description: Retrieves an audience segment report from Adobe Analytics, returning segment size, engagement score, and top content categories.
  tags:
  - analytics
  - adobe-analytics
  - audience
capability:
  exposes:
  - type: mcp
    namespace: audience-analytics
    port: 8080
    tools:
    - name: get-audience-report
      description: Look up an Adobe Analytics audience segment report. Returns segment size, engagement score, and top categories.
      inputParameters:
      - name: report_suite_id
        in: body
        type: string
        description: The Adobe Analytics report suite ID.
      - name: segment_id
        in: body
        type: string
        description: The audience segment ID.
      call: adobe-analytics.get-report
      with:
        rsid: '{{report_suite_id}}'
        segment_id: '{{segment_id}}'
      outputParameters:
      - name: segment_size
        type: number
        mapping: $.report.totals[0]
      - name: engagement_score
        type: number
        mapping: $.report.totals[1]
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    inputParameters:
    - name: x-api-key
      in: header
      value: $secrets.adobe_api_key
    resources:
    - name: reports
      path: /{{company_id}}/reports
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-audience-report.yml

Retrieves an IT incident from ServiceNow, returning short description, priority, state, and assigned group.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Lookup
  description: Retrieves an IT incident from ServiceNow, returning short description, priority, state, and assigned group.
  tags:
  - it-service
  - servicenow
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: it-service
    port: 8080
    tools:
    - name: get-it-incident
      description: Look up a ServiceNow IT incident. Returns description, priority, state, and assigned group.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number.
      call: servicenow.get-incident
      with:
        number: '{{incident_number}}'
      outputParameters:
      - name: short_description
        type: string
        mapping: $.result.short_description
      - name: priority
        type: string
        mapping: $.result.priority
      - name: state
        type: string
        mapping: $.result.state
      - name: assigned_group
        type: string
        mapping: $.result.assignment_group.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://condenast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-it-incident-lookup.yml

Retrieves LinkedIn company page analytics for a brand, returning follower count, post impressions, and engagement rate.

naftiko: '0.5'
info:
  label: LinkedIn Company Page Analytics
  description: Retrieves LinkedIn company page analytics for a brand, returning follower count, post impressions, and engagement rate.
  tags:
  - social-media
  - linkedin
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: linkedin-analytics
    port: 8080
    tools:
    - name: get-linkedin-analytics
      description: Look up LinkedIn company page analytics. Returns follower count, impressions, and engagement rate.
      inputParameters:
      - name: organization_id
        in: body
        type: string
        description: The LinkedIn organization ID.
      call: linkedin.get-page-stats
      with:
        organization_id: '{{organization_id}}'
      outputParameters:
      - name: follower_count
        type: number
        mapping: $.elements[0].followerCounts.organicFollowerCount
      - name: impressions
        type: number
        mapping: $.elements[0].totalShareStatistics.impressionCount
      - name: engagement_rate
        type: number
        mapping: $.elements[0].totalShareStatistics.engagement
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: statistics
      path: /organizationalEntityShareStatistics
      operations:
      - name: get-page-stats
        method: GET
Open in Framework → View in Fleet → linkedin-company-page-analytics.yml

Pulls subscription metrics from the billing system, enriches with Google Analytics engagement data, generates a Looker dashboard refresh, and emails the summary to leadership via Gmail.

naftiko: '0.5'
info:
  label: Subscription Revenue Dashboard Pipeline
  description: Pulls subscription metrics from the billing system, enriches with Google Analytics engagement data, generates a Looker dashboard refresh, and emails the summary to leadership via Gmail.
  tags:
  - subscriptions
  - revenue
  - looker
  - google-analytics
  - gmail
capability:
  exposes:
  - type: mcp
    namespace: subscription-analytics
    port: 8080
    tools:
    - name: refresh-subscription-dashboard
      description: Pull subscription data, combine with engagement metrics, refresh the Looker dashboard, and email leadership.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: period
        in: body
        type: string
        description: The reporting period (e.g., last30days).
      steps:
      - name: get-subscription-metrics
        type: call
        call: billing.get-metrics
        with:
          brand: '{{brand}}'
          period: '{{period}}'
      - name: get-engagement
        type: call
        call: ga4.get-engagement
        with:
          brand: '{{brand}}'
          period: '{{period}}'
      - name: refresh-looker
        type: call
        call: looker.run-look
        with:
          look_id: subscription_overview_{{brand}}
      - name: send-email
        type: call
        call: gmail.send-email
        with:
          to: leadership-{{brand}}@condenast.com
          subject: 'Subscription Dashboard: {{brand}} - {{period}}'
          body: 'Active subscribers: {{get-subscription-metrics.active_count}}. MRR: ${{get-subscription-metrics.mrr}}. Churn: {{get-subscription-metrics.churn_rate}}%. Engagement: {{get-engagement.avg_session_duration}}s avg session. Dashboard: {{refresh-looker.url}}.'
  consumes:
  - type: http
    namespace: billing
    baseUri: https://billing.internal.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.billing_token
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: get-metrics
        method: GET
  - 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
      operations:
      - name: get-engagement
        method: POST
  - type: http
    namespace: looker
    baseUri: https://condenast.cloud.looker.com/api/4.0
    authentication:
      type: bearer
      token: $secrets.looker_token
    resources:
    - name: looks
      path: /looks/{{look_id}}/run/json
      inputParameters:
      - name: look_id
        in: path
      operations:
      - name: run-look
        method: GET
  - type: http
    namespace: gmail
    baseUri: https://gmail.googleapis.com/gmail/v1
    authentication:
      type: bearer
      token: $secrets.gmail_token
    resources:
    - name: messages
      path: /users/me/messages/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → subscription-revenue-dashboard-pipeline.yml

Queries Splunk for CDN performance metrics related to content delivery, returning cache hit rate, origin response time, and error rate.

naftiko: '0.5'
info:
  label: Splunk Content Delivery Monitoring
  description: Queries Splunk for CDN performance metrics related to content delivery, returning cache hit rate, origin response time, and error rate.
  tags:
  - monitoring
  - splunk
  - cdn
  - performance
capability:
  exposes:
  - type: mcp
    namespace: cdn-monitoring
    port: 8080
    tools:
    - name: get-cdn-metrics
      description: Query Splunk for CDN performance metrics. Returns cache hit rate, origin response time, and error rate.
      inputParameters:
      - name: domain
        in: body
        type: string
        description: The domain to query metrics for.
      - name: time_range
        in: body
        type: string
        description: The time range (e.g., -1h, -24h).
      call: splunk.search-cdn
      with:
        search: index=cdn sourcetype=cloudflare host={{domain}}
        earliest_time: '{{time_range}}'
      outputParameters:
      - name: cache_hit_rate
        type: number
        mapping: $.results.cache_hit_rate
      - name: origin_response_ms
        type: number
        mapping: $.results.origin_response_time
      - name: error_rate
        type: number
        mapping: $.results.error_rate
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.internal.condenast.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs/export
      operations:
      - name: search-cdn
        method: POST
Open in Framework → View in Fleet → splunk-content-delivery-monitoring.yml

Retrieves current follower count and engagement rate for a Conde Nast brand Twitter account.

naftiko: '0.5'
info:
  label: Twitter Follower Count Lookup
  description: Retrieves current follower count and engagement rate for a Conde Nast brand Twitter account.
  tags:
  - social-media
  - twitter
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: twitter-analytics
    port: 8080
    tools:
    - name: get-follower-count
      description: Look up Twitter follower count and engagement rate for a brand handle.
      inputParameters:
      - name: handle
        in: body
        type: string
        description: The Twitter handle for the brand.
      call: twitter.get-user-metrics
      with:
        handle: '{{handle}}'
      outputParameters:
      - name: followers_count
        type: number
        mapping: $.data.public_metrics.followers_count
      - name: engagement_rate
        type: number
        mapping: $.data.engagement_rate
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: users
      path: /users/by/username/{{handle}}
      inputParameters:
      - name: handle
        in: path
      operations:
      - name: get-user-metrics
        method: GET
Open in Framework → View in Fleet → twitter-follower-count-lookup.yml

Evaluates brand ambassador performance by pulling Instagram engagement data, YouTube metrics, affiliate sales from Shopify, and compiling a report in Google Sheets.

naftiko: '0.5'
info:
  label: Brand Ambassador Performance Pipeline
  description: Evaluates brand ambassador performance by pulling Instagram engagement data, YouTube metrics, affiliate sales from Shopify, and compiling a report in Google Sheets.
  tags:
  - influencer
  - instagram
  - youtube
  - shopify
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: ambassador-performance
    port: 8080
    tools:
    - name: evaluate-ambassador
      description: Compile brand ambassador performance across social and sales channels.
      inputParameters:
      - name: ambassador_handle
        in: body
        type: string
        description: The ambassador social media handle.
      - name: affiliate_code
        in: body
        type: string
        description: The ambassador affiliate code.
      steps:
      - name: get-ig-engagement
        type: call
        call: instagram.get-user-insights
        with:
          handle: '{{ambassador_handle}}'
      - name: get-yt-metrics
        type: call
        call: youtube.get-channel-stats
        with:
          handle: '{{ambassador_handle}}'
      - name: get-affiliate-sales
        type: call
        call: shopify.get-orders-by-discount
        with:
          discount_code: '{{affiliate_code}}'
      - name: compile-report
        type: call
        call: google-sheets.append-rows
        with:
          spreadsheet_id: ambassador_reports
          data: '{{ambassador_handle}},{{get-ig-engagement.reach}},{{get-yt-metrics.views}},{{get-affiliate-sales.total}}'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: insights
      path: /{{ig_user_id}}/insights
      operations:
      - name: get-user-insights
        method: GET
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: channels
      path: /channels?part=statistics
      operations:
      - name: get-channel-stats
        method: GET
  - type: http
    namespace: shopify
    baseUri: https://shop.condenast.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: orders
      path: /orders.json?discount_code={{discount_code}}
      operations:
      - name: get-orders-by-discount
        method: GET
  - type: http
    namespace: google-sheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → brand-ambassador-performance-pipeline.yml

Retrieves the editorial calendar from Notion for a given brand, returning upcoming article titles, authors, publish dates, and statuses.

naftiko: '0.5'
info:
  label: Notion Editorial Calendar Lookup
  description: Retrieves the editorial calendar from Notion for a given brand, returning upcoming article titles, authors, publish dates, and statuses.
  tags:
  - editorial
  - notion
  - planning
capability:
  exposes:
  - type: mcp
    namespace: editorial-calendar
    port: 8080
    tools:
    - name: get-editorial-calendar
      description: Look up the editorial calendar in Notion for a brand. Returns upcoming articles with titles, authors, and dates.
      inputParameters:
      - name: database_id
        in: body
        type: string
        description: The Notion database ID for the editorial calendar.
      - name: brand
        in: body
        type: string
        description: The brand to filter by.
      call: notion.query-database
      with:
        database_id: '{{database_id}}'
        filter_brand: '{{brand}}'
      outputParameters:
      - name: results
        type: string
        mapping: $.results
  consumes:
  - type: http
    namespace: notion
    baseUri: https://api.notion.com/v1
    authentication:
      type: bearer
      token: $secrets.notion_token
    inputParameters:
    - name: Notion-Version
      in: header
      value: '2022-06-28'
    resources:
    - name: databases
      path: /databases/{{database_id}}/query
      inputParameters:
      - name: database_id
        in: path
      operations:
      - name: query-database
        method: POST
Open in Framework → View in Fleet → notion-editorial-calendar-lookup.yml

Retrieves headcount by department from Workday for organizational planning, returning total headcount, open positions, and attrition rate.

naftiko: '0.5'
info:
  label: Workday Headcount Report
  description: Retrieves headcount by department from Workday for organizational planning, returning total headcount, open positions, and attrition rate.
  tags:
  - hr
  - headcount
  - workday
  - workforce-planning
capability:
  exposes:
  - type: mcp
    namespace: hr-analytics
    port: 8080
    tools:
    - name: get-headcount-report
      description: Look up department headcount in Workday. Returns total, open positions, and attrition rate.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department name.
      call: workday.get-headcount
      with:
        department: '{{department}}'
      outputParameters:
      - name: total_headcount
        type: number
        mapping: $.department.totalHeadcount
      - name: open_positions
        type: number
        mapping: $.department.openPositions
      - name: attrition_rate
        type: number
        mapping: $.department.attritionRate
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: headcount
      path: /departments/{{department}}/headcount
      inputParameters:
      - name: department
        in: path
      operations:
      - name: get-headcount
        method: GET
Open in Framework → View in Fleet → workday-headcount-report.yml

Retrieves website performance metrics from Datadog for a brand domain, returning page load time, error count, and largest contentful paint.

naftiko: '0.5'
info:
  label: Datadog Website Performance Check
  description: Retrieves website performance metrics from Datadog for a brand domain, returning page load time, error count, and largest contentful paint.
  tags:
  - monitoring
  - datadog
  - web-performance
capability:
  exposes:
  - type: mcp
    namespace: web-performance
    port: 8080
    tools:
    - name: get-site-performance
      description: Look up website performance in Datadog. Returns page load time, error count, and LCP.
      inputParameters:
      - name: domain
        in: body
        type: string
        description: The brand website domain.
      call: datadog.get-rum-metrics
      with:
        domain: '{{domain}}'
      outputParameters:
      - name: page_load_ms
        type: number
        mapping: $.series[0].page_load
      - name: error_count
        type: number
        mapping: $.series[0].error_count
      - name: lcp_ms
        type: number
        mapping: $.series[0].lcp
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: rum
      path: /rum/analytics/aggregate
      operations:
      - name: get-rum-metrics
        method: POST
Open in Framework → View in Fleet → datadog-website-performance-check.yml

Retrieves performance analytics for a TikTok video including views, likes, and shares.

naftiko: '0.5'
info:
  label: TikTok Video Analytics
  description: Retrieves performance analytics for a TikTok video including views, likes, and shares.
  tags:
  - social-media
  - tiktok
  - video-analytics
capability:
  exposes:
  - type: mcp
    namespace: tiktok-analytics
    port: 8080
    tools:
    - name: get-video-stats
      description: Look up TikTok video performance by video ID.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: The TikTok video identifier.
      call: tiktok.get-video-data
      with:
        video_id: '{{video_id}}'
      outputParameters:
      - name: views
        type: number
        mapping: $.data.videos[0].statistics.play_count
      - name: likes
        type: number
        mapping: $.data.videos[0].statistics.digg_count
      - name: shares
        type: number
        mapping: $.data.videos[0].statistics.share_count
  consumes:
  - type: http
    namespace: tiktok
    baseUri: https://open.tiktokapis.com/v2
    authentication:
      type: bearer
      token: $secrets.tiktok_access_token
    resources:
    - name: videos
      path: /video/query
      operations:
      - name: get-video-data
        method: POST
Open in Framework → View in Fleet → tiktok-video-analytics.yml

Creates a newsletter campaign in MailChimp, populates it with curated content from the CMS, schedules delivery, and logs the campaign in Google Sheets for tracking.

naftiko: '0.5'
info:
  label: MailChimp Newsletter Campaign Pipeline
  description: Creates a newsletter campaign in MailChimp, populates it with curated content from the CMS, schedules delivery, and logs the campaign in Google Sheets for tracking.
  tags:
  - email-marketing
  - mailchimp
  - newsletter
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: email-campaigns
    port: 8080
    tools:
    - name: create-newsletter
      description: Given content IDs and audience segment, create and schedule a MailChimp newsletter campaign.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: subject_line
        in: body
        type: string
        description: The email subject line.
      - name: segment_id
        in: body
        type: string
        description: The MailChimp audience segment ID.
      - name: send_time
        in: body
        type: string
        description: The scheduled send time in ISO 8601 format.
      steps:
      - name: create-campaign
        type: call
        call: mailchimp.create-campaign
        with:
          type: regular
          list_id: '{{brand}}_subscribers'
          segment_id: '{{segment_id}}'
          subject_line: '{{subject_line}}'
      - name: schedule-campaign
        type: call
        call: mailchimp.schedule-campaign
        with:
          campaign_id: '{{create-campaign.id}}'
          send_time: '{{send_time}}'
      - name: log-campaign
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: newsletter_tracking
          range: Campaigns!A:D
          values:
          - '{{brand}}'
          - '{{subject_line}}'
          - '{{create-campaign.id}}'
          - '{{send_time}}'
  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
    - name: schedule
      path: /campaigns/{{campaign_id}}/actions/schedule
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: schedule-campaign
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4/spreadsheets
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → mailchimp-newsletter-campaign-pipeline.yml

Pulls paywall conversion data from the subscription system, combines with Google Analytics content engagement, and generates a report in Looker for the revenue team.

naftiko: '0.5'
info:
  label: Content Paywall Analytics Pipeline
  description: Pulls paywall conversion data from the subscription system, combines with Google Analytics content engagement, and generates a report in Looker for the revenue team.
  tags:
  - subscriptions
  - paywall
  - google-analytics
  - looker
  - revenue
capability:
  exposes:
  - type: mcp
    namespace: paywall-analytics
    port: 8080
    tools:
    - name: generate-paywall-report
      description: Given a brand and date range, pull paywall conversions, engagement data, and generate a Looker report.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      steps:
      - name: get-conversions
        type: call
        call: billing.get-paywall-conversions
        with:
          brand: '{{brand}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-engagement
        type: call
        call: ga4.get-content-engagement
        with:
          brand: '{{brand}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: refresh-report
        type: call
        call: looker.run-look
        with:
          look_id: paywall_report_{{brand}}
  consumes:
  - type: http
    namespace: billing
    baseUri: https://billing.internal.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.billing_token
    resources:
    - name: paywall
      path: /paywall/conversions
      operations:
      - name: get-paywall-conversions
        method: GET
  - 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
      operations:
      - name: get-content-engagement
        method: POST
  - type: http
    namespace: looker
    baseUri: https://condenast.cloud.looker.com/api/4.0
    authentication:
      type: bearer
      token: $secrets.looker_token
    resources:
    - name: looks
      path: /looks/{{look_id}}/run/json
      inputParameters:
      - name: look_id
        in: path
      operations:
      - name: run-look
        method: GET
Open in Framework → View in Fleet → content-paywall-analytics-pipeline.yml

Exports design assets from a Figma file, returning the exported image URLs, file format, and dimensions for use in editorial layouts.

naftiko: '0.5'
info:
  label: Figma Design Asset Export
  description: Exports design assets from a Figma file, returning the exported image URLs, file format, and dimensions for use in editorial layouts.
  tags:
  - design
  - figma
  - creative
capability:
  exposes:
  - type: mcp
    namespace: design-ops
    port: 8080
    tools:
    - name: export-figma-assets
      description: Export design assets from a Figma file. Returns image URLs, format, and dimensions.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: The Figma file key.
      - name: node_ids
        in: body
        type: string
        description: Comma-separated node IDs to export.
      - name: format
        in: body
        type: string
        description: Export format (png, jpg, svg, pdf).
      call: figma.export-images
      with:
        file_key: '{{file_key}}'
        ids: '{{node_ids}}'
        format: '{{format}}'
      outputParameters:
      - name: images
        type: string
        mapping: $.images
  consumes:
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: images
      path: /images/{{file_key}}
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: export-images
        method: GET
Open in Framework → View in Fleet → figma-design-asset-export.yml

Clears content rights for global distribution by checking the rights database, requesting clearance from Getty Images, logging in the legal tracker, and updating publication permissions.

naftiko: '0.5'
info:
  label: Global Content Rights Clearance Pipeline
  description: Clears content rights for global distribution by checking the rights database, requesting clearance from Getty Images, logging in the legal tracker, and updating publication permissions.
  tags:
  - legal
  - rights-management
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: rights-clearance
    port: 8080
    tools:
    - name: clear-content-rights
      description: Verify and clear content rights for global distribution across brands.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The content asset identifier.
      - name: target_territories
        in: body
        type: string
        description: Comma-separated target territory codes.
      steps:
      - name: check-rights-db
        type: call
        call: rights-db.get-asset-rights
        with:
          asset_id: '{{asset_id}}'
      - name: request-getty-clearance
        type: call
        call: getty.check-license
        with:
          asset_id: '{{asset_id}}'
          territories: '{{target_territories}}'
      - name: log-in-tracker
        type: call
        call: airtable.create-record
        with:
          base_id: legal_rights
          table_name: clearance_requests
          asset: '{{asset_id}}'
          territories: '{{target_territories}}'
      - name: update-permissions
        type: call
        call: cms.update-asset-permissions
        with:
          asset_id: '{{asset_id}}'
          territories: '{{target_territories}}'
  consumes:
  - type: http
    namespace: rights-db
    baseUri: https://rights.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.rights_db_token
    resources:
    - name: assets
      path: /assets/{{asset_id}}/rights
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: get-asset-rights
        method: GET
  - type: http
    namespace: getty
    baseUri: https://api.gettyimages.com/v3
    authentication:
      type: bearer
      token: $secrets.getty_api_key
    resources:
    - name: licenses
      path: /images/{{asset_id}}/license
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: check-license
        method: GET
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: assets
      path: /assets/{{asset_id}}/permissions
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: update-asset-permissions
        method: PATCH
Open in Framework → View in Fleet → global-content-rights-clearance-pipeline.yml

Manages print magazine production by collecting approved layouts from InDesign, generating print-ready PDFs, uploading to the print vendor portal, and updating the production schedule in Airtable.

naftiko: '0.5'
info:
  label: Print Magazine Production Pipeline
  description: Manages print magazine production by collecting approved layouts from InDesign, generating print-ready PDFs, uploading to the print vendor portal, and updating the production schedule in Airtable.
  tags:
  - production
  - print
  - adobe
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: print-production
    port: 8080
    tools:
    - name: process-print-issue
      description: Collect layouts, generate PDFs, submit to print vendor, and update schedule.
      inputParameters:
      - name: issue_id
        in: body
        type: string
        description: The magazine issue identifier.
      - name: brand
        in: body
        type: string
        description: The magazine brand.
      steps:
      - name: get-approved-layouts
        type: call
        call: indesign-server.export-layouts
        with:
          issue_id: '{{issue_id}}'
          format: pdf
      - name: upload-to-print-vendor
        type: call
        call: ftp.upload-file
        with:
          host: print.vendor.com
          path: /issues/{{issue_id}}/
      - name: update-production-schedule
        type: call
        call: airtable.update-record
        with:
          base_id: production
          table_name: '{{brand}}_schedule'
          status: Sent to Print
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-production'
          text: Issue {{issue_id}} sent to print vendor.
  consumes:
  - type: http
    namespace: indesign-server
    baseUri: https://indesign-server.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.indesign_server_token
    resources:
    - name: exports
      path: /documents/{{issue_id}}/export
      inputParameters:
      - name: issue_id
        in: path
      operations:
      - name: export-layouts
        method: POST
  - type: http
    namespace: ftp
    baseUri: https://ftp-gateway.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ftp_gateway_token
    resources:
    - name: uploads
      path: /upload
      operations:
      - name: upload-file
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: update-record
        method: PATCH
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → print-magazine-production-pipeline.yml

Audits website accessibility by running automated scans, logging issues in Jira, generating compliance reports in Google Sheets, and notifying the engineering team via Slack.

naftiko: '0.5'
info:
  label: Accessibility Compliance Audit Pipeline
  description: Audits website accessibility by running automated scans, logging issues in Jira, generating compliance reports in Google Sheets, and notifying the engineering team via Slack.
  tags:
  - accessibility
  - compliance
  - jira
  - google-sheets
  - slack
capability:
  exposes:
  - type: mcp
    namespace: accessibility-audit
    port: 8080
    tools:
    - name: run-accessibility-audit
      description: Scan website for accessibility issues, log findings, and generate compliance report.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: The website URL to audit.
      - name: brand
        in: body
        type: string
        description: The brand being audited.
      steps:
      - name: run-scan
        type: call
        call: axe-api.scan-page
        with:
          url: '{{site_url}}'
      - name: log-issues
        type: call
        call: jira.create-issue
        with:
          project: A11Y
          summary: 'Accessibility issues on {{brand}}: {{run-scan.violation_count}} violations'
      - name: generate-report
        type: call
        call: google-sheets.append-rows
        with:
          spreadsheet_id: a11y_reports
          sheet: '{{brand}}'
          data: '{{run-scan.summary}}'
      - name: notify-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-engineering'
          text: 'Accessibility audit complete: {{run-scan.violation_count}} issues found.'
  consumes:
  - type: http
    namespace: axe-api
    baseUri: https://axe-scanner.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.axe_api_token
    resources:
    - name: scans
      path: /scan
      operations:
      - name: scan-page
        method: POST
  - type: http
    namespace: jira
    baseUri: https://condenast.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: google-sheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values/{{sheet}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        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 → accessibility-compliance-audit-pipeline.yml

Creates audience segments by pulling subscriber data from Snowflake, enriching with behavioral data from Adobe Analytics, building segments in Salesforce Marketing Cloud, and activating in Google Ads.

naftiko: '0.5'
info:
  label: Audience Segmentation Pipeline
  description: Creates audience segments by pulling subscriber data from Snowflake, enriching with behavioral data from Adobe Analytics, building segments in Salesforce Marketing Cloud, and activating in Google Ads.
  tags:
  - audience
  - segmentation
  - snowflake
  - adobe-analytics
  - salesforce
  - google-ads
capability:
  exposes:
  - type: mcp
    namespace: audience-segmentation
    port: 8080
    tools:
    - name: create-audience-segment
      description: Build and activate audience segments across analytics and advertising platforms.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: The audience segment name.
      - name: criteria
        in: body
        type: string
        description: The segmentation criteria query.
      steps:
      - name: pull-subscriber-data
        type: call
        call: snowflake.run-query
        with:
          query: '{{criteria}}'
      - name: enrich-with-behavior
        type: call
        call: adobe-analytics.get-segment-data
        with:
          segment: '{{segment_name}}'
      - name: create-sfmc-segment
        type: call
        call: sfmc.create-data-extension
        with:
          name: '{{segment_name}}'
          data: '{{pull-subscriber-data.results}}'
      - name: activate-google-ads
        type: call
        call: google-ads.create-audience
        with:
          audience_name: '{{segment_name}}'
          members: '{{pull-subscriber-data.results}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://condenast.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: adobe-analytics
    baseUri: https://analytics.adobe.io/api/v2.0
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: segments
      path: /segments
      operations:
      - name: get-segment-data
        method: GET
  - type: http
    namespace: sfmc
    baseUri: https://rest.marketingcloudapis.com/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: data-extensions
      path: /data/v1/customobjects
      operations:
      - name: create-data-extension
        method: POST
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: audiences
      path: /customers/{{customer_id}}/userLists
      operations:
      - name: create-audience
        method: POST
Open in Framework → View in Fleet → audience-segmentation-pipeline.yml

Retrieves DNS records for a Condé Nast domain from Cloudflare, returning record type, value, TTL, and proxy status.

naftiko: '0.5'
info:
  label: Cloudflare DNS Record Lookup
  description: Retrieves DNS records for a Condé Nast domain from Cloudflare, returning record type, value, TTL, and proxy status.
  tags:
  - infrastructure
  - cloudflare
  - dns
capability:
  exposes:
  - type: mcp
    namespace: dns-management
    port: 8080
    tools:
    - name: get-dns-records
      description: Look up Cloudflare DNS records for a domain. Returns record type, value, TTL, and proxy status.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone ID.
      - name: record_name
        in: body
        type: string
        description: The DNS record name to look up.
      call: cloudflare.get-dns-record
      with:
        zone_id: '{{zone_id}}'
        name: '{{record_name}}'
      outputParameters:
      - name: type
        type: string
        mapping: $.result[0].type
      - name: content
        type: string
        mapping: $.result[0].content
      - name: ttl
        type: number
        mapping: $.result[0].ttl
      - name: proxied
        type: boolean
        mapping: $.result[0].proxied
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: dns-records
      path: /zones/{{zone_id}}/dns_records
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-dns-record
        method: GET
Open in Framework → View in Fleet → cloudflare-dns-record-lookup.yml

Retrieves Instagram audience demographics and engagement metrics for a brand account, returning follower count, engagement rate, and top audience demographics.

naftiko: '0.5'
info:
  label: Instagram Audience Insights Lookup
  description: Retrieves Instagram audience demographics and engagement metrics for a brand account, returning follower count, engagement rate, and top audience demographics.
  tags:
  - social-media
  - instagram
  - audience-insights
capability:
  exposes:
  - type: mcp
    namespace: social-insights
    port: 8080
    tools:
    - name: get-instagram-insights
      description: Look up Instagram audience insights. Returns follower count, engagement rate, and demographics.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Instagram business account ID.
      call: instagram.get-insights
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: follower_count
        type: number
        mapping: $.data.followers_count
      - name: engagement_rate
        type: number
        mapping: $.data.engagement_rate
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: insights
      path: /{{account_id}}/insights
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-insights
        method: GET
Open in Framework → View in Fleet → instagram-audience-insights-lookup.yml

Retrieves subscription revenue data from Stripe for a given product, returning MRR and active subscriber count.

naftiko: '0.5'
info:
  label: Stripe Subscription Revenue Lookup
  description: Retrieves subscription revenue data from Stripe for a given product, returning MRR and active subscriber count.
  tags:
  - revenue
  - stripe
  - subscriptions
capability:
  exposes:
  - type: mcp
    namespace: stripe-revenue
    port: 8080
    tools:
    - name: get-subscription-revenue
      description: Look up subscription revenue for a Stripe product.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Stripe product identifier.
      call: stripe.get-subscriptions
      with:
        product_id: '{{product_id}}'
      outputParameters:
      - name: mrr
        type: number
        mapping: $.data.mrr
      - name: active_subscribers
        type: number
        mapping: $.data.active_count
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: subscriptions
      path: /subscriptions?product={{product_id}}
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-subscriptions
        method: GET
Open in Framework → View in Fleet → stripe-subscription-revenue-lookup.yml

Triggers a video export from Adobe Premiere Pro, uploads the rendered file to YouTube, updates the video library in Airtable, and notifies the video team via Slack.

naftiko: '0.5'
info:
  label: Adobe Premiere Pro Video Export Pipeline
  description: Triggers a video export from Adobe Premiere Pro, uploads the rendered file to YouTube, updates the video library in Airtable, and notifies the video team via Slack.
  tags:
  - video
  - adobe-premiere-pro
  - youtube
  - airtable
  - slack
capability:
  exposes:
  - type: mcp
    namespace: video-production
    port: 8080
    tools:
    - name: export-and-publish-video
      description: Given a Premiere Pro project ID, export the video, upload to YouTube, and update tracking.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The Premiere Pro project identifier.
      - name: title
        in: body
        type: string
        description: The video title.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      steps:
      - name: export-video
        type: call
        call: premiere-api.export
        with:
          project_id: '{{project_id}}'
          format: h264
          quality: high
      - name: upload-youtube
        type: call
        call: youtube.upload-video
        with:
          title: '{{title}}'
          video_url: '{{export-video.output_url}}'
          channel_id: '{{brand}}_channel'
      - name: update-library
        type: call
        call: airtable.create-record
        with:
          base_id: video_library
          table_name: Videos
          fields:
            title: '{{title}}'
            youtube_id: '{{upload-youtube.video_id}}'
            brand: '{{brand}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-video'
          text: 'Video published: "{{title}}" - https://youtube.com/watch?v={{upload-youtube.video_id}}'
  consumes:
  - type: http
    namespace: premiere-api
    baseUri: https://video.adobe.io/api/v1
    authentication:
      type: bearer
      token: $secrets.adobe_premiere_token
    resources:
    - name: exports
      path: /projects/{{project_id}}/export
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: export
        method: POST
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/upload/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_upload_token
    resources:
    - name: videos
      path: /videos
      operations:
      - name: upload-video
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        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 → adobe-premiere-pro-video-export-pipeline.yml

Returns the total number of design components in a Figma file for a brand design system.

naftiko: '0.5'
info:
  label: Figma Design Component Count
  description: Returns the total number of design components in a Figma file for a brand design system.
  tags:
  - design
  - figma
  - design-systems
capability:
  exposes:
  - type: mcp
    namespace: figma-components
    port: 8080
    tools:
    - name: get-component-count
      description: Count the design components in a Figma file.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: The Figma file key.
      call: figma.get-file-components
      with:
        file_key: '{{file_key}}'
      outputParameters:
      - name: component_count
        type: number
        mapping: $.meta.components_count
  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}}/components
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: get-file-components
        method: GET
Open in Framework → View in Fleet → figma-design-component-count.yml

Screens job applicants by pulling candidate data from Greenhouse ATS, running background checks, scheduling interviews via Calendly, and notifying the hiring manager via Slack.

naftiko: '0.5'
info:
  label: Talent Acquisition Screening Pipeline
  description: Screens job applicants by pulling candidate data from Greenhouse ATS, running background checks, scheduling interviews via Calendly, and notifying the hiring manager via Slack.
  tags:
  - hr
  - talent-acquisition
  - greenhouse
  - slack
capability:
  exposes:
  - type: mcp
    namespace: talent-screening
    port: 8080
    tools:
    - name: screen-candidate
      description: Pull candidate data, run checks, schedule interviews, and notify hiring manager.
      inputParameters:
      - name: candidate_id
        in: body
        type: string
        description: The Greenhouse candidate identifier.
      - name: hiring_manager_slack
        in: body
        type: string
        description: The hiring manager Slack user ID.
      steps:
      - name: get-candidate
        type: call
        call: greenhouse.get-candidate
        with:
          candidate_id: '{{candidate_id}}'
      - name: schedule-interview
        type: call
        call: calendly.create-event
        with:
          event_type: screening_interview
          invitee_email: '{{get-candidate.email}}'
      - name: notify-hiring-manager
        type: call
        call: slack.post-message
        with:
          channel: '{{hiring_manager_slack}}'
          text: 'Candidate {{get-candidate.name}} screened for {{get-candidate.position}}. Interview scheduled: {{schedule-interview.event_url}}'
  consumes:
  - type: http
    namespace: greenhouse
    baseUri: https://harvest.greenhouse.io/v1
    authentication:
      type: bearer
      token: $secrets.greenhouse_api_key
    resources:
    - name: candidates
      path: /candidates/{{candidate_id}}
      inputParameters:
      - name: candidate_id
        in: path
      operations:
      - name: get-candidate
        method: GET
  - type: http
    namespace: calendly
    baseUri: https://api.calendly.com
    authentication:
      type: bearer
      token: $secrets.calendly_token
    resources:
    - name: events
      path: /scheduled_events
      operations:
      - name: create-event
        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 → talent-acquisition-screening-pipeline.yml

Retrieves a Salesforce contact by ID, returning name, email, account name, and title.

naftiko: '0.5'
info:
  label: Salesforce Contact Lookup
  description: Retrieves a Salesforce contact by ID, returning name, email, account name, and title.
  tags:
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-contact
      description: Look up a Salesforce contact by ID. Returns name, email, account name, and title.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: The Salesforce contact ID.
      call: salesforce.get-contact
      with:
        contact_id: '{{contact_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
      - name: email
        type: string
        mapping: $.Email
      - name: account_name
        type: string
        mapping: $.Account.Name
      - name: title
        type: string
        mapping: $.Title
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://condenast.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
Open in Framework → View in Fleet → salesforce-contact-lookup.yml

Retrieves website application performance from New Relic, returning Apdex score, throughput, and error rate.

naftiko: '0.5'
info:
  label: New Relic Website Performance Check
  description: Retrieves website application performance from New Relic, returning Apdex score, throughput, and error rate.
  tags:
  - monitoring
  - new-relic
  - apm
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-newrelic-performance
      description: Look up New Relic application performance. Returns Apdex score, throughput, and error rate.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic application ID.
      call: newrelic.get-app-summary
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: apdex_score
        type: number
        mapping: $.application_summary.apdex_score
      - name: throughput
        type: number
        mapping: $.application_summary.throughput
      - name: error_rate
        type: number
        mapping: $.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-summary
        method: GET
Open in Framework → View in Fleet → new-relic-website-performance-check.yml

Retrieves readership metrics for an article published on Apple News.

naftiko: '0.5'
info:
  label: Apple News Article Metrics
  description: Retrieves readership metrics for an article published on Apple News.
  tags:
  - publishing
  - apple-news
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: apple-news-metrics
    port: 8080
    tools:
    - name: get-article-metrics
      description: Look up Apple News article performance metrics.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The Apple News article identifier.
      call: apple-news.get-article-metrics
      with:
        article_id: '{{article_id}}'
      outputParameters:
      - name: unique_visitors
        type: number
        mapping: $.data.uniqueVisitors
      - name: shares
        type: number
        mapping: $.data.shares
  consumes:
  - type: http
    namespace: apple-news
    baseUri: https://news-api.apple.com
    authentication:
      type: bearer
      token: $secrets.apple_news_token
    resources:
    - name: articles
      path: /articles/{{article_id}}/metrics
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article-metrics
        method: GET
Open in Framework → View in Fleet → apple-news-article-metrics.yml

When a photo shoot is completed, imports raw assets from cloud storage, processes them in Adobe Lightroom, uploads finals to AEM, and updates the editorial calendar in Airtable.

naftiko: '0.5'
info:
  label: Photo Shoot Asset Delivery Pipeline
  description: When a photo shoot is completed, imports raw assets from cloud storage, processes them in Adobe Lightroom, uploads finals to AEM, and updates the editorial calendar in Airtable.
  tags:
  - photography
  - adobe
  - airtable
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: photo-asset-delivery
    port: 8080
    tools:
    - name: deliver-photo-assets
      description: Import, process, and deliver photo shoot assets to AEM and update editorial calendar.
      inputParameters:
      - name: shoot_id
        in: body
        type: string
        description: The photo shoot identifier.
      - name: brand
        in: body
        type: string
        description: The brand the shoot is for.
      steps:
      - name: fetch-raw-assets
        type: call
        call: cloud-storage.list-assets
        with:
          folder: shoots/{{shoot_id}}
      - name: process-images
        type: call
        call: lightroom.batch-edit
        with:
          preset: editorial-standard
          source_folder: shoots/{{shoot_id}}
      - name: upload-to-aem
        type: call
        call: aem.upload-assets
        with:
          destination: /content/dam/{{brand}}/{{shoot_id}}
      - name: update-calendar
        type: call
        call: airtable.update-record
        with:
          base_id: editorial_calendar
          table_name: '{{brand}}_shoots'
          fields_status: Assets Delivered
  consumes:
  - type: http
    namespace: cloud-storage
    baseUri: https://storage.googleapis.com/storage/v1
    authentication:
      type: bearer
      token: $secrets.gcs_token
    resources:
    - name: objects
      path: /b/condenast-shoots/o
      operations:
      - name: list-assets
        method: GET
  - type: http
    namespace: lightroom
    baseUri: https://lr.adobe.io/v2
    authentication:
      type: bearer
      token: $secrets.adobe_lightroom_token
    resources:
    - name: edits
      path: /catalogs/{{catalog_id}}/assets
      operations:
      - name: batch-edit
        method: POST
  - type: http
    namespace: aem
    baseUri: https://aem.condenast.com/api/assets
    authentication:
      type: bearer
      token: $secrets.aem_token
    resources:
    - name: assets
      path: /upload
      operations:
      - name: upload-assets
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: update-record
        method: PATCH
Open in Framework → View in Fleet → photo-shoot-asset-delivery-pipeline.yml

Retrieves Google Ads campaign metrics for programmatic advertising, returning impressions, clicks, CTR, and average CPC.

naftiko: '0.5'
info:
  label: Google Ads Campaign Lookup
  description: Retrieves Google Ads campaign metrics for programmatic advertising, returning impressions, clicks, CTR, and average CPC.
  tags:
  - advertising
  - google-ads
  - programmatic
capability:
  exposes:
  - type: mcp
    namespace: programmatic-ads
    port: 8080
    tools:
    - name: get-google-ads-performance
      description: Look up Google Ads campaign performance. Returns impressions, clicks, CTR, and average CPC.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Google Ads customer ID.
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign ID.
      call: google-ads.get-campaign-metrics
      with:
        customer_id: '{{customer_id}}'
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.results[0].metrics.impressions
      - name: clicks
        type: number
        mapping: $.results[0].metrics.clicks
      - name: ctr
        type: number
        mapping: $.results[0].metrics.ctr
      - name: avg_cpc
        type: number
        mapping: $.results[0].metrics.averageCpc
  consumes:
  - 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}}/googleAds:searchStream
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-campaign-metrics
        method: POST
Open in Framework → View in Fleet → google-ads-campaign-lookup.yml

Retrieves a Canva design template by ID, returning template name, dimensions, page count, and thumbnail URL.

naftiko: '0.5'
info:
  label: Canva Template Lookup
  description: Retrieves a Canva design template by ID, returning template name, dimensions, page count, and thumbnail URL.
  tags:
  - design
  - canva
  - creative
capability:
  exposes:
  - type: mcp
    namespace: design-templates
    port: 8080
    tools:
    - name: get-canva-template
      description: Look up a Canva design template by ID. Returns name, dimensions, page count, and thumbnail.
      inputParameters:
      - name: design_id
        in: body
        type: string
        description: The Canva design ID.
      call: canva.get-design
      with:
        design_id: '{{design_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.design.title
      - name: width
        type: number
        mapping: $.design.width
      - name: height
        type: number
        mapping: $.design.height
      - name: thumbnail_url
        type: string
        mapping: $.design.thumbnail.url
  consumes:
  - type: http
    namespace: canva
    baseUri: https://api.canva.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.canva_token
    resources:
    - name: designs
      path: /designs/{{design_id}}
      inputParameters:
      - name: design_id
        in: path
      operations:
      - name: get-design
        method: GET
Open in Framework → View in Fleet → canva-template-lookup.yml

Synchronizes digital advertising inventory from Google Ad Manager to Salesforce, updates pricing in the rate card system, and notifies the sales team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Digital Ad Inventory Sync Pipeline
  description: Synchronizes digital advertising inventory from Google Ad Manager to Salesforce, updates pricing in the rate card system, and notifies the sales team via Microsoft Teams.
  tags:
  - advertising
  - google-ad-manager
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ad-inventory-sync
    port: 8080
    tools:
    - name: sync-ad-inventory
      description: Sync digital ad inventory from Ad Manager to CRM and notify sales.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Ad Manager order identifier.
      - name: sales_team_channel
        in: body
        type: string
        description: The Teams channel for notifications.
      steps:
      - name: get-ad-inventory
        type: call
        call: gam.get-order-details
        with:
          order_id: '{{order_id}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-opportunity
        with:
          opportunity_id: '{{get-ad-inventory.opportunity_id}}'
          inventory_status: '{{get-ad-inventory.status}}'
      - name: notify-sales
        type: call
        call: teams.send-message
        with:
          channel: '{{sales_team_channel}}'
          text: 'Ad inventory updated for order {{order_id}}: {{get-ad-inventory.status}}'
  consumes:
  - type: http
    namespace: gam
    baseUri: https://admanager.googleapis.com/v202308
    authentication:
      type: bearer
      token: $secrets.gam_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order-details
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://condenast.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: 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
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → digital-ad-inventory-sync-pipeline.yml

Retrieves the configuration of an Adobe Launch property, returning extension count, rule count, and publishing status.

naftiko: '0.5'
info:
  label: Adobe Launch Tag Configuration Lookup
  description: Retrieves the configuration of an Adobe Launch property, returning extension count, rule count, and publishing status.
  tags:
  - analytics
  - adobe-launch
  - tag-management
capability:
  exposes:
  - type: mcp
    namespace: tag-ops
    port: 8080
    tools:
    - name: get-launch-property
      description: Look up an Adobe Launch property configuration. Returns extension count, rule count, and publish status.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The Adobe Launch property ID.
      call: adobe-launch.get-property
      with:
        property_id: '{{property_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.data.attributes.name
      - name: extension_count
        type: number
        mapping: $.data.relationships.extensions.meta.count
      - name: rule_count
        type: number
        mapping: $.data.relationships.rules.meta.count
  consumes:
  - type: http
    namespace: adobe-launch
    baseUri: https://reactor.adobe.io
    authentication:
      type: bearer
      token: $secrets.adobe_launch_token
    inputParameters:
    - name: x-api-key
      in: header
      value: $secrets.adobe_api_key
    resources:
    - name: properties
      path: /properties/{{property_id}}
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-property
        method: GET
Open in Framework → View in Fleet → adobe-launch-tag-configuration-lookup.yml

Monitors GitHub Actions deployments, validates build status, runs post-deployment health checks via Datadog, and notifies engineering teams via Slack with deployment details.

naftiko: '0.5'
info:
  label: CI/CD Deployment Notification Pipeline
  description: Monitors GitHub Actions deployments, validates build status, runs post-deployment health checks via Datadog, and notifies engineering teams via Slack with deployment details.
  tags:
  - devops
  - github
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: deployment-notification
    port: 8080
    tools:
    - name: notify-deployment
      description: Check deployment status, run health checks, and notify engineering teams.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository name.
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      steps:
      - name: get-workflow-status
        type: call
        call: github.get-workflow-run
        with:
          repo: '{{repo}}'
          run_id: '{{run_id}}'
      - name: run-health-check
        type: call
        call: datadog.check-monitor
        with:
          monitor_tag: deployment:{{repo}}
      - name: notify-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#deployments'
          text: 'Deployment of {{repo}} (run {{run_id}}): {{get-workflow-status.conclusion}}. Health: {{run-health-check.status}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/condenast/{{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: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/search
      operations:
      - name: check-monitor
        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
Open in Framework → View in Fleet → ci-cd-deployment-notification-pipeline.yml

Takes an uploaded photo, processes it through Adobe Photoshop API for color correction and resizing, stores the result in Google Drive, and notifies the photo editor via Slack.

naftiko: '0.5'
info:
  label: Adobe Photoshop Image Processing Pipeline
  description: Takes an uploaded photo, processes it through Adobe Photoshop API for color correction and resizing, stores the result in Google Drive, and notifies the photo editor via Slack.
  tags:
  - creative
  - adobe-photoshop
  - google-drive
  - slack
  - image-processing
capability:
  exposes:
  - type: mcp
    namespace: creative-ops
    port: 8080
    tools:
    - name: process-editorial-image
      description: Given a source image URL, apply Photoshop processing, store result in Google Drive, and notify the editor.
      inputParameters:
      - name: source_url
        in: body
        type: string
        description: The source image URL.
      - name: preset
        in: body
        type: string
        description: The processing preset (e.g., cover, feature, thumbnail).
      - name: brand
        in: body
        type: string
        description: The brand the image is for.
      steps:
      - name: process-image
        type: call
        call: photoshop-api.apply-preset
        with:
          input_url: '{{source_url}}'
          preset: '{{preset}}'
      - name: upload-result
        type: call
        call: gdrive.upload-file
        with:
          name: processed_{{preset}}_{{brand}}
          content_url: '{{process-image.output_url}}'
          parent_id: '{{brand}}_images_folder'
      - name: notify-editor
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-photo'
          text: 'Image processed ({{preset}}): {{upload-result.webViewLink}}'
  consumes:
  - type: http
    namespace: photoshop-api
    baseUri: https://image.adobe.io/sensei
    authentication:
      type: bearer
      token: $secrets.adobe_photoshop_token
    inputParameters:
    - name: x-api-key
      in: header
      value: $secrets.adobe_api_key
    resources:
    - name: presets
      path: /cutout
      operations:
      - name: apply-preset
        method: POST
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/upload/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: upload-file
        method: POST
  - type: http
    namespace: 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 → adobe-photoshop-image-processing-pipeline.yml

Retrieves an employee's current compensation details from Workday, returning base pay, bonus target, and total compensation.

naftiko: '0.5'
info:
  label: Workday Compensation Lookup
  description: Retrieves an employee's current compensation details from Workday, returning base pay, bonus target, and total compensation.
  tags:
  - hr
  - compensation
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: get-employee-compensation
      description: Look up an employee's compensation in Workday. Returns base pay, bonus target, and total compensation.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      call: workday.get-compensation
      with:
        worker_id: '{{employee_id}}'
      outputParameters:
      - name: base_pay
        type: number
        mapping: $.compensationPlans[0].amount
      - name: bonus_target
        type: number
        mapping: $.compensationPlans[1].targetAmount
      - name: total_compensation
        type: number
        mapping: $.totalBasePayAnnualized
  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
Open in Framework → View in Fleet → workday-compensation-lookup.yml

Routes sponsored content through the approval process by submitting to legal review in Jira, collecting brand safety scores, obtaining client sign-off via DocuSign, and publishing the approved content.

naftiko: '0.5'
info:
  label: Sponsored Content Approval Pipeline
  description: Routes sponsored content through the approval process by submitting to legal review in Jira, collecting brand safety scores, obtaining client sign-off via DocuSign, and publishing the approved content.
  tags:
  - sponsored-content
  - legal
  - jira
  - docusign
  - publishing
capability:
  exposes:
  - type: mcp
    namespace: sponsored-content-approval
    port: 8080
    tools:
    - name: approve-sponsored-content
      description: Route sponsored content through legal, brand safety, client approval, and publication.
      inputParameters:
      - name: content_id
        in: body
        type: string
        description: The sponsored content identifier.
      - name: client_email
        in: body
        type: string
        description: The client approver email.
      - name: brand
        in: body
        type: string
        description: The publishing brand.
      steps:
      - name: submit-legal-review
        type: call
        call: jira.create-issue
        with:
          project: LEGAL
          summary: 'Sponsored content review: {{content_id}}'
          priority: High
      - name: check-brand-safety
        type: call
        call: brand-safety.analyze-content
        with:
          content_id: '{{content_id}}'
      - name: request-client-signoff
        type: call
        call: docusign.create-envelope
        with:
          template_id: sponsored_content_approval
          signer_email: '{{client_email}}'
      - name: schedule-publication
        type: call
        call: cms.update-article-status
        with:
          article_id: '{{content_id}}'
          status: approved_for_publish
  consumes:
  - type: http
    namespace: jira
    baseUri: https://condenast.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: brand-safety
    baseUri: https://brand-safety.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.brand_safety_token
    resources:
    - name: analysis
      path: /analyze
      operations:
      - name: analyze-content
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://demo.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/{{account_id}}/envelopes
      operations:
      - name: create-envelope
        method: POST
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{content_id}}
      inputParameters:
      - name: content_id
        in: path
      operations:
      - name: update-article-status
        method: PATCH
Open in Framework → View in Fleet → sponsored-content-approval-pipeline.yml

Manages vendor contract renewals by checking expiration dates in SAP Ariba, generating renewal documents in DocuSign, updating records in Salesforce, and alerting procurement via Slack.

naftiko: '0.5'
info:
  label: Vendor Contract Renewal Pipeline
  description: Manages vendor contract renewals by checking expiration dates in SAP Ariba, generating renewal documents in DocuSign, updating records in Salesforce, and alerting procurement via Slack.
  tags:
  - procurement
  - sap-ariba
  - docusign
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: vendor-renewal
    port: 8080
    tools:
    - name: process-vendor-renewal
      description: Check vendor contract expiry, generate renewal docs, and update CRM.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The vendor identifier.
      - name: contract_id
        in: body
        type: string
        description: The contract identifier.
      steps:
      - name: get-contract-details
        type: call
        call: ariba.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: create-renewal-doc
        type: call
        call: docusign.create-envelope
        with:
          template_id: vendor_renewal
          vendor_id: '{{vendor_id}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{vendor_id}}'
          renewal_status: In Progress
      - name: alert-procurement
        type: call
        call: slack.post-message
        with:
          channel: '#procurement'
          text: Vendor {{vendor_id}} contract {{contract_id}} renewal initiated.
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: contracts
      path: /contracts/{{contract_id}}
      inputParameters:
      - name: contract_id
        in: path
      operations:
      - name: get-contract
        method: GET
  - type: http
    namespace: docusign
    baseUri: https://demo.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /accounts/{{account_id}}/envelopes
      operations:
      - name: create-envelope
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://condenast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: update-account
        method: PATCH
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vendor-contract-renewal-pipeline.yml

Responds to website incidents by checking status in Datadog, creating a PagerDuty incident, posting updates to Slack, and creating a Jira post-mortem ticket.

naftiko: '0.5'
info:
  label: Website Incident Response Pipeline
  description: Responds to website incidents by checking status in Datadog, creating a PagerDuty incident, posting updates to Slack, and creating a Jira post-mortem ticket.
  tags:
  - incident-response
  - datadog
  - pagerduty
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: website-incident
    port: 8080
    tools:
    - name: handle-website-incident
      description: Detect, escalate, communicate, and track website incidents.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Datadog alert identifier.
      - name: severity
        in: body
        type: string
        description: The incident severity level (P1-P4).
      steps:
      - name: get-alert-details
        type: call
        call: datadog.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: create-pagerduty-incident
        type: call
        call: pagerduty.create-incident
        with:
          title: 'Website incident: {{get-alert-details.title}}'
          urgency: '{{severity}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: '#incident-response'
          text: 'INCIDENT {{severity}}: {{get-alert-details.title}}. PagerDuty: {{create-pagerduty-incident.incident_url}}'
      - name: create-postmortem-ticket
        type: call
        call: jira.create-issue
        with:
          project: SRE
          summary: 'Post-mortem: {{get-alert-details.title}}'
          priority: '{{severity}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: alerts
      path: /monitor/{{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: 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: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: jira
    baseUri: https://condenast.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 → website-incident-response-pipeline.yml

Retrieves contact details from HubSpot CRM for advertising and partnership relationship management.

naftiko: '0.5'
info:
  label: HubSpot Contact Lookup
  description: Retrieves contact details from HubSpot CRM for advertising and partnership relationship management.
  tags:
  - crm
  - hubspot
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: hubspot-crm
    port: 8080
    tools:
    - name: get-contact
      description: Look up a HubSpot contact by email address.
      inputParameters:
      - name: email
        in: body
        type: string
        description: The contact email address.
      call: hubspot.get-contact-by-email
      with:
        email: '{{email}}'
      outputParameters:
      - name: contact_id
        type: string
        mapping: $.vid
      - name: company
        type: string
        mapping: $.properties.company.value
      - name: lifecycle_stage
        type: string
        mapping: $.properties.lifecyclestage.value
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_api_key
    resources:
    - name: contacts
      path: /contacts/v1/contact/email/{{email}}/profile
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-contact-by-email
        method: GET
Open in Framework → View in Fleet → hubspot-contact-lookup.yml

Automates expense report approval by fetching from SAP Concur, validating against budget in Workday Financials, routing for manager approval via Slack, and recording the decision.

naftiko: '0.5'
info:
  label: SAP Concur Expense Approval Pipeline
  description: Automates expense report approval by fetching from SAP Concur, validating against budget in Workday Financials, routing for manager approval via Slack, and recording the decision.
  tags:
  - finance
  - sap-concur
  - workday
  - slack
capability:
  exposes:
  - type: mcp
    namespace: expense-approval
    port: 8080
    tools:
    - name: approve-expense-report
      description: Validate and route expense reports through budget check and manager approval.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      - name: approver_slack_id
        in: body
        type: string
        description: The Slack user ID of the approver.
      steps:
      - name: get-expense-report
        type: call
        call: concur.get-report
        with:
          report_id: '{{report_id}}'
      - name: check-budget
        type: call
        call: workday.get-budget-remaining
        with:
          cost_center: '{{get-expense-report.cost_center}}'
      - name: request-approval
        type: call
        call: slack.post-message
        with:
          channel: '{{approver_slack_id}}'
          text: 'Expense report {{report_id}} for ${{get-expense-report.total}} needs approval. Budget remaining: ${{check-budget.remaining}}.'
  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
  - type: http
    namespace: workday
    baseUri: https://wd5-services.condenast.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: budgets
      path: /budgets
      operations:
      - name: get-budget-remaining
        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
Open in Framework → View in Fleet → sap-concur-expense-approval-pipeline.yml

Updates a GTM container with new tracking tags, creates a workspace version, publishes the container, and notifies the analytics team via Slack.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Update Pipeline
  description: Updates a GTM container with new tracking tags, creates a workspace version, publishes the container, and notifies the analytics team via Slack.
  tags:
  - analytics
  - google-tag-manager
  - tracking
  - slack
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: publish-gtm-container
      description: Given a GTM account and container, create a new version and publish, then notify the analytics team.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The GTM account ID.
      - name: container_id
        in: body
        type: string
        description: The GTM container ID.
      - name: workspace_id
        in: body
        type: string
        description: The GTM workspace ID.
      steps:
      - name: create-version
        type: call
        call: gtm.create-version
        with:
          account_id: '{{account_id}}'
          container_id: '{{container_id}}'
          workspace_id: '{{workspace_id}}'
      - name: publish-version
        type: call
        call: gtm.publish-version
        with:
          account_id: '{{account_id}}'
          container_id: '{{container_id}}'
          version_id: '{{create-version.containerVersionId}}'
      - name: notify-analytics
        type: call
        call: slack.post-message
        with:
          channel: '#analytics-ops'
          text: 'GTM container {{container_id}} published. Version: {{create-version.containerVersionId}}.'
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.gtm_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}:create_version
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      - name: workspace_id
        in: path
      operations:
      - name: create-version
        method: POST
    - name: publish
      path: /accounts/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      - name: version_id
        in: path
      operations:
      - name: publish-version
        method: POST
  - 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 → google-tag-manager-container-update-pipeline.yml

Executes a SQL query against the Snowflake content data warehouse and returns the result set and execution time.

naftiko: '0.5'
info:
  label: Snowflake Content Warehouse Query
  description: Executes a SQL query against the Snowflake content data warehouse and returns the result set and execution time.
  tags:
  - data-warehouse
  - snowflake
  - content-analytics
capability:
  exposes:
  - type: mcp
    namespace: content-warehouse
    port: 8080
    tools:
    - name: run-content-query
      description: Execute a SQL query on the Snowflake content warehouse. Returns row count and execution time.
      inputParameters:
      - name: sql
        in: body
        type: string
        description: The SQL query.
      call: snowflake.execute-query
      with:
        statement: '{{sql}}'
      outputParameters:
      - name: rows_returned
        type: number
        mapping: $.resultSetMetaData.numRows
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://condenast.us-east-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-content-warehouse-query.yml

Retrieves the latest GitHub Actions workflow run status for a given repository, returning conclusion, duration, and 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 conclusion, duration, and 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. 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

Manages podcast episode release by uploading audio to Megaphone, creating show notes in WordPress, distributing to Apple Podcasts and Spotify, and promoting on social media.

naftiko: '0.5'
info:
  label: Podcast Episode Release Pipeline
  description: Manages podcast episode release by uploading audio to Megaphone, creating show notes in WordPress, distributing to Apple Podcasts and Spotify, and promoting on social media.
  tags:
  - podcast
  - audio
  - wordpress
  - social-media
capability:
  exposes:
  - type: mcp
    namespace: podcast-release
    port: 8080
    tools:
    - name: release-podcast-episode
      description: Upload, distribute, and promote a podcast episode across platforms.
      inputParameters:
      - name: episode_id
        in: body
        type: string
        description: The podcast episode identifier.
      - name: show_name
        in: body
        type: string
        description: The podcast show name.
      - name: release_date
        in: body
        type: string
        description: The release date in YYYY-MM-DD.
      steps:
      - name: upload-audio
        type: call
        call: megaphone.upload-episode
        with:
          episode_id: '{{episode_id}}'
          show: '{{show_name}}'
      - name: create-show-notes
        type: call
        call: wordpress.create-post
        with:
          title: '{{show_name}} - Episode {{episode_id}}'
          status: publish
          categories: podcasts
      - name: distribute-apple
        type: call
        call: apple-podcasts.submit-episode
        with:
          episode_id: '{{episode_id}}'
      - name: promote-social
        type: call
        call: sprout-social.create-post
        with:
          text: New episode of {{show_name}} is live! Listen now.
          scheduled_time: '{{release_date}}'
  consumes:
  - type: http
    namespace: megaphone
    baseUri: https://cms.megaphone.fm/api/v1
    authentication:
      type: bearer
      token: $secrets.megaphone_token
    resources:
    - name: episodes
      path: /podcasts/{{podcast_id}}/episodes
      operations:
      - name: upload-episode
        method: POST
  - type: http
    namespace: wordpress
    baseUri: https://podcasts.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: apple-podcasts
    baseUri: https://api.podcastsconnect.apple.com/v1
    authentication:
      type: bearer
      token: $secrets.apple_podcasts_token
    resources:
    - name: episodes
      path: /episodes
      operations:
      - name: submit-episode
        method: POST
  - type: http
    namespace: sprout-social
    baseUri: https://api.sproutsocial.com/v1
    authentication:
      type: bearer
      token: $secrets.sprout_social_token
    resources:
    - name: posts
      path: /{{customer_id}}/messages
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → podcast-episode-release-pipeline.yml

Pulls top-performing pages from Google Search Console, cross-references with content freshness from the CMS, identifies stale content, and creates Jira tasks for content updates.

naftiko: '0.5'
info:
  label: SEO Content Audit Pipeline
  description: Pulls top-performing pages from Google Search Console, cross-references with content freshness from the CMS, identifies stale content, and creates Jira tasks for content updates.
  tags:
  - seo
  - google
  - cms
  - jira
  - content-strategy
capability:
  exposes:
  - type: mcp
    namespace: seo-ops
    port: 8080
    tools:
    - name: audit-seo-content
      description: Given a brand's Search Console property, identify stale high-traffic content and create Jira tasks for updates.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: The Google Search Console site URL.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: stale_days
        in: body
        type: number
        description: Number of days before content is considered stale.
      steps:
      - name: get-top-pages
        type: call
        call: search-console.get-analytics
        with:
          site_url: '{{site_url}}'
          dimensions: page
          row_limit: 50
      - name: check-freshness
        type: call
        call: cms.check-content-freshness
        with:
          urls: '{{get-top-pages.rows}}'
          stale_days: '{{stale_days}}'
      - name: create-tasks
        type: call
        call: jira.create-issue
        with:
          project: CONTENT
          summary: 'SEO content refresh: {{check-freshness.stale_count}} stale articles for {{brand}}'
          description: 'Top stale pages: {{check-freshness.stale_urls}}. These pages have not been updated in {{stale_days}} days but receive significant search traffic.'
          issue_type: Task
  consumes:
  - type: http
    namespace: search-console
    baseUri: https://www.googleapis.com/webmasters/v3
    authentication:
      type: bearer
      token: $secrets.search_console_token
    resources:
    - name: analytics
      path: /sites/{{site_url}}/searchAnalytics/query
      inputParameters:
      - name: site_url
        in: path
      operations:
      - name: get-analytics
        method: POST
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: freshness
      path: /content/freshness
      operations:
      - name: check-content-freshness
        method: POST
  - type: http
    namespace: jira
    baseUri: https://condenast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → seo-content-audit-pipeline.yml

Launches a new e-commerce product by creating the listing in Shopify, creating promotional content in WordPress, sending launch email via Mailchimp, and announcing via Instagram.

naftiko: '0.5'
info:
  label: E-Commerce Product Launch Pipeline
  description: Launches a new e-commerce product by creating the listing in Shopify, creating promotional content in WordPress, sending launch email via Mailchimp, and announcing via Instagram.
  tags:
  - e-commerce
  - shopify
  - wordpress
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: product-launch
    port: 8080
    tools:
    - name: launch-ecommerce-product
      description: Create product listing, publish content, and promote across channels.
      inputParameters:
      - name: product_name
        in: body
        type: string
        description: The product name.
      - name: product_price
        in: body
        type: string
        description: The product price.
      - name: brand
        in: body
        type: string
        description: The brand selling the product.
      steps:
      - name: create-shopify-product
        type: call
        call: shopify.create-product
        with:
          title: '{{product_name}}'
          price: '{{product_price}}'
          vendor: '{{brand}}'
      - name: create-promo-post
        type: call
        call: wordpress.create-post
        with:
          title: Introducing {{product_name}}
          status: publish
          categories: shop
      - name: send-launch-email
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: shoppers
          subject: 'New: {{product_name}} from {{brand}}'
      - name: post-to-instagram
        type: call
        call: instagram.create-post
        with:
          caption: 'Now available: {{product_name}}. Shop link in bio.'
          brand: '{{brand}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shop.condenast.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: products
      path: /products.json
      operations:
      - name: create-product
        method: POST
  - type: http
    namespace: wordpress
    baseUri: https://{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → e-commerce-product-launch-pipeline.yml

When a new photo or video asset is licensed, records the rights in the DAM system, sets usage restrictions, updates the rights database in Airtable, and notifies the legal team via Slack.

naftiko: '0.5'
info:
  label: Content Rights Management Pipeline
  description: When a new photo or video asset is licensed, records the rights in the DAM system, sets usage restrictions, updates the rights database in Airtable, and notifies the legal team via Slack.
  tags:
  - rights-management
  - dam
  - legal
  - airtable
  - slack
capability:
  exposes:
  - type: mcp
    namespace: rights-management
    port: 8080
    tools:
    - name: register-content-rights
      description: Given an asset and license details, register rights, set restrictions, update tracking, and notify legal.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The DAM asset identifier.
      - name: license_type
        in: body
        type: string
        description: The license type (exclusive, non-exclusive, royalty-free).
      - name: usage_territory
        in: body
        type: string
        description: The licensed usage territory.
      - name: expiry_date
        in: body
        type: string
        description: The license expiry date.
      steps:
      - name: register-rights
        type: call
        call: dam.register-license
        with:
          asset_id: '{{asset_id}}'
          license_type: '{{license_type}}'
          territory: '{{usage_territory}}'
          expiry: '{{expiry_date}}'
      - name: update-tracking
        type: call
        call: airtable.create-record
        with:
          base_id: rights_management
          table_name: Licenses
          fields:
            asset_id: '{{asset_id}}'
            license_type: '{{license_type}}'
            territory: '{{usage_territory}}'
            expiry: '{{expiry_date}}'
      - name: notify-legal
        type: call
        call: slack.post-message
        with:
          channel: '#legal-rights'
          text: 'New license registered: Asset {{asset_id}}. Type: {{license_type}}. Territory: {{usage_territory}}. Expires: {{expiry_date}}.'
  consumes:
  - type: http
    namespace: dam
    baseUri: https://dam.internal.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.dam_token
    resources:
    - name: licenses
      path: /assets/{{asset_id}}/licenses
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: register-license
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        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 → content-rights-management-pipeline.yml

Runs a New Relic Synthetics availability check for a brand website and returns uptime percentage and response time.

naftiko: '0.5'
info:
  label: New Relic Synthetics Site Check
  description: Runs a New Relic Synthetics availability check for a brand website and returns uptime percentage and response time.
  tags:
  - monitoring
  - new-relic
  - website-performance
capability:
  exposes:
  - type: mcp
    namespace: synthetics-check
    port: 8080
    tools:
    - name: check-site-availability
      description: Check website availability via New Relic Synthetics.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The New Relic Synthetics monitor identifier.
      call: new-relic.get-monitor-results
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: uptime_pct
        type: number
        mapping: $.data.uptime_percentage
      - name: avg_response_ms
        type: number
        mapping: $.data.avg_response_time
  consumes:
  - type: http
    namespace: new-relic
    baseUri: https://synthetics.newrelic.com/synthetics/api/v3
    authentication:
      type: bearer
      token: $secrets.new_relic_api_key
    resources:
    - name: monitors
      path: /monitors/{{monitor_id}}/results
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor-results
        method: GET
Open in Framework → View in Fleet → new-relic-synthetics-site-check.yml

Retrieves the current editorial sprint status from Jira, returning completed stories, remaining story points, and sprint burndown status.

naftiko: '0.5'
info:
  label: Jira Editorial Sprint Status
  description: Retrieves the current editorial sprint status from Jira, returning completed stories, remaining story points, and sprint burndown status.
  tags:
  - project-management
  - jira
  - editorial
capability:
  exposes:
  - type: mcp
    namespace: editorial-pm
    port: 8080
    tools:
    - name: get-editorial-sprint
      description: Look up the current editorial sprint in Jira. Returns completed stories, remaining points, and burndown status.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID for the editorial team.
      call: jira.get-sprint
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: completed_stories
        type: number
        mapping: $.sprint.completedIssues
      - name: remaining_points
        type: number
        mapping: $.sprint.remainingPoints
      - name: burndown_status
        type: string
        mapping: $.sprint.burndownStatus
  consumes:
  - type: http
    namespace: jira
    baseUri: https://condenast.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-sprint
        method: GET
Open in Framework → View in Fleet → jira-editorial-sprint-status.yml

When an article is approved in the CMS, publishes to WordPress, triggers SEO indexing via Google Search Console, updates the social media calendar in Airtable, and notifies the editorial team via Slack.

naftiko: '0.5'
info:
  label: Editorial Content Publishing Pipeline
  description: When an article is approved in the CMS, publishes to WordPress, triggers SEO indexing via Google Search Console, updates the social media calendar in Airtable, and notifies the editorial team via Slack.
  tags:
  - editorial
  - publishing
  - wordpress
  - google
  - slack
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: editorial-publishing
    port: 8080
    tools:
    - name: publish-article
      description: Given a CMS article ID, publish to WordPress, trigger SEO indexing, update social calendar, and notify editorial.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The CMS article identifier.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand (e.g., Vogue, GQ, Wired, Vanity Fair).
      - name: publish_date
        in: body
        type: string
        description: The target publish date in YYYY-MM-DD format.
      steps:
      - name: get-article
        type: call
        call: cms.get-article
        with:
          article_id: '{{article_id}}'
      - name: publish-wp
        type: call
        call: wordpress.create-post
        with:
          title: '{{get-article.title}}'
          content: '{{get-article.body}}'
          status: publish
          categories: '{{get-article.categories}}'
      - name: request-indexing
        type: call
        call: google-search.request-indexing
        with:
          url: '{{publish-wp.link}}'
      - name: update-social-calendar
        type: call
        call: airtable.create-record
        with:
          base_id: social_calendar
          table_name: '{{brand}}_posts'
          fields:
            title: '{{get-article.title}}'
            url: '{{publish-wp.link}}'
            publish_date: '{{publish_date}}'
      - name: notify-editorial
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-editorial'
          text: 'Published: "{{get-article.title}}" - {{publish-wp.link}}. Social calendar updated.'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://cms.condenast.com/api/v2
    authentication:
      type: bearer
      token: $secrets.cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: wordpress
    baseUri: https://{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: google-search
    baseUri: https://indexing.googleapis.com/v3
    authentication:
      type: bearer
      token: $secrets.google_indexing_token
    resources:
    - name: url-notifications
      path: /urlNotifications:publish
      operations:
      - name: request-indexing
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        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 → editorial-content-publishing-pipeline.yml

When a time-off request is submitted in Workday, checks team coverage in Google Calendar, approves or flags the request, and notifies the manager via Slack.

naftiko: '0.5'
info:
  label: Workday Time-Off Request Pipeline
  description: When a time-off request is submitted in Workday, checks team coverage in Google Calendar, approves or flags the request, and notifies the manager via Slack.
  tags:
  - hr
  - time-off
  - workday
  - google-workspace
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr-time-off
    port: 8080
    tools:
    - name: process-time-off-request
      description: Given a Workday time-off request, check team coverage and notify the manager.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The Workday time-off request ID.
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      steps:
      - name: get-request
        type: call
        call: workday.get-time-off-request
        with:
          request_id: '{{request_id}}'
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: check-calendar
        type: call
        call: gcalendar.get-events
        with:
          calendar_id: '{{get-employee.team_calendar}}'
          time_min: '{{get-request.start_date}}'
          time_max: '{{get-request.end_date}}'
      - name: notify-manager
        type: call
        call: slack.post-message
        with:
          channel: '{{get-employee.manager_slack_id}}'
          text: 'Time-off request from {{get-employee.full_name}}: {{get-request.start_date}} to {{get-request.end_date}}. Team members already off: {{check-calendar.conflict_count}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off
      path: /workers/{{worker_id}}/timeOffRequests/{{request_id}}
      inputParameters:
      - name: worker_id
        in: path
      - name: request_id
        in: path
      operations:
      - name: get-time-off-request
        method: GET
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: gcalendar
    baseUri: https://www.googleapis.com/calendar/v3
    authentication:
      type: bearer
      token: $secrets.google_calendar_token
    resources:
    - name: events
      path: /calendars/{{calendar_id}}/events
      inputParameters:
      - name: calendar_id
        in: path
      operations:
      - name: get-events
        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
Open in Framework → View in Fleet → workday-time-off-request-pipeline.yml

Creates a marketing journey in Salesforce Marketing Cloud for a subscriber segment, configures email and push touchpoints, and logs the journey in Airtable for tracking.

naftiko: '0.5'
info:
  label: Salesforce Marketing Cloud Journey Pipeline
  description: Creates a marketing journey in Salesforce Marketing Cloud for a subscriber segment, configures email and push touchpoints, and logs the journey in Airtable for tracking.
  tags:
  - marketing
  - salesforce-marketing-cloud
  - email-marketing
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: marketing-automation
    port: 8080
    tools:
    - name: create-marketing-journey
      description: Given a segment and journey configuration, create a Salesforce Marketing Cloud journey and log for tracking.
      inputParameters:
      - name: journey_name
        in: body
        type: string
        description: The marketing journey name.
      - name: segment_id
        in: body
        type: string
        description: The audience segment ID.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      steps:
      - name: create-journey
        type: call
        call: sfmc.create-journey
        with:
          name: '{{journey_name}}'
          segment_id: '{{segment_id}}'
      - name: activate-journey
        type: call
        call: sfmc.activate-journey
        with:
          journey_id: '{{create-journey.id}}'
      - name: log-journey
        type: call
        call: airtable.create-record
        with:
          base_id: marketing_tracking
          table_name: Journeys
          fields:
            name: '{{journey_name}}'
            brand: '{{brand}}'
            journey_id: '{{create-journey.id}}'
            status: active
  consumes:
  - type: http
    namespace: sfmc
    baseUri: https://condenast.rest.marketingcloudapis.com/interaction/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: journeys
      path: /interactions
      operations:
      - name: create-journey
        method: POST
    - name: activation
      path: /interactions/{{journey_id}}/start
      inputParameters:
      - name: journey_id
        in: path
      operations:
      - name: activate-journey
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → salesforce-marketing-cloud-journey-pipeline.yml

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, and sends a Slack welcome message to the new employee.

naftiko: '0.5'
info:
  label: Employee Onboarding Orchestrator
  description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, and sends a Slack welcome message to the new employee.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - google-drive
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID, orchestrate onboarding across ServiceNow, Google Drive, and Slack.
      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
      - name: provision-folder
        type: call
        call: gdrive.create-folder
        with:
          name: '{{get-employee.full_name}}_{{start_date}}'
          parent_id: onboarding_root_folder
      - name: send-welcome
        type: call
        call: slack.post-message
        with:
          channel: '#new-hires'
          text: Welcome to Condé Nast, {{get-employee.first_name}}! Your IT ticket is {{open-ticket.number}} and your docs folder is ready at {{provision-folder.webViewLink}}.
  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://condenast.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: create-folder
        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 → employee-onboarding-orchestrator.yml

Retrieves Slack channel usage analytics, returning message count, active members, and files shared for a given channel.

naftiko: '0.5'
info:
  label: Slack Channel Analytics
  description: Retrieves Slack channel usage analytics, returning message count, active members, and files shared for a given channel.
  tags:
  - collaboration
  - slack
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: collaboration-analytics
    port: 8080
    tools:
    - name: get-channel-stats
      description: Look up Slack channel usage statistics. Returns message count, active members, and files shared.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: The Slack channel ID.
      call: slack.get-channel-info
      with:
        channel: '{{channel_id}}'
      outputParameters:
      - name: message_count
        type: number
        mapping: $.channel.num_messages
      - name: member_count
        type: number
        mapping: $.channel.num_members
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: channels
      path: /conversations.info
      operations:
      - name: get-channel-info
        method: GET
Open in Framework → View in Fleet → slack-channel-analytics.yml

When a freelance contributor is contracted, creates a profile in Workday, provisions Google Workspace access, shares an NDA via Adobe Acrobat Sign, and notifies the editor via Slack.

naftiko: '0.5'
info:
  label: Freelancer Onboarding Pipeline
  description: When a freelance contributor is contracted, creates a profile in Workday, provisions Google Workspace access, shares an NDA via Adobe Acrobat Sign, and notifies the editor via Slack.
  tags:
  - hr
  - freelancer
  - workday
  - google-workspace
  - adobe-acrobat
  - slack
capability:
  exposes:
  - type: mcp
    namespace: freelancer-ops
    port: 8080
    tools:
    - name: onboard-freelancer
      description: Given freelancer details, create a Workday profile, provision Google Workspace, send NDA, and notify the editor.
      inputParameters:
      - name: full_name
        in: body
        type: string
        description: The freelancer's full name.
      - name: email
        in: body
        type: string
        description: The freelancer's email address.
      - name: editor_slack_id
        in: body
        type: string
        description: The assigning editor's Slack user ID.
      - name: brand
        in: body
        type: string
        description: The brand the freelancer will contribute to.
      steps:
      - name: create-worker
        type: call
        call: workday.create-contingent-worker
        with:
          full_name: '{{full_name}}'
          email: '{{email}}'
          worker_type: freelancer
      - name: provision-workspace
        type: call
        call: google-admin.create-user
        with:
          email: '{{email}}'
          org_unit: /Freelancers/{{brand}}
      - name: send-nda
        type: call
        call: adobe-sign.send-agreement
        with:
          recipient_email: '{{email}}'
          template_id: freelancer_nda
      - name: notify-editor
        type: call
        call: slack.post-message
        with:
          channel: '{{editor_slack_id}}'
          text: Freelancer {{full_name}} onboarded for {{brand}}. Workspace provisioned. NDA sent ({{send-nda.agreement_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: contingent-workers
      path: /contingentWorkers
      operations:
      - name: create-contingent-worker
        method: POST
  - type: http
    namespace: google-admin
    baseUri: https://admin.googleapis.com/admin/directory/v1
    authentication:
      type: bearer
      token: $secrets.google_admin_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: adobe-sign
    baseUri: https://api.na1.adobesign.com/api/rest/v6
    authentication:
      type: bearer
      token: $secrets.adobe_sign_token
    resources:
    - name: agreements
      path: /agreements
      operations:
      - name: send-agreement
        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 → freelancer-onboarding-pipeline.yml

When a new advertising deal is created in Salesforce, pulls advertiser details, creates a campaign setup task in Jira, provisions ad tags via Google Ad Manager, and notifies sales via Slack.

naftiko: '0.5'
info:
  label: Salesforce Advertising Deal Pipeline
  description: When a new advertising deal is created in Salesforce, pulls advertiser details, creates a campaign setup task in Jira, provisions ad tags via Google Ad Manager, and notifies sales via Slack.
  tags:
  - advertising
  - salesforce
  - jira
  - google-ads
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ad-ops
    port: 8080
    tools:
    - name: setup-ad-deal
      description: Given a Salesforce opportunity ID, set up the advertising campaign across Jira, ad server, and notify sales.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID for the ad deal.
      steps:
      - name: get-deal
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-jira-task
        type: call
        call: jira.create-issue
        with:
          project: ADOPS
          summary: 'Campaign setup: {{get-deal.Name}}'
          description: 'Advertiser: {{get-deal.Account.Name}}. Budget: {{get-deal.Amount}}. Start: {{get-deal.CloseDate}}.'
          issue_type: Task
      - name: setup-ad-tags
        type: call
        call: google-ads.create-campaign
        with:
          name: '{{get-deal.Name}}'
          budget: '{{get-deal.Amount}}'
      - name: notify-sales
        type: call
        call: slack.post-message
        with:
          channel: '#ad-sales'
          text: 'New ad deal setup: {{get-deal.Name}} (${{get-deal.Amount}}). Jira: {{create-jira-task.key}}. Ad tags provisioned.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://condenast.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: jira
    baseUri: https://condenast.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        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: create-campaign
        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 → salesforce-advertising-deal-pipeline.yml

Checks the publication status of a content entry in Contentful CMS.

naftiko: '0.5'
info:
  label: Contentful Entry Status
  description: Checks the publication status of a content entry in Contentful CMS.
  tags:
  - content-management
  - contentful
  - publishing
capability:
  exposes:
  - type: mcp
    namespace: contentful-cms
    port: 8080
    tools:
    - name: get-entry-status
      description: Look up a Contentful entry status by entry ID.
      inputParameters:
      - name: space_id
        in: body
        type: string
        description: The Contentful space identifier.
      - name: entry_id
        in: body
        type: string
        description: The content entry identifier.
      call: contentful.get-entry
      with:
        space_id: '{{space_id}}'
        entry_id: '{{entry_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.sys.publishedVersion
      - name: updated_at
        type: string
        mapping: $.sys.updatedAt
  consumes:
  - type: http
    namespace: contentful
    baseUri: https://cdn.contentful.com
    authentication:
      type: bearer
      token: $secrets.contentful_access_token
    resources:
    - name: entries
      path: /spaces/{{space_id}}/entries/{{entry_id}}
      inputParameters:
      - name: space_id
        in: path
      - name: entry_id
        in: path
      operations:
      - name: get-entry
        method: GET
Open in Framework → View in Fleet → contentful-entry-status.yml

Checks the current publication status of a WordPress post for a specified brand site.

naftiko: '0.5'
info:
  label: WordPress Post Status Check
  description: Checks the current publication status of a WordPress post for a specified brand site.
  tags:
  - publishing
  - wordpress
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: wp-status
    port: 8080
    tools:
    - name: get-post-status
      description: Look up the status of a WordPress post by post ID.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The brand slug (e.g., vogue, gq, wired).
      - name: post_id
        in: body
        type: string
        description: The WordPress post ID.
      call: wordpress.get-post
      with:
        post_id: '{{post_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: title
        type: string
        mapping: $.title.rendered
      - name: modified
        type: string
        mapping: $.modified
  consumes:
  - type: http
    namespace: wordpress
    baseUri: https://{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-post
        method: GET
Open in Framework → View in Fleet → wordpress-post-status-check.yml

Retrieves the status of a content recommendation ML model in Databricks MLflow, returning version, stage, and last transition date.

naftiko: '0.5'
info:
  label: Databricks Content Recommendation Model
  description: Retrieves the status of a content recommendation ML model in Databricks MLflow, returning version, stage, and last transition date.
  tags:
  - machine-learning
  - databricks
  - content-recommendations
capability:
  exposes:
  - type: mcp
    namespace: ml-ops
    port: 8080
    tools:
    - name: get-recommendation-model
      description: Look up a content recommendation model in Databricks. Returns version, stage, and last transition.
      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
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://condenast.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-content-recommendation-model.yml

Checks the indexing status of a URL in Google Search Console to verify article visibility.

naftiko: '0.5'
info:
  label: Google Search Console Indexing Status
  description: Checks the indexing status of a URL in Google Search Console to verify article visibility.
  tags:
  - seo
  - google-search-console
  - content-performance
capability:
  exposes:
  - type: mcp
    namespace: gsc-index
    port: 8080
    tools:
    - name: get-indexing-status
      description: Check if a URL is indexed in Google Search Console.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: The site URL registered in Search Console.
      - name: page_url
        in: body
        type: string
        description: The page URL to check indexing for.
      call: gsc.get-url-inspection
      with:
        site_url: '{{site_url}}'
        inspection_url: '{{page_url}}'
      outputParameters:
      - name: coverage_state
        type: string
        mapping: $.inspectionResult.indexStatusResult.coverageState
      - name: last_crawl_time
        type: string
        mapping: $.inspectionResult.indexStatusResult.lastCrawlTime
  consumes:
  - type: http
    namespace: gsc
    baseUri: https://searchconsole.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_search_console_token
    resources:
    - name: url-inspection
      path: /urlInspection/index:inspect
      operations:
      - name: get-url-inspection
        method: POST
Open in Framework → View in Fleet → google-search-console-indexing-status.yml

Coordinates fashion week coverage by assigning photographers in Airtable, creating Slack war-room channels, setting up live blogs in WordPress, and scheduling Instagram Stories.

naftiko: '0.5'
info:
  label: Fashion Week Coverage Orchestrator
  description: Coordinates fashion week coverage by assigning photographers in Airtable, creating Slack war-room channels, setting up live blogs in WordPress, and scheduling Instagram Stories.
  tags:
  - editorial
  - fashion
  - airtable
  - slack
  - wordpress
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: fashion-week-coverage
    port: 8080
    tools:
    - name: setup-fashion-week
      description: Set up full coverage infrastructure for a fashion week event.
      inputParameters:
      - name: event_name
        in: body
        type: string
        description: The fashion week event name.
      - name: brand
        in: body
        type: string
        description: The covering brand.
      - name: start_date
        in: body
        type: string
        description: Event start date in YYYY-MM-DD.
      steps:
      - name: create-assignment-board
        type: call
        call: airtable.create-record
        with:
          base_id: fashion_events
          table_name: assignments
          event: '{{event_name}}'
      - name: create-war-room
        type: call
        call: slack.create-channel
        with:
          name: fw-{{brand}}-{{event_name}}
          topic: 'Fashion Week Coverage: {{event_name}}'
      - name: setup-live-blog
        type: call
        call: wordpress.create-post
        with:
          title: '{{event_name}} Live Coverage'
          status: draft
          categories: fashion-week
      - name: schedule-ig-stories
        type: call
        call: instagram.create-story-draft
        with:
          brand: '{{brand}}'
          event: '{{event_name}}'
          scheduled_date: '{{start_date}}'
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        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
  - type: http
    namespace: wordpress
    baseUri: https://{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: stories
      path: /{{ig_user_id}}/stories
      operations:
      - name: create-story-draft
        method: POST
Open in Framework → View in Fleet → fashion-week-coverage-orchestrator.yml

When a new digital subscription is created, provisions the subscription in SAP BRIM, creates a billing document, and syncs the subscriber to MailChimp for onboarding emails.

naftiko: '0.5'
info:
  label: SAP BRIM Subscription Billing Pipeline
  description: When a new digital subscription is created, provisions the subscription in SAP BRIM, creates a billing document, and syncs the subscriber to MailChimp for onboarding emails.
  tags:
  - subscriptions
  - billing
  - sap-brim
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: subscription-billing
    port: 8080
    tools:
    - name: provision-subscription
      description: Given subscriber details and plan, create the subscription in SAP BRIM, generate a billing document, and add to MailChimp.
      inputParameters:
      - name: subscriber_email
        in: body
        type: string
        description: The subscriber's email address.
      - name: plan_id
        in: body
        type: string
        description: The subscription plan identifier.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      steps:
      - name: create-subscription
        type: call
        call: sap-brim.create-subscription
        with:
          email: '{{subscriber_email}}'
          plan_id: '{{plan_id}}'
          brand: '{{brand}}'
      - name: create-billing-doc
        type: call
        call: sap-brim.create-billing-document
        with:
          subscription_id: '{{create-subscription.subscription_id}}'
      - name: add-to-mailchimp
        type: call
        call: mailchimp.add-subscriber
        with:
          list_id: '{{brand}}_subscribers'
          email: '{{subscriber_email}}'
          tags:
          - '{{plan_id}}'
          - new_subscriber
  consumes:
  - type: http
    namespace: sap-brim
    baseUri: https://condenast-brim.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_brim_user
      password: $secrets.sap_brim_password
    resources:
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: create-subscription
        method: POST
    - name: billing
      path: /billing-documents
      operations:
      - name: create-billing-document
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: members
      path: /lists/{{list_id}}/members
      inputParameters:
      - name: list_id
        in: path
      operations:
      - name: add-subscriber
        method: POST
Open in Framework → View in Fleet → sap-brim-subscription-billing-pipeline.yml

Retrieves performance metrics for a Pinterest pin including impressions, saves, and clicks.

naftiko: '0.5'
info:
  label: Pinterest Pin Performance
  description: Retrieves performance metrics for a Pinterest pin including impressions, saves, and clicks.
  tags:
  - social-media
  - pinterest
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: pinterest-analytics
    port: 8080
    tools:
    - name: get-pin-metrics
      description: Look up Pinterest pin performance metrics.
      inputParameters:
      - name: pin_id
        in: body
        type: string
        description: The Pinterest pin identifier.
      call: pinterest.get-pin-analytics
      with:
        pin_id: '{{pin_id}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.data.impressions
      - name: saves
        type: number
        mapping: $.data.saves
      - name: clicks
        type: number
        mapping: $.data.clicks
  consumes:
  - type: http
    namespace: pinterest
    baseUri: https://api.pinterest.com/v5
    authentication:
      type: bearer
      token: $secrets.pinterest_token
    resources:
    - name: pins
      path: /pins/{{pin_id}}/analytics
      inputParameters:
      - name: pin_id
        in: path
      operations:
      - name: get-pin-analytics
        method: GET
Open in Framework → View in Fleet → pinterest-pin-performance.yml

Retrieves an invoice from Workday Financials, returning invoice number, vendor, amount, payment status, and due date.

naftiko: '0.5'
info:
  label: Workday Financials Invoice Lookup
  description: Retrieves an invoice from Workday Financials, returning invoice number, vendor, amount, payment status, and due date.
  tags:
  - finance
  - workday-financials
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: finance-ap
    port: 8080
    tools:
    - name: get-invoice
      description: Look up a Workday Financials invoice. Returns invoice number, vendor, amount, payment status, and due date.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: The Workday invoice identifier.
      call: workday-fin.get-invoice
      with:
        invoice_id: '{{invoice_id}}'
      outputParameters:
      - name: invoice_number
        type: string
        mapping: $.invoiceNumber
      - name: vendor
        type: string
        mapping: $.vendor.name
      - name: amount
        type: number
        mapping: $.totalAmount
      - name: payment_status
        type: string
        mapping: $.paymentStatus
      - name: due_date
        type: string
        mapping: $.dueDate
  consumes:
  - type: http
    namespace: workday-fin
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/financialManagement/v1
    authentication:
      type: bearer
      token: $secrets.workday_financials_token
    resources:
    - name: invoices
      path: /invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
Open in Framework → View in Fleet → workday-financials-invoice-lookup.yml

Retrieves the number of members in a specified Slack channel for team coordination.

naftiko: '0.5'
info:
  label: Slack Channel Member Count
  description: Retrieves the number of members in a specified Slack channel for team coordination.
  tags:
  - communications
  - slack
  - team-management
capability:
  exposes:
  - type: mcp
    namespace: slack-info
    port: 8080
    tools:
    - name: get-channel-members
      description: Look up the member count for a Slack channel.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: The Slack channel identifier.
      call: slack.get-channel-info
      with:
        channel_id: '{{channel_id}}'
      outputParameters:
      - name: member_count
        type: number
        mapping: $.channel.num_members
      - name: channel_name
        type: string
        mapping: $.channel.name
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: channels
      path: /conversations.info?channel={{channel_id}}
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: get-channel-info
        method: GET
Open in Framework → View in Fleet → slack-channel-member-count.yml

Aggregates content performance across all Conde Nast brands by querying Snowflake data warehouse, refreshing Tableau dashboards, and emailing the executive summary.

naftiko: '0.5'
info:
  label: Cross-Brand Content Analytics Pipeline
  description: Aggregates content performance across all Conde Nast brands by querying Snowflake data warehouse, refreshing Tableau dashboards, and emailing the executive summary.
  tags:
  - analytics
  - snowflake
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: cross-brand-analytics
    port: 8080
    tools:
    - name: generate-cross-brand-report
      description: Aggregate multi-brand content performance and generate executive dashboards.
      inputParameters:
      - name: report_period
        in: body
        type: string
        description: The reporting period (e.g., Q1-2026).
      - name: distribution_list
        in: body
        type: string
        description: Comma-separated email addresses for distribution.
      steps:
      - name: query-snowflake
        type: call
        call: snowflake.run-query
        with:
          query: SELECT brand, SUM(page_views) as views FROM content_metrics WHERE period = '{{report_period}}' GROUP BY brand
      - name: refresh-tableau
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: cross_brand_performance
      - name: distribute-report
        type: call
        call: gmail.send-email
        with:
          to: '{{distribution_list}}'
          subject: Cross-Brand Performance Report - {{report_period}}
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://condenast.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: tableau
    baseUri: https://tableau.condenast.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      operations:
      - name: refresh-workbook
        method: POST
  - type: http
    namespace: gmail
    baseUri: https://gmail.googleapis.com/gmail/v1
    authentication:
      type: bearer
      token: $secrets.gmail_token
    resources:
    - name: messages
      path: /users/me/messages/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → cross-brand-content-analytics-pipeline.yml

Retrieves traffic analytics from Cloudflare for a brand domain, returning total requests, cached percentage, and threat count.

naftiko: '0.5'
info:
  label: Cloudflare Traffic Analytics Lookup
  description: Retrieves traffic analytics from Cloudflare for a brand domain, returning total requests, cached percentage, and threat count.
  tags:
  - infrastructure
  - cloudflare
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: cloudflare-analytics
    port: 8080
    tools:
    - name: get-traffic-analytics
      description: Look up Cloudflare traffic analytics for a domain 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: total_requests
        type: number
        mapping: $.result.totals.requests.all
      - name: cached_pct
        type: number
        mapping: $.result.totals.requests.cached_pct
      - name: threats
        type: number
        mapping: $.result.totals.threats.all
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_api_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-traffic-analytics-lookup.yml

Searches the Workday employee directory by name or department, returning employee details including title, manager, and location.

naftiko: '0.5'
info:
  label: Workday Employee Directory Search
  description: Searches the Workday employee directory by name or department, returning employee details including title, manager, and location.
  tags:
  - hr
  - workday
  - employee-directory
capability:
  exposes:
  - type: mcp
    namespace: workday-directory
    port: 8080
    tools:
    - name: search-employees
      description: Search the Workday employee directory.
      inputParameters:
      - name: search_term
        in: body
        type: string
        description: The name or department to search for.
      call: workday.search-workers
      with:
        search: '{{search_term}}'
      outputParameters:
      - name: employee_name
        type: string
        mapping: $.workers[0].name
      - name: title
        type: string
        mapping: $.workers[0].title
      - name: department
        type: string
        mapping: $.workers[0].department
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-services.condenast.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers?search={{search}}
      inputParameters:
      - name: search
        in: path
      operations:
      - name: search-workers
        method: GET
Open in Framework → View in Fleet → workday-employee-directory-search.yml

Retrieves a specific editorial record from an Airtable base, returning story status, assigned editor, and deadline.

naftiko: '0.5'
info:
  label: Airtable Editorial Record Lookup
  description: Retrieves a specific editorial record from an Airtable base, returning story status, assigned editor, and deadline.
  tags:
  - editorial
  - airtable
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: airtable-editorial
    port: 8080
    tools:
    - name: get-editorial-record
      description: Fetch an editorial record from Airtable by record ID.
      inputParameters:
      - name: base_id
        in: body
        type: string
        description: The Airtable base identifier.
      - name: record_id
        in: body
        type: string
        description: The Airtable record identifier.
      call: airtable.get-record
      with:
        base_id: '{{base_id}}'
        record_id: '{{record_id}}'
      outputParameters:
      - name: story_status
        type: string
        mapping: $.fields.Status
      - name: editor
        type: string
        mapping: $.fields.Editor
      - name: deadline
        type: string
        mapping: $.fields.Deadline
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/Editorial/{{record_id}}
      inputParameters:
      - name: base_id
        in: path
      - name: record_id
        in: path
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → airtable-editorial-record-lookup.yml

Retrieves video performance metrics from YouTube Analytics for a given video ID, returning views, watch time, likes, and subscriber gain.

naftiko: '0.5'
info:
  label: YouTube Video Performance Lookup
  description: Retrieves video performance metrics from YouTube Analytics for a given video ID, returning views, watch time, likes, and subscriber gain.
  tags:
  - video
  - youtube
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: video-analytics
    port: 8080
    tools:
    - name: get-video-performance
      description: Look up YouTube video performance. Returns views, watch time, likes, and subscriber gain.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: The YouTube video ID.
      call: youtube.get-video-analytics
      with:
        video_id: '{{video_id}}'
      outputParameters:
      - name: views
        type: number
        mapping: $.rows[0][0]
      - name: watch_time_minutes
        type: number
        mapping: $.rows[0][1]
      - name: likes
        type: number
        mapping: $.rows[0][2]
      - name: subscriber_gain
        type: number
        mapping: $.rows[0][3]
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://youtubeanalytics.googleapis.com/v2
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-video-analytics
        method: GET
Open in Framework → View in Fleet → youtube-video-performance-lookup.yml

Collects reader survey responses from Typeform, analyzes sentiment via natural language processing, generates a summary report in Google Sheets, and shares insights with editorial leadership via email.

naftiko: '0.5'
info:
  label: Reader Survey Analysis Pipeline
  description: Collects reader survey responses from Typeform, analyzes sentiment via natural language processing, generates a summary report in Google Sheets, and shares insights with editorial leadership via email.
  tags:
  - analytics
  - typeform
  - google-sheets
  - sentiment-analysis
capability:
  exposes:
  - type: mcp
    namespace: survey-analysis
    port: 8080
    tools:
    - name: analyze-reader-survey
      description: Collect survey responses, analyze sentiment, and generate insights report.
      inputParameters:
      - name: survey_id
        in: body
        type: string
        description: The Typeform survey identifier.
      - name: brand
        in: body
        type: string
        description: The brand the survey pertains to.
      steps:
      - name: get-responses
        type: call
        call: typeform.get-responses
        with:
          form_id: '{{survey_id}}'
      - name: analyze-sentiment
        type: call
        call: openai.analyze-sentiment
        with:
          responses: '{{get-responses.items}}'
      - name: create-report
        type: call
        call: google-sheets.append-rows
        with:
          spreadsheet_id: survey_reports
          sheet: '{{brand}}'
          data: '{{analyze-sentiment.summary}}'
      - name: email-leadership
        type: call
        call: gmail.send-email
        with:
          to: editorial-leadership@condenast.com
          subject: '{{brand}} Reader Survey Results'
          body: '{{analyze-sentiment.executive_summary}}'
  consumes:
  - type: http
    namespace: typeform
    baseUri: https://api.typeform.com
    authentication:
      type: bearer
      token: $secrets.typeform_token
    resources:
    - name: responses
      path: /forms/{{form_id}}/responses
      inputParameters:
      - name: form_id
        in: path
      operations:
      - name: get-responses
        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: analyze-sentiment
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values/{{sheet}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
  - type: http
    namespace: gmail
    baseUri: https://gmail.googleapis.com/gmail/v1
    authentication:
      type: bearer
      token: $secrets.gmail_token
    resources:
    - name: messages
      path: /users/me/messages/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → reader-survey-analysis-pipeline.yml

Releases new design system components by exporting from Figma, publishing to the NPM registry, updating Storybook documentation, and notifying development teams via Slack.

naftiko: '0.5'
info:
  label: Design System Component Release Pipeline
  description: Releases new design system components by exporting from Figma, publishing to the NPM registry, updating Storybook documentation, and notifying development teams via Slack.
  tags:
  - design-systems
  - figma
  - npm
  - documentation
  - slack
capability:
  exposes:
  - type: mcp
    namespace: design-system-release
    port: 8080
    tools:
    - name: release-design-component
      description: Export design tokens from Figma, publish to NPM, update docs, and notify teams.
      inputParameters:
      - name: component_name
        in: body
        type: string
        description: The design component name.
      - name: version
        in: body
        type: string
        description: The semantic version number.
      steps:
      - name: export-figma-tokens
        type: call
        call: figma.get-file-styles
        with:
          file_key: design_system_master
      - name: publish-npm-package
        type: call
        call: npm.publish
        with:
          package: '@condenast/{{component_name}}'
          version: '{{version}}'
      - name: update-storybook
        type: call
        call: github.trigger-workflow
        with:
          repo: design-system
          workflow: deploy-storybook.yml
      - name: notify-teams
        type: call
        call: slack.post-message
        with:
          channel: '#design-system-updates'
          text: Released @condenast/{{component_name}}@{{version}}. Storybook updated.
  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}}/styles
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: get-file-styles
        method: GET
  - type: http
    namespace: npm
    baseUri: https://registry.npmjs.org
    authentication:
      type: bearer
      token: $secrets.npm_token
    resources:
    - name: packages
      path: /@condenast/{{component_name}}
      inputParameters:
      - name: component_name
        in: path
      operations:
      - name: publish
        method: PUT
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflows
      path: /repos/condenast/{{repo}}/actions/workflows/{{workflow}}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow
        in: path
      operations:
      - name: trigger-workflow
        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 → design-system-component-release-pipeline.yml

Retrieves metadata and rendition URLs for a digital asset stored in Adobe Experience Manager.

naftiko: '0.5'
info:
  label: Adobe Experience Manager Asset Lookup
  description: Retrieves metadata and rendition URLs for a digital asset stored in Adobe Experience Manager.
  tags:
  - content-management
  - adobe
  - digital-assets
capability:
  exposes:
  - type: mcp
    namespace: aem-assets
    port: 8080
    tools:
    - name: get-asset-metadata
      description: Look up an AEM asset by its path and return metadata.
      inputParameters:
      - name: asset_path
        in: body
        type: string
        description: The asset path in AEM.
      call: aem.get-asset
      with:
        asset_path: '{{asset_path}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.properties.dc:title
      - name: format
        type: string
        mapping: $.properties.dc:format
      - name: size
        type: number
        mapping: $.properties.dam:size
  consumes:
  - type: http
    namespace: aem
    baseUri: https://aem.condenast.com/api/assets
    authentication:
      type: bearer
      token: $secrets.aem_token
    resources:
    - name: assets
      path: /{{asset_path}}.json
      inputParameters:
      - name: asset_path
        in: path
      operations:
      - name: get-asset
        method: GET
Open in Framework → View in Fleet → adobe-experience-manager-asset-lookup.yml

Migrates archived content from legacy CMS to the current platform by extracting articles, transforming metadata, uploading assets to AEM, and publishing to WordPress.

naftiko: '0.5'
info:
  label: Content Archive Migration Pipeline
  description: Migrates archived content from legacy CMS to the current platform by extracting articles, transforming metadata, uploading assets to AEM, and publishing to WordPress.
  tags:
  - migration
  - content-management
  - wordpress
  - adobe
capability:
  exposes:
  - type: mcp
    namespace: archive-migration
    port: 8080
    tools:
    - name: migrate-archived-content
      description: Extract, transform, and migrate archived content to the current CMS platform.
      inputParameters:
      - name: legacy_article_id
        in: body
        type: string
        description: The article ID in the legacy CMS.
      - name: brand
        in: body
        type: string
        description: The target brand for migration.
      steps:
      - name: extract-legacy-article
        type: call
        call: legacy-cms.get-article
        with:
          article_id: '{{legacy_article_id}}'
      - name: upload-assets
        type: call
        call: aem.upload-assets
        with:
          source: '{{extract-legacy-article.assets}}'
          destination: /content/dam/{{brand}}/archive
      - name: publish-to-wordpress
        type: call
        call: wordpress.create-post
        with:
          title: '{{extract-legacy-article.title}}'
          content: '{{extract-legacy-article.body}}'
          status: publish
          categories: archive
      - name: log-migration
        type: call
        call: airtable.create-record
        with:
          base_id: migration_tracker
          table_name: '{{brand}}_migrations'
          legacy_id: '{{legacy_article_id}}'
          status: completed
  consumes:
  - type: http
    namespace: legacy-cms
    baseUri: https://legacy-cms.condenast.com/api/v1
    authentication:
      type: bearer
      token: $secrets.legacy_cms_token
    resources:
    - name: articles
      path: /articles/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
  - type: http
    namespace: aem
    baseUri: https://aem.condenast.com/api/assets
    authentication:
      type: bearer
      token: $secrets.aem_token
    resources:
    - name: assets
      path: /upload
      operations:
      - name: upload-assets
        method: POST
  - type: http
    namespace: wordpress
    baseUri: https://{{brand}}.condenast.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/{{table_name}}
      inputParameters:
      - name: base_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → content-archive-migration-pipeline.yml

When a new article is published, creates social media posts for Instagram, Twitter, LinkedIn, and Facebook with brand-appropriate messaging and tracks campaign in Google Sheets.

naftiko: '0.5'
info:
  label: Social Media Cross-Post Pipeline
  description: When a new article is published, creates social media posts for Instagram, Twitter, LinkedIn, and Facebook with brand-appropriate messaging and tracks campaign in Google Sheets.
  tags:
  - social-media
  - instagram
  - twitter
  - linkedin
  - facebook
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: social-distribution
    port: 8080
    tools:
    - name: cross-post-article
      description: Given an article URL and headline, create social posts across Instagram, Twitter, LinkedIn, and Facebook and log to tracking sheet.
      inputParameters:
      - name: article_url
        in: body
        type: string
        description: The published article URL.
      - name: headline
        in: body
        type: string
        description: The article headline.
      - name: brand
        in: body
        type: string
        description: The Condé Nast brand.
      - name: image_url
        in: body
        type: string
        description: The hero image URL for social cards.
      steps:
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: '{{headline}} {{article_url}}'
      - name: post-linkedin
        type: call
        call: linkedin.create-post
        with:
          text: '{{headline}}'
          url: '{{article_url}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{headline}}'
          link: '{{article_url}}'
      - name: log-to-sheet
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: social_tracking_{{brand}}
          range: Posts!A:F
          values:
          - '{{headline}}'
          - '{{article_url}}'
          - '{{post-twitter.id}}'
          - '{{post-linkedin.id}}'
          - '{{post-facebook.id}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: posts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: feed
      path: /{{page_id}}/feed
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4/spreadsheets
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → social-media-cross-post-pipeline.yml

Generates a weekly content performance digest by aggregating metrics from Google Analytics, social engagement from Sprout Social, subscription impact from Stripe, and delivering via Slack and email.

naftiko: '0.5'
info:
  label: Content Performance Weekly Digest Pipeline
  description: Generates a weekly content performance digest by aggregating metrics from Google Analytics, social engagement from Sprout Social, subscription impact from Stripe, and delivering via Slack and email.
  tags:
  - analytics
  - reporting
  - google-analytics
  - slack
capability:
  exposes:
  - type: mcp
    namespace: weekly-digest
    port: 8080
    tools:
    - name: generate-weekly-digest
      description: Aggregate content metrics and deliver a weekly performance digest.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The brand to generate the digest for.
      - name: week_ending
        in: body
        type: string
        description: The week ending date in YYYY-MM-DD.
      steps:
      - name: get-ga-metrics
        type: call
        call: ga4.get-weekly-report
        with:
          brand: '{{brand}}'
          week_ending: '{{week_ending}}'
      - name: get-social-metrics
        type: call
        call: sprout-social.get-report
        with:
          brand: '{{brand}}'
          date_range: last_7_days
      - name: get-subscription-metrics
        type: call
        call: stripe.get-subscription-summary
        with:
          product: '{{brand}}_digital'
      - name: post-digest
        type: call
        call: slack.post-message
        with:
          channel: '#{{brand}}-performance'
          text: 'Weekly Digest ({{week_ending}}): {{get-ga-metrics.total_views}} views, {{get-social-metrics.total_engagement}} social engagements.'
  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
      operations:
      - name: get-weekly-report
        method: POST
  - type: http
    namespace: sprout-social
    baseUri: https://api.sproutsocial.com/v1
    authentication:
      type: bearer
      token: $secrets.sprout_social_token
    resources:
    - name: reports
      path: /{{customer_id}}/analytics
      operations:
      - name: get-report
        method: GET
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: get-subscription-summary
        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
Open in Framework → View in Fleet → content-performance-weekly-digest-pipeline.yml

Identifies expiring passes in Snowflake, creates Salesforce campaign, tracks in Jira, and reports to parks revenue via Microsoft Teams.

naftiko: '0.5'
info:
  label: Annual Pass Renewal Campaign Pipeline
  description: Identifies expiring passes in Snowflake, creates Salesforce campaign, tracks in Jira, and reports to parks revenue via Microsoft Teams.
  tags:
  - parks-revenue
  - snowflake
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-annual-pass-renewal-
    port: 8080
    tools:
    - name: annual-pass-renewal
      description: Identifies expiring passes in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: find-expiring
        call: snowflake.execute-statement
        with:
          statement: SELECT pass_holder_id, expiry_date FROM PARKS.ANNUAL_PASSES WHERE expiry_date BETWEEN CURRENT_DATE() AND DATEADD(day, 60, CURRENT_DATE())
      - name: create-campaign
        call: salesforce.createCampaign
        with:
          name: AP Renewal
          type: Retention
      - name: create-tracker
        call: jira.createIssue
        with:
          project: PARKS
          summary: 'AP Renewal: {{find-expiring.row_count}} holders'
      - name: report
        call: msteams.sendMessage
        with:
          channel_id: $secrets.parks_revenue_channel
          text: 'AP Renewal launched: {{find-expiring.row_count}} targets.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → annual-pass-renewal-campaign-pipeline.yml

Retrieves guest support ticket details from Zendesk for Disney parks and experiences.

naftiko: '0.5'
info:
  label: Zendesk Guest Support Ticket Lookup
  description: Retrieves guest support ticket details from Zendesk for Disney parks and experiences.
  tags:
  - support
  - zendesk
  - guest-services
capability:
  exposes:
  - type: mcp
    namespace: guest-support
    port: 8080
    tools:
    - name: get-ticket
      description: Look up a guest support ticket.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: Zendesk ticket ID.
      call: zendesk.get-ticket
      with:
        ticket_id: '{{ticket_id}}'
      outputParameters:
      - name: subject
        type: string
        mapping: $.ticket.subject
      - name: status
        type: string
        mapping: $.ticket.status
      - name: priority
        type: string
        mapping: $.ticket.priority
  consumes:
  - namespace: zendesk
    type: http
    baseUri: https://disney.zendesk.com/api/v2
    authentication:
      type: basic
      username: $secrets.zendesk_user
      password: $secrets.zendesk_api_token
    resources:
    - path: /tickets/{{ticket_id}}.json
      operations:
      - name: get-ticket
        method: GET
Open in Framework → View in Fleet → zendesk-guest-support-ticket-lookup.yml

Detects a production incident from Datadog, creates a P1 ticket in ServiceNow, pages on-call engineers via PagerDuty, and posts a war-room link to Teams.

naftiko: '0.5'
info:
  label: P1 Production Incident Response
  description: Detects a production incident from Datadog, creates a P1 ticket in ServiceNow, pages on-call engineers via PagerDuty, and posts a war-room link to Teams.
  tags:
  - incident-response
  - datadog
  - servicenow
  - pagerduty
  - teams
  - observability
capability:
  exposes:
    type: mcp
    namespace: disney-p1-incident-response
    port: 8080
    tools:
    - name: trigger-p1-incident
      description: Opens a P1 incident in ServiceNow, triggers a PagerDuty alert, and notifies the engineering war-room channel in Teams.
      inputParameters:
      - name: monitor_id
        type: string
        description: Datadog monitor ID that triggered the alert
        required: true
        in: body
      - name: service_name
        type: string
        description: Affected service name
        required: true
        in: body
      - name: summary
        type: string
        description: Short description of the incident
        required: true
        in: body
      steps:
      - name: get-monitor-details
        call: datadog.getMonitor
        with:
          monitor_id: '{{input.monitor_id}}'
      - name: create-p1-ticket
        call: servicenow.createIncident
        with:
          urgency: '1'
          impact: '1'
          short_description: '[P1] {{input.summary}}'
          service: '{{input.service_name}}'
      - name: page-on-call
        call: pagerduty.createIncident
        with:
          title: '[P1] {{input.summary}}'
          service_id: $secrets.pagerduty_service_id
          escalation_policy_id: $secrets.pagerduty_escalation_policy
      - name: notify-war-room
        call: microsoft-teams.sendMessage
        with:
          channel: engineering-incidents
          message: 'P1 INCIDENT: {{input.summary}} | ServiceNow: {{create-p1-ticket.ticketNumber}} | PagerDuty: {{page-on-call.incidentId}}'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
      placement: header
      name: DD-API-KEY
    resources:
    - path: /monitor/{monitor_id}
      operations:
      - name: getMonitor
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: pagerduty
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - path: /incidents
      operations:
      - name: createIncident
        method: POST
  - namespace: microsoft-teams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → p1-production-incident-response.yml

Pulls ad performance from Adobe Analytics, optimizes bids in Snowflake, updates Salesforce campaign records, and reports to media buying team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Advertising Campaign Optimization Pipeline
  description: Pulls ad performance from Adobe Analytics, optimizes bids in Snowflake, updates Salesforce campaign records, and reports to media buying team via Microsoft Teams.
  tags:
  - advertising
  - adobe-analytics
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-ad-optimization
    port: 8080
    tools:
    - name: optimize-campaign
      description: Orchestrate advertising campaign optimization.
      inputParameters:
      - name: campaign_id
        type: string
        description: Campaign identifier
        in: body
      steps:
      - name: get-performance
        call: adobe-analytics.getReport
        with:
          campaign_id: '{{campaign_id}}'
      - name: optimize-bids
        call: snowflake.execute-statement
        with:
          statement: CALL MARKETING.OPTIMIZE_BIDS('{{campaign_id}}')
      - name: update-sf
        call: salesforce.createRecord
        with:
          object: Campaign
          status: optimized
      - name: report
        call: msteams.sendMessage
        with:
          channel_id: $secrets.media_buying_channel
          text: Campaign {{campaign_id}} optimized. Performance updated.
  consumes:
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /reports
      operations:
      - name: getReport
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → advertising-campaign-optimization-pipeline.yml

Retrieves the status of an Azure Databricks job run for Disney data pipelines.

naftiko: '0.5'
info:
  label: Azure Databricks Pipeline Status
  description: Retrieves the status of an Azure Databricks job run for Disney data pipelines.
  tags:
  - data-engineering
  - azure-databricks
  - pipelines
capability:
  exposes:
  - type: mcp
    namespace: databricks-status
    port: 8080
    tools:
    - name: get-job-status
      description: Check Databricks job run status.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: Databricks run ID.
      call: databricks.get-run
      with:
        run_id: '{{run_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state.life_cycle_state
      - name: result
        type: string
        mapping: $.state.result_state
  consumes:
  - namespace: databricks
    type: http
    baseUri: https://adb-disney.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - path: /jobs/runs/get
      operations:
      - name: get-run
        method: GET
Open in Framework → View in Fleet → azure-databricks-pipeline-status.yml

Pulls open requisitions and candidate pipeline counts from Workday and posts a recruiting digest to the HR Slack channel.

naftiko: '0.5'
info:
  label: Recruiting Pipeline Digest
  description: Pulls open requisitions and candidate pipeline counts from Workday and posts a recruiting digest to the HR Slack channel.
  tags:
  - recruiting
  - workday
  - slack
  - hr
  - talent-acquisition
capability:
  exposes:
    type: mcp
    namespace: disney-recruiting-pipeline
    port: 8080
    tools:
    - name: post-recruiting-pipeline-digest
      description: Fetches open job requisitions and candidate counts from Workday and posts a weekly recruiting digest to Slack.
      inputParameters:
      - name: department
        type: string
        description: Department to filter requisitions by
        required: false
        in: body
      steps:
      - name: get-open-requisitions
        call: workday.getJobRequisitions
        with:
          status: Open
          department: '{{input.department}}'
      - name: post-digest
        call: slack.postMessage
        with:
          channel: '#talent-acquisition'
          text: 'Recruiting digest: {{get-open-requisitions.total}} open requisitions. Top priority roles: {{get-open-requisitions.topRoles}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - path: /jobRequisitions
      operations:
      - name: getJobRequisitions
        method: GET
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → recruiting-pipeline-digest.yml

Deactivates a departing Disney employee in Workday, revokes Microsoft 365 access, closes open IT tickets, and notifies HR leadership via Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding Orchestrator
  description: Deactivates a departing Disney employee in Workday, revokes Microsoft 365 access, closes open IT tickets, and notifies HR leadership via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - microsoft-365
  - servicenow
  - teams
capability:
  exposes:
    type: mcp
    namespace: disney-employee-offboarding
    port: 8080
    tools:
    - name: offboard-employee
      description: Terminates the employee record in Workday, revokes M365 licenses, resolves open ServiceNow tickets, and notifies HR via Teams.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday employee ID
        required: true
        in: body
      - name: termination_date
        type: string
        description: Termination date in YYYY-MM-DD format
        required: true
        in: body
      - name: reason
        type: string
        description: Reason for termination
        required: true
        in: body
      steps:
      - name: terminate-workday
        call: workday.terminateWorker
        with:
          workerId: '{{input.employee_id}}'
          terminationDate: '{{input.termination_date}}'
          reason: '{{input.reason}}'
      - name: revoke-m365
        call: microsoft-graph.removeLicense
        with:
          workerId: '{{input.employee_id}}'
      - name: close-it-tickets
        call: servicenow.closeEmployeeTickets
        with:
          employee_id: '{{input.employee_id}}'
      - name: notify-hr
        call: microsoft-teams.sendMessage
        with:
          channel: hr-operations
          message: Employee {{input.employee_id}} has been offboarded as of {{input.termination_date}}. M365 revoked, tickets closed.
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - path: /workers/{workerId}/terminate
      operations:
      - name: terminateWorker
        method: POST
  - namespace: microsoft-graph
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /users/{workerId}/removeLicense
      operations:
      - name: removeLicense
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: closeEmployeeTickets
        method: PATCH
  - namespace: microsoft-teams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → employee-offboarding-orchestrator.yml

Retrieves the current on-call engineer for a Disney service from PagerDuty.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Schedule
  description: Retrieves the current on-call engineer for a Disney service from PagerDuty.
  tags:
  - incident-management
  - pagerduty
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: pagerduty-oncall
    port: 8080
    tools:
    - name: get-oncall
      description: Look up who is on-call for a service.
      inputParameters:
      - name: escalation_policy_id
        in: body
        type: string
        description: PagerDuty escalation policy ID.
      call: pagerduty.get-oncalls
      with:
        escalation_policy_ids: '{{escalation_policy_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.oncalls[0].user.name
      - name: 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:
    - path: /oncalls
      operations:
      - name: get-oncalls
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-schedule.yml

Retrieves the latest GitHub Actions workflow run status for a Disney repository.

naftiko: '0.5'
info:
  label: GitHub Actions Workflow Status
  description: Retrieves the latest GitHub Actions workflow run status for a Disney repository.
  tags:
  - ci-cd
  - github-actions
  - development
capability:
  exposes:
  - type: mcp
    namespace: workflow-status
    port: 8080
    tools:
    - name: get-workflow-status
      description: Check the latest workflow run status.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository in owner/repo format.
      - name: workflow_name
        in: body
        type: string
        description: Workflow file name.
      call: github.get-workflow-runs
      with:
        repo: '{{repo}}'
        workflow: '{{workflow_name}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.workflow_runs[0].status
      - name: conclusion
        type: string
        mapping: $.workflow_runs[0].conclusion
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - path: /repos/{{repo}}/actions/workflows/{{workflow}}/runs
      operations:
      - name: get-workflow-runs
        method: GET
Open in Framework → View in Fleet → github-actions-workflow-status.yml

Creates Workday profile setup, provisions ServiceNow IT assets, sets up Microsoft Teams access, and creates a Jira onboarding checklist.

naftiko: '0.5'
info:
  label: Disney New Employee Onboarding Pipeline
  description: Creates Workday profile setup, provisions ServiceNow IT assets, sets up Microsoft Teams access, and creates a Jira onboarding checklist.
  tags:
  - hr-onboarding
  - workday
  - servicenow
  - microsoft-teams
  - jira
capability:
  exposes:
    type: mcp
    namespace: disney-new-employee-onboard
    port: 8080
    tools:
    - name: new-employee-onboarding
      description: Creates Workday profile setup.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-employee
        call: workday.getWorker
        with:
          employee_id: '{{employee_id}}'
      - name: provision-it
        call: servicenow.createIncident
        with:
          short_description: 'IT setup: {{get-employee.name}}'
          category: New Hire
      - name: create-checklist
        call: jira.createIssue
        with:
          project: HR
          summary: 'Onboarding: {{get-employee.name}}'
      - name: welcome
        call: msteams.sendMessage
        with:
          channel_id: $secrets.hr_onboarding_channel
          text: 'New hire onboarded: {{get-employee.name}}. IT: {{provision-it.number}}.'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-new-employee-onboarding-pipeline.yml

Pulls access logs from Splunk, verifies with Workday, creates Jira remediation tickets, and notifies security via Microsoft Teams.

naftiko: '0.5'
info:
  label: Studio Security Access Review Pipeline
  description: Pulls access logs from Splunk, verifies with Workday, creates Jira remediation tickets, and notifies security via Microsoft Teams.
  tags:
  - security
  - splunk
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-studio-security-acce
    port: 8080
    tools:
    - name: studio-security-access-review
      description: Pulls access logs from Splunk.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-logs
        call: splunk.search
        with:
          query: index=physical_access facility={{facility}} earliest=-7d | stats count by badge_id
      - name: verify
        call: workday.getWorker
        with:
          badge_ids: '{{get-logs.results}}'
      - name: create-remediation
        call: jira.createIssue
        with:
          project: SEC
          summary: 'Access review: {{facility}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.security_channel
          text: 'Access review: {{facility}}. Jira: {{create-remediation.key}}.'
  consumes:
  - namespace: splunk
    type: http
    baseUri: https://splunk.disney.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - path: /search/jobs
      operations:
      - name: search
        method: POST
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → studio-security-access-review-pipeline.yml

Configures test in Snowflake, tracks in Adobe Analytics, analyzes in Azure Databricks, and publishes results in Confluence.

naftiko: '0.5'
info:
  label: Disney+ A/B Test Pipeline
  description: Configures test in Snowflake, tracks in Adobe Analytics, analyzes in Azure Databricks, and publishes results in Confluence.
  tags:
  - experimentation
  - snowflake
  - adobe-analytics
  - databricks
  - confluence
capability:
  exposes:
    type: mcp
    namespace: disney-disney-plus-ab-test-
    port: 8080
    tools:
    - name: disney-plus-ab-test
      description: Configures test in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: setup-test
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO EXPERIMENTS.AB_TESTS (test_name, start_date) VALUES ('{{test_name}}', CURRENT_DATE())
      - name: setup-tracking
        call: adobe-analytics.getReport
        with:
          segment: abtest-{{test_name}}
      - name: run-analysis
        call: databricks.runJob
        with:
          job_id: $secrets.ab_test_job_id
      - name: publish
        call: confluence.createPage
        with:
          space: PRODUCT
          title: 'A/B Test: {{test_name}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /reports
      operations:
      - name: getReport
        method: POST
  - namespace: databricks
    type: http
    baseUri: https://adb-disney.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - path: /jobs/runs/submit
      operations:
      - name: runJob
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
Open in Framework → View in Fleet → disney-a-b-test-pipeline.yml

Pulls license usage from ServiceNow, compares with Salesforce contracts, creates Jira tickets, and reports to IT finance via Microsoft Teams.

naftiko: '0.5'
info:
  label: Enterprise Software License Audit Pipeline
  description: Pulls license usage from ServiceNow, compares with Salesforce contracts, creates Jira tickets, and reports to IT finance via Microsoft Teams.
  tags:
  - license-management
  - servicenow
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-software-license-aud
    port: 8080
    tools:
    - name: software-license-audit
      description: Pulls license usage from ServiceNow.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-usage
        call: servicenow.createIncident
        with:
          category: software
          type: '{{software_name}}'
      - name: get-contract
        call: salesforce.getOpportunity
        with:
          software: '{{software_name}}'
      - name: create-audit
        call: jira.createIssue
        with:
          project: ITFIN
          summary: 'License audit: {{software_name}}'
      - name: report
        call: msteams.sendMessage
        with:
          channel_id: $secrets.it_finance_channel
          text: 'License audit: {{software_name}}. Jira: {{create-audit.key}}.'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → enterprise-software-license-audit-pipeline.yml

Runs quality checks on media in Amazon S3, logs in Snowflake, creates Jira bugs, and notifies QA via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney+ Content Quality Pipeline
  description: Runs quality checks on media in Amazon S3, logs in Snowflake, creates Jira bugs, and notifies QA via Microsoft Teams.
  tags:
  - quality-assurance
  - s3
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-content-quality-assu
    port: 8080
    tools:
    - name: content-quality-assurance
      description: Runs quality checks on media in Amazon S3.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-assets
        call: s3.putObject
        with:
          bucket: disney-plus-content
          key: '{{title}}/quality-check'
      - name: log-results
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO QA.CONTENT_CHECKS (title, check_date) VALUES ('{{title}}', CURRENT_DATE())
      - name: create-bug
        call: jira.createIssue
        with:
          project: QA
          summary: 'Content quality: {{title}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.qa_channel
          text: 'Content QA: {{title}}. Jira: {{create-bug.key}}.'
  consumes:
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-content-quality-pipeline.yml

Queries Workday for a current payroll headcount snapshot by department and returns summary figures.

naftiko: '0.5'
info:
  label: Payroll Headcount Snapshot
  description: Queries Workday for a current payroll headcount snapshot by department and returns summary figures.
  tags:
  - hr
  - payroll
  - workday
  - headcount
  - finance
capability:
  exposes:
    type: mcp
    namespace: disney-payroll-headcount
    port: 8080
    tools:
    - name: get-payroll-headcount
      description: Returns active employee headcount by department from Workday payroll data.
      inputParameters:
      - name: department
        type: string
        description: Department to filter by (leave blank for all)
        required: false
        in: query
      - name: as_of_date
        type: string
        description: Effective date in YYYY-MM-DD format
        required: true
        in: query
      call: workday.getHeadcount
      outputParameters:
      - name: headcount_data
        mapping: $.data
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - path: /workers
      operations:
      - name: getHeadcount
        method: GET
Open in Framework → View in Fleet → payroll-headcount-snapshot.yml

Searches Splunk for security events across Disney infrastructure by severity and source.

naftiko: '0.5'
info:
  label: Splunk Security Event Search
  description: Searches Splunk for security events across Disney infrastructure by severity and source.
  tags:
  - security
  - splunk
  - siem
capability:
  exposes:
  - type: mcp
    namespace: security-events
    port: 8080
    tools:
    - name: search-events
      description: Search for security events in Splunk.
      inputParameters:
      - name: severity
        in: body
        type: string
        description: Event severity level.
      - name: source_system
        in: body
        type: string
        description: Source system name.
      call: splunk.search
      with:
        query: index=security severity={{severity}} source={{source_system}} earliest=-24h | stats count by event_type
      outputParameters:
      - name: results
        type: array
        mapping: $.results
  consumes:
  - namespace: splunk
    type: http
    baseUri: https://splunk.disney.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-security-event-search.yml

Submits a new position approval request in Workday, routes it to the finance team via Microsoft 365, and tracks approval status in Jira.

naftiko: '0.5'
info:
  label: Position Approval Request Orchestrator
  description: Submits a new position approval request in Workday, routes it to the finance team via Microsoft 365, and tracks approval status in Jira.
  tags:
  - hr
  - workday
  - microsoft-365
  - jira
  - headcount-planning
capability:
  exposes:
    type: mcp
    namespace: disney-position-approval
    port: 8080
    tools:
    - name: submit-position-approval
      description: Creates a new position in Workday, sends an approval email via Microsoft 365, and tracks the request in Jira.
      inputParameters:
      - name: job_title
        type: string
        description: Title for the new position
        required: true
        in: body
      - name: department
        type: string
        description: Requesting department
        required: true
        in: body
      - name: budget_code
        type: string
        description: Budget code for the position
        required: true
        in: body
      - name: finance_approver_email
        type: string
        description: Finance approver email address
        required: true
        in: body
      steps:
      - name: create-workday-position
        call: workday.createPosition
        with:
          jobTitle: '{{input.job_title}}'
          department: '{{input.department}}'
          budgetCode: '{{input.budget_code}}'
      - name: create-jira-tracking
        call: jira.createIssue
        with:
          project: HR
          issuetype: Task
          summary: 'Position approval: {{input.job_title}} in {{input.department}}'
          description: 'Workday position ID: {{create-workday-position.positionId}}. Budget code: {{input.budget_code}}'
      - name: send-approval-email
        call: microsoft-365.sendEmail
        with:
          to: '{{input.finance_approver_email}}'
          subject: 'Position Approval Required: {{input.job_title}}'
          body: 'Please approve new position {{input.job_title}} in {{input.department}}. Workday ID: {{create-workday-position.positionId}}. Jira tracking: {{create-jira-tracking.key}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - path: /positions
      operations:
      - name: createPosition
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: microsoft-365
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
Open in Framework → View in Fleet → position-approval-request-orchestrator.yml

Retrieves IT change request details from ServiceNow by change number.

naftiko: '0.5'
info:
  label: ServiceNow IT Change Lookup
  description: Retrieves IT change request details from ServiceNow by change number.
  tags:
  - itsm
  - servicenow
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: change-lookup
    port: 8080
    tools:
    - name: get-change
      description: Look up a change request in ServiceNow.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: Change request number.
      call: servicenow.get-change
      with:
        number: '{{change_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result[0].state
      - name: description
        type: string
        mapping: $.result[0].short_description
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/change_request
      operations:
      - name: get-change
        method: GET
Open in Framework → View in Fleet → servicenow-it-change-lookup.yml

Updates content ratings in Snowflake, syncs to Amazon S3 config, creates Jira release task, and notifies product team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney+ Parental Controls Update Pipeline
  description: Updates content ratings in Snowflake, syncs to Amazon S3 config, creates Jira release task, and notifies product team via Microsoft Teams.
  tags:
  - content-safety
  - snowflake
  - s3
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-disney-plus-parental
    port: 8080
    tools:
    - name: disney-plus-parental-controls-update
      description: Updates content ratings in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: update-ratings
        call: snowflake.execute-statement
        with:
          statement: UPDATE CONTENT.RATINGS SET parental_rating = '{{new_rating}}' WHERE title = '{{title}}'
      - name: sync-config
        call: s3.putObject
        with:
          bucket: streaming-config
          key: parental-controls/latest.json
      - name: create-task
        call: jira.createIssue
        with:
          project: PRODUCT
          summary: 'Parental controls update: {{title}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.product_channel
          text: 'Parental controls updated: {{title}} to {{new_rating}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-parental-controls-update-pipeline.yml

Triggers a Tableau extract refresh for box office performance dashboards.

naftiko: '0.5'
info:
  label: Tableau Box Office Dashboard Refresh
  description: Triggers a Tableau extract refresh for box office performance dashboards.
  tags:
  - analytics
  - tableau
  - box-office
capability:
  exposes:
  - type: mcp
    namespace: box-office-analytics
    port: 8080
    tools:
    - name: refresh-dashboard
      description: Trigger Tableau extract refresh for box office data.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau workbook ID.
      call: tableau.refresh-extract
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: job_id
        type: string
        mapping: $.job.id
  consumes:
  - namespace: tableau
    type: http
    baseUri: https://tableau.disney.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - path: /sites/default/workbooks/{{workbook_id}}/refresh
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → tableau-box-office-dashboard-refresh.yml

Queries Snowflake for subscriber churn metrics and posts a summary to the product analytics Slack channel.

naftiko: '0.5'
info:
  label: Disney+ Subscriber Churn Analytics
  description: Queries Snowflake for subscriber churn metrics and posts a summary to the product analytics Slack channel.
  tags:
  - analytics
  - streaming
  - snowflake
  - slack
  - churn
  - disney-plus
capability:
  exposes:
    type: mcp
    namespace: disney-plus-churn-analytics
    port: 8080
    tools:
    - name: post-churn-analytics-digest
      description: Retrieves 30-day subscriber churn and cancellation metrics from Snowflake and posts a digest to Slack.
      inputParameters:
      - name: time_period_days
        type: number
        description: Number of days to analyze for churn
        required: true
        in: body
      steps:
      - name: query-churn-metrics
        call: snowflake.executeQuery
        with:
          query: SELECT COUNT(*) AS churned_subscribers, AVG(tenure_days) AS avg_tenure, subscription_tier FROM disney_plus.churn_events WHERE event_date >= DATEADD(day, -{{input.time_period_days}}, CURRENT_DATE) GROUP BY subscription_tier
      - name: post-churn-digest
        call: slack.postMessage
        with:
          channel: '#product-analytics'
          text: 'Disney+ churn report ({{input.time_period_days}} days): {{query-churn-metrics.churned_subscribers}} churned subscribers. Avg tenure: {{query-churn-metrics.avg_tenure}} days.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: executeQuery
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → disney-subscriber-churn-analytics.yml

Collects feedback from Zendesk, analyzes in Snowflake, creates Salesforce follow-up, and notifies guest relations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Park Guest Feedback Response Pipeline
  description: Collects feedback from Zendesk, analyzes in Snowflake, creates Salesforce follow-up, and notifies guest relations via Microsoft Teams.
  tags:
  - guest-relations
  - zendesk
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-guest-feedback-respo
    port: 8080
    tools:
    - name: guest-feedback-response
      description: Collects feedback from Zendesk.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-feedback
        call: zendesk.getTicket
        with:
          ticket_id: '{{ticket_id}}'
      - name: analyze
        call: snowflake.execute-statement
        with:
          statement: SELECT sentiment_score FROM ML.SENTIMENT WHERE text = '{{get-feedback.description}}'
      - name: create-followup
        call: salesforce.createRecord
        with:
          object: Case
          subject: 'Guest feedback: {{ticket_id}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.guest_relations_channel
          text: 'Guest feedback: Ticket {{ticket_id}}. Case: {{create-followup.id}}.'
  consumes:
  - namespace: zendesk
    type: http
    baseUri: https://disney.zendesk.com/api/v2
    authentication:
      type: basic
      username: $secrets.zendesk_user
      password: $secrets.zendesk_api_token
    resources:
    - path: /tickets
      operations:
      - name: getTicket
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → park-guest-feedback-response-pipeline.yml

Submits a role change request in Workday and notifies the employee and their manager via Microsoft Teams when approval is complete.

naftiko: '0.5'
info:
  label: Workday Role Change Approval Workflow
  description: Submits a role change request in Workday and notifies the employee and their manager via Microsoft Teams when approval is complete.
  tags:
  - hr
  - workday
  - teams
  - role-change
  - approval
capability:
  exposes:
    type: mcp
    namespace: disney-role-change-approval
    port: 8080
    tools:
    - name: submit-role-change
      description: Creates a role change business process in Workday and sends Teams notifications to the employee and manager.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday employee ID
        required: true
        in: body
      - name: new_job_profile
        type: string
        description: New job profile/title
        required: true
        in: body
      - name: effective_date
        type: string
        description: Effective date in YYYY-MM-DD format
        required: true
        in: body
      - name: manager_email
        type: string
        description: Manager email for notification
        required: true
        in: body
      steps:
      - name: submit-workday-change
        call: workday.submitJobChange
        with:
          workerId: '{{input.employee_id}}'
          jobProfile: '{{input.new_job_profile}}'
          effectiveDate: '{{input.effective_date}}'
      - name: notify-manager
        call: microsoft-teams.sendMessage
        with:
          recipient: '{{input.manager_email}}'
          message: 'Role change submitted for employee {{input.employee_id}} to {{input.new_job_profile}}, effective {{input.effective_date}}. Workday reference: {{submit-workday-change.eventId}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - path: /workers/{workerId}/jobChange
      operations:
      - name: submitJobChange
        method: POST
  - namespace: microsoft-teams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /chats/sendMessage
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → workday-role-change-approval-workflow.yml

Runs Terraform via GitHub Actions, creates ServiceNow change request, deploys, and notifies SRE via Microsoft Teams.

naftiko: '0.5'
info:
  label: Infrastructure Change Deployment Pipeline
  description: Runs Terraform via GitHub Actions, creates ServiceNow change request, deploys, and notifies SRE via Microsoft Teams.
  tags:
  - infrastructure
  - github
  - servicenow
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-infrastructure-chang
    port: 8080
    tools:
    - name: infrastructure-change-deployment
      description: Runs Terraform via GitHub Actions.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: run-plan
        call: github.createWorkflowDispatch
        with:
          repo: '{{repo}}'
          workflow: terraform-plan.yml
      - name: create-change
        call: servicenow.createIncident
        with:
          short_description: 'Infra change: {{description}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.sre_channel
          text: 'Infra deployed: {{description}}. Change: {{create-change.number}}.'
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - path: /repos/actions/workflows/dispatches
      operations:
      - name: createWorkflowDispatch
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → infrastructure-change-deployment-pipeline.yml

Runs a Looker report for Disney merchandise sales by product line and region.

naftiko: '0.5'
info:
  label: Looker Merchandise Sales Report
  description: Runs a Looker report for Disney merchandise sales by product line and region.
  tags:
  - analytics
  - looker
  - merchandise
capability:
  exposes:
  - type: mcp
    namespace: merch-sales
    port: 8080
    tools:
    - name: get-sales-report
      description: Run a merchandise sales Look in Looker.
      inputParameters:
      - name: look_id
        in: body
        type: string
        description: Looker Look ID.
      call: looker.run-look
      with:
        look_id: '{{look_id}}'
      outputParameters:
      - name: data
        type: array
        mapping: $.data
  consumes:
  - namespace: looker
    type: http
    baseUri: https://disney.looker.com/api/4.0
    authentication:
      type: bearer
      token: $secrets.looker_token
    resources:
    - path: /looks/{{look_id}}/run/json
      operations:
      - name: run-look
        method: GET
Open in Framework → View in Fleet → looker-merchandise-sales-report.yml

Retrieves top-tier Salesforce accounts with open cases or at-risk health scores and posts a daily digest to the sales Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Account Health Digest
  description: Retrieves top-tier Salesforce accounts with open cases or at-risk health scores and posts a daily digest to the sales Teams channel.
  tags:
  - crm
  - salesforce
  - teams
  - account-health
  - sales
capability:
  exposes:
    type: mcp
    namespace: disney-account-health-digest
    port: 8080
    tools:
    - name: post-account-health-digest
      description: Queries Salesforce for at-risk accounts and posts a digest to the sales Teams channel.
      inputParameters:
      - name: health_score_threshold
        type: number
        description: Health score below which accounts are considered at-risk
        required: true
        in: body
      - name: teams_channel
        type: string
        description: Teams channel name to post the digest
        required: true
        in: body
      steps:
      - name: query-at-risk-accounts
        call: salesforce.queryAccounts
        with:
          health_score_lt: '{{input.health_score_threshold}}'
      - name: post-digest
        call: microsoft-teams.sendMessage
        with:
          channel: '{{input.teams_channel}}'
          message: 'Account Health Digest: {{query-at-risk-accounts.totalSize}} accounts below health threshold. Top accounts: {{query-at-risk-accounts.records}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /query
      operations:
      - name: queryAccounts
        method: GET
  - namespace: microsoft-teams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → salesforce-account-health-digest.yml

Checks rights in Snowflake, creates Salesforce licensing case, generates documents in SharePoint, and notifies music team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Music Licensing Clearance Pipeline
  description: Checks rights in Snowflake, creates Salesforce licensing case, generates documents in SharePoint, and notifies music team via Microsoft Teams.
  tags:
  - music-licensing
  - snowflake
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-music-licensing-clea
    port: 8080
    tools:
    - name: music-licensing-clearance
      description: Checks rights in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-rights
        call: snowflake.execute-statement
        with:
          statement: SELECT rights_holder, territory, expiry_date FROM MUSIC.RIGHTS WHERE track_id = '{{track_id}}'
      - name: create-case
        call: salesforce.createRecord
        with:
          object: Case
          subject: 'Music clearance: {{track_id}}'
      - name: create-doc
        call: sharepoint.createDocument
        with:
          site: music-licensing
          name: clearance-{{track_id}}.docx
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.music_channel
          text: 'Music clearance initiated: {{track_id}}. Case: {{create-case.id}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: sharepoint
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /sites/drive/items
      operations:
      - name: createDocument
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → music-licensing-clearance-pipeline.yml

Ingests content metadata into Snowflake, uploads media assets to Amazon S3, creates a QA task in Jira, and notifies the content team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney+ Content Onboarding Pipeline
  description: Ingests content metadata into Snowflake, uploads media assets to Amazon S3, creates a QA task in Jira, and notifies the content team via Microsoft Teams.
  tags:
  - content-management
  - snowflake
  - amazon-s3
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-content-onboarding
    port: 8080
    tools:
    - name: onboard-content
      description: Orchestrate Disney+ content onboarding workflow.
      inputParameters:
      - name: title
        type: string
        description: Content title
        in: body
      - name: content_type
        type: string
        description: Movie, series, or short
        in: body
      steps:
      - name: store-metadata
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO CONTENT.CATALOG (title, content_type, status) VALUES ('{{title}}', '{{content_type}}', 'pending_qa')
      - name: upload-assets
        call: s3.putObject
        with:
          bucket: disney-plus-content
          key: '{{content_type}}/{{title}}/master'
      - name: create-qa-task
        call: jira.createIssue
        with:
          project: CONTENT
          summary: 'QA: {{title}} ({{content_type}})'
      - name: notify-team
        call: msteams.sendMessage
        with:
          channel_id: $secrets.content_ops_channel
          text: 'Content onboarded: {{title}}. QA: {{create-qa-task.key}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-content-onboarding-pipeline.yml

Queries Snowflake for real-time theme park attendance data and sends a Twilio SMS alert to park operations managers when capacity thresholds are exceeded.

naftiko: '0.5'
info:
  label: Theme Park Capacity Alert and Staffing Notification
  description: Queries Snowflake for real-time theme park attendance data and sends a Twilio SMS alert to park operations managers when capacity thresholds are exceeded.
  tags:
  - theme-parks
  - operations
  - snowflake
  - twilio
  - capacity-management
capability:
  exposes:
    type: mcp
    namespace: disney-park-capacity-alert
    port: 8080
    tools:
    - name: send-capacity-alert
      description: Checks attendance data against capacity thresholds and sends an SMS alert to park operations managers.
      inputParameters:
      - name: park_id
        type: string
        description: Park identifier (e.g., magic-kingdom, epcot)
        required: true
        in: body
      - name: capacity_threshold_pct
        type: number
        description: Percentage threshold to trigger alert (e.g., 95)
        required: true
        in: body
      - name: manager_phone
        type: string
        description: Park manager phone number for SMS alert
        required: true
        in: body
      steps:
      - name: query-attendance
        call: snowflake.executeQuery
        with:
          query: SELECT park_id, current_attendance, max_capacity, ROUND(current_attendance/max_capacity*100,1) AS pct_full FROM parks.capacity WHERE park_id = '{{input.park_id}}'
      - name: send-sms-alert
        call: twilio.sendSms
        with:
          to: '{{input.manager_phone}}'
          from: $secrets.twilio_from_number
          body: 'CAPACITY ALERT: {{input.park_id}} is at {{query-attendance.pct_full}}% capacity. Immediate staffing review required.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: executeQuery
        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:
    - path: /Accounts/{AccountSid}/Messages.json
      operations:
      - name: sendSms
        method: POST
Open in Framework → View in Fleet → theme-park-capacity-alert-and-staffing-notification.yml

Updates schedule in Snowflake, configures Adobe Analytics tracking, creates Jira content prep tasks, and distributes via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney Channel Programming Schedule Pipeline
  description: Updates schedule in Snowflake, configures Adobe Analytics tracking, creates Jira content prep tasks, and distributes via Microsoft Teams.
  tags:
  - programming
  - snowflake
  - adobe-analytics
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-programming-schedule
    port: 8080
    tools:
    - name: programming-schedule
      description: Updates schedule in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: update-schedule
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO PROGRAMMING.SCHEDULE (channel, title, air_date) VALUES ('{{channel}}', '{{title}}', '{{air_date}}')
      - name: setup-tracking
        call: adobe-analytics.getReport
        with:
          segment: schedule-{{title}}
      - name: create-prep
        call: jira.createIssue
        with:
          project: PROG
          summary: 'Content prep: {{title}} on {{channel}}'
      - name: distribute
        call: msteams.sendMessage
        with:
          channel_id: $secrets.programming_channel
          text: 'Schedule: {{title}} on {{channel}} ({{air_date}}).'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /reports
      operations:
      - name: getReport
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-channel-programming-schedule-pipeline.yml

Retrieves license request from Salesforce, generates agreement in SharePoint, creates approval in Jira, and notifies legal via Microsoft Teams.

naftiko: '0.5'
info:
  label: Merchandise Licensing Approval Pipeline
  description: Retrieves license request from Salesforce, generates agreement in SharePoint, creates approval in Jira, and notifies legal via Microsoft Teams.
  tags:
  - licensing
  - salesforce
  - sharepoint
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-merchandise-licensin
    port: 8080
    tools:
    - name: merchandise-licensing-approval
      description: Retrieves license request from Salesforce.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-request
        call: salesforce.getOpportunity
        with:
          id: '{{request_id}}'
      - name: create-agreement
        call: sharepoint.createDocument
        with:
          site: licensing
          name: '{{get-request.name}}-agreement.docx'
      - name: create-approval
        call: jira.createIssue
        with:
          project: LEGAL
          summary: 'License approval: {{get-request.name}}'
      - name: notify-legal
        call: msteams.sendMessage
        with:
          channel_id: $secrets.legal_channel
          text: 'License approval needed. Jira: {{create-approval.key}}.'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: sharepoint
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /sites/drive/items
      operations:
      - name: createDocument
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → merchandise-licensing-approval-pipeline.yml

Triggers a GitHub Advanced Security scan on a specified repository and posts vulnerability findings to Teams.

naftiko: '0.5'
info:
  label: GitHub Repository Security Scan
  description: Triggers a GitHub Advanced Security scan on a specified repository and posts vulnerability findings to Teams.
  tags:
  - security
  - github
  - teams
  - devops
  - vulnerability-scanning
capability:
  exposes:
    type: mcp
    namespace: disney-github-security-scan
    port: 8080
    tools:
    - name: scan-repository-security
      description: Initiates a GitHub code scanning analysis and posts a summary of critical and high vulnerabilities to the security Teams channel.
      inputParameters:
      - name: org
        type: string
        description: GitHub organization name
        required: true
        in: body
      - name: repo
        type: string
        description: Repository name
        required: true
        in: body
      steps:
      - name: get-code-scanning-alerts
        call: github.getCodeScanningAlerts
        with:
          org: '{{input.org}}'
          repo: '{{input.repo}}'
          severity: critical,high
          state: open
      - name: post-security-summary
        call: microsoft-teams.sendMessage
        with:
          channel: security-engineering
          message: 'Security scan for {{input.org}}/{{input.repo}}: {{get-code-scanning-alerts.total_count}} critical/high alerts. Review: https://github.com/{{input.org}}/{{input.repo}}/security/code-scanning'
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - path: /repos/{org}/{repo}/code-scanning/alerts
      operations:
      - name: getCodeScanningAlerts
        method: GET
  - namespace: microsoft-teams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → github-repository-security-scan.yml

Publishes content metadata to Snowflake, updates Adobe Analytics tracking, creates a Salesforce marketing campaign, and announces on social media via LinkedIn.

naftiko: '0.5'
info:
  label: Content Release Pipeline
  description: Publishes content metadata to Snowflake, updates Adobe Analytics tracking, creates a Salesforce marketing campaign, and announces on social media via LinkedIn.
  tags:
  - content-release
  - snowflake
  - adobe-analytics
  - salesforce
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: content-release
    port: 8080
    tools:
    - name: release-content
      description: Orchestrate content release across Disney platforms.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Content title.
      - name: release_date
        in: body
        type: string
        description: Release date.
      - name: platform
        in: body
        type: string
        description: Release platform.
      steps:
      - name: publish-metadata
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO CONTENT.RELEASES (title, release_date, platform, status) VALUES ('{{title}}', '{{release_date}}', '{{platform}}', 'published')
      - name: setup-tracking
        call: adobe-analytics.createSegment
        with:
          name: release-{{title}}
          definition: content_title = '{{title}}'
      - name: create-campaign
        call: salesforce.create-campaign
        with:
          name: 'Release: {{title}}'
          start_date: '{{release_date}}'
          type: Content Release
      - name: announce
        call: linkedin.create-post
        with:
          text: 'Now streaming on {{platform}}: {{title}}! Watch today on Disney+.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /segments
      operations:
      - name: createSegment
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - path: /ugcPosts
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → content-release-pipeline.yml

Identifies churned subscribers in Snowflake, creates marketing campaign, tracks in Jira, and reports via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney+ Subscriber Win-Back Pipeline
  description: Identifies churned subscribers in Snowflake, creates marketing campaign, tracks in Jira, and reports via Microsoft Teams.
  tags:
  - subscriber-retention
  - snowflake
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-subscriber-win-back-
    port: 8080
    tools:
    - name: subscriber-win-back
      description: Identifies churned subscribers in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: find-churned
        call: snowflake.execute-statement
        with:
          statement: SELECT subscriber_id FROM STREAMING.CHURNED WHERE churn_date >= DATEADD(day, -30, CURRENT_DATE())
      - name: create-campaign
        call: salesforce.createCampaign
        with:
          name: Win-Back Campaign
          type: Retention
      - name: create-tracker
        call: jira.createIssue
        with:
          project: GROWTH
          summary: 'Win-back: {{find-churned.row_count}} targets'
      - name: report
        call: msteams.sendMessage
        with:
          channel_id: $secrets.growth_channel
          text: 'Win-back launched: {{find-churned.row_count}} targets. Jira: {{create-tracker.key}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-subscriber-win-back-pipeline.yml

Monitors brand mentions via Splunk, stores results in Snowflake, creates Jira action items, and alerts marketing via Microsoft Teams.

naftiko: '0.5'
info:
  label: Social Media Brand Monitoring Pipeline
  description: Monitors brand mentions via Splunk, stores results in Snowflake, creates Jira action items, and alerts marketing via Microsoft Teams.
  tags:
  - brand-monitoring
  - splunk
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-social-media-brand-m
    port: 8080
    tools:
    - name: social-media-brand-monitoring
      description: Monitors brand mentions via Splunk.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: search-mentions
        call: splunk.search
        with:
          query: index=social brand={{brand}} earliest=-24h | stats count by platform
      - name: store-results
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.BRAND_MENTIONS VALUES ('{{brand}}', CURRENT_DATE(), '{{search-mentions.count}}')
      - name: create-actions
        call: jira.createIssue
        with:
          project: MKT
          summary: 'Brand monitoring: {{brand}} - {{search-mentions.count}} mentions'
      - name: alert
        call: msteams.sendMessage
        with:
          channel_id: $secrets.marketing_channel
          text: 'Brand monitoring: {{brand}}. {{search-mentions.count}} mentions. Jira: {{create-actions.key}}.'
  consumes:
  - namespace: splunk
    type: http
    baseUri: https://splunk.disney.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - path: /search/jobs
      operations:
      - name: search
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → social-media-brand-monitoring-pipeline.yml

Retrieves the current on-call schedule from PagerDuty for a given service and returns the primary and secondary engineers.

naftiko: '0.5'
info:
  label: On-Call Schedule Lookup
  description: Retrieves the current on-call schedule from PagerDuty for a given service and returns the primary and secondary engineers.
  tags:
  - oncall
  - pagerduty
  - devops
  - incident-response
capability:
  exposes:
    type: mcp
    namespace: disney-oncall-lookup
    port: 8080
    tools:
    - name: get-oncall-schedule
      description: Returns the current primary and secondary on-call engineers for a given PagerDuty schedule.
      inputParameters:
      - name: schedule_id
        type: string
        description: PagerDuty schedule ID
        required: true
        in: query
      call: pagerduty.getOncalls
      outputParameters:
      - name: oncall_list
        mapping: $.oncalls
  consumes:
  - namespace: pagerduty
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - path: /oncalls
      operations:
      - name: getOncalls
        method: GET
Open in Framework → View in Fleet → on-call-schedule-lookup.yml

Queries Grafana for infrastructure metrics across Disney data centers and cloud environments.

naftiko: '0.5'
info:
  label: Grafana Infrastructure Dashboard Query
  description: Queries Grafana for infrastructure metrics across Disney data centers and cloud environments.
  tags:
  - monitoring
  - grafana
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infra-dashboard
    port: 8080
    tools:
    - name: query-dashboard
      description: Query a Grafana dashboard for infrastructure metrics.
      inputParameters:
      - name: dashboard_uid
        in: body
        type: string
        description: Grafana dashboard UID.
      call: grafana.get-dashboard
      with:
        uid: '{{dashboard_uid}}'
      outputParameters:
      - name: dashboard
        type: object
        mapping: $.dashboard
  consumes:
  - namespace: grafana
    type: http
    baseUri: https://grafana.disney.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - path: /dashboards/uid/{{uid}}
      operations:
      - name: get-dashboard
        method: GET
Open in Framework → View in Fleet → grafana-infrastructure-dashboard-query.yml

Retrieves an open guest complaint from Salesforce and escalates it via ServiceNow to the park operations team when SLA breach is imminent.

naftiko: '0.5'
info:
  label: Theme Park Guest Complaint Case Escalation
  description: Retrieves an open guest complaint from Salesforce and escalates it via ServiceNow to the park operations team when SLA breach is imminent.
  tags:
  - guest-experience
  - salesforce
  - servicenow
  - theme-parks
  - sla
capability:
  exposes:
    type: mcp
    namespace: disney-case-escalation
    port: 8080
    tools:
    - name: escalate-guest-complaint
      description: Fetches the Salesforce case, assesses SLA breach risk, and creates a ServiceNow escalation ticket for park operations.
      inputParameters:
      - name: case_id
        type: string
        description: Salesforce case ID
        required: true
        in: body
      - name: escalation_reason
        type: string
        description: Reason for escalation
        required: true
        in: body
      steps:
      - name: get-salesforce-case
        call: salesforce.getCase
        with:
          caseId: '{{input.case_id}}'
      - name: create-escalation-ticket
        call: servicenow.createIncident
        with:
          short_description: 'Guest complaint escalation: {{get-salesforce-case.Subject}}'
          description: '{{get-salesforce-case.Description}} | Reason: {{input.escalation_reason}}'
          urgency: '2'
          assignment_group: Park Operations
      - name: update-salesforce-case
        call: salesforce-update.updateCase
        with:
          caseId: '{{input.case_id}}'
          status: Escalated
          escalation_ticket: '{{create-escalation-ticket.ticketNumber}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects/Case/{caseId}
      operations:
      - name: getCase
        method: GET
  - namespace: salesforce-update
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects/Case/{caseId}
      operations:
      - name: updateCase
        method: PATCH
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
Open in Framework → View in Fleet → theme-park-guest-complaint-case-escalation.yml

Pulls inventory from SAP, syncs to Snowflake, creates Jira tasks for low stock, and alerts merchandising via Microsoft Teams.

naftiko: '0.5'
info:
  label: Disney Store Inventory Sync Pipeline
  description: Pulls inventory from SAP, syncs to Snowflake, creates Jira tasks for low stock, and alerts merchandising via Microsoft Teams.
  tags:
  - retail
  - sap
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-disney-store-invento
    port: 8080
    tools:
    - name: disney-store-inventory-sync
      description: Pulls inventory from SAP.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-inventory
        call: sap.getInventory
        with:
          plant: '{{store_id}}'
      - name: sync
        call: snowflake.execute-statement
        with:
          statement: MERGE INTO RETAIL.INVENTORY USING (VALUES ('{{store_id}}'))
      - name: flag-low
        call: jira.createIssue
        with:
          project: MERCH
          summary: 'Low stock: Store {{store_id}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.merch_channel
          text: 'Inventory synced: Store {{store_id}}. Low stock flagged.'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: operation
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → disney-store-inventory-sync-pipeline.yml

Retrieves the status and details of a ServiceNow IT ticket by ticket number.

naftiko: '0.5'
info:
  label: ServiceNow IT Ticket Lookup
  description: Retrieves the status and details of a ServiceNow IT ticket by ticket number.
  tags:
  - itsm
  - servicenow
  - it-support
capability:
  exposes:
    type: mcp
    namespace: disney-ticket-lookup
    port: 8080
    tools:
    - name: lookup-it-ticket
      description: Fetches the current status, priority, and assignment of a ServiceNow incident ticket.
      inputParameters:
      - name: ticket_number
        type: string
        description: ServiceNow ticket number (e.g., INC0012345)
        required: true
        in: query
      call: servicenow.getIncident
      outputParameters:
      - name: ticket
        mapping: $.result
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: getIncident
        method: GET
Open in Framework → View in Fleet → servicenow-it-ticket-lookup.yml

Queries Snowflake bookings, updates Salesforce pipeline, refreshes Power BI dashboards, and alerts revenue team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Cruise Line Booking Analytics Pipeline
  description: Queries Snowflake bookings, updates Salesforce pipeline, refreshes Power BI dashboards, and alerts revenue team via Microsoft Teams.
  tags:
  - cruise-line
  - snowflake
  - salesforce
  - power-bi
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-cruise-booking-analy
    port: 8080
    tools:
    - name: cruise-booking-analytics
      description: Queries Snowflake bookings.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-bookings
        call: snowflake.execute-statement
        with:
          statement: SELECT voyage, bookings, revenue FROM CRUISE.BOOKING_SUMMARY WHERE voyage_date >= CURRENT_DATE()
      - name: update-pipeline
        call: salesforce.createRecord
        with:
          object: Opportunity
          data: '{{get-bookings.results}}'
      - name: refresh
        call: powerbi.refreshDataset
        with:
          group_id: $secrets.powerbi_workspace_id
          dataset_id: $secrets.cruise_dataset_id
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.cruise_channel
          text: 'Booking update: {{get-bookings.row_count}} voyages tracked.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: powerbi
    type: http
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - path: /groups/datasets/refreshes
      operations:
      - name: refreshDataset
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → cruise-line-booking-analytics-pipeline.yml

Retrieves health metrics for Disney+ streaming infrastructure from Datadog including latency, error rates, and uptime.

naftiko: '0.5'
info:
  label: Datadog Streaming Service Health
  description: Retrieves health metrics for Disney+ streaming infrastructure from Datadog including latency, error rates, and uptime.
  tags:
  - monitoring
  - datadog
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: streaming-health
    port: 8080
    tools:
    - name: get-service-health
      description: Look up streaming service health metrics from Datadog.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Streaming service name.
      call: datadog.query-metrics
      with:
        query: avg:streaming.health{service:{{service_name}}}
      outputParameters:
      - name: latency_ms
        type: number
        mapping: $.series[0].pointlist[-1][1]
      - name: error_rate
        type: number
        mapping: $.series[1].pointlist[-1][1]
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
      placement: header
      name: DD-API-KEY
    resources:
    - path: /query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-streaming-service-health.yml

Queries the Snowflake content catalog for Disney titles by genre, release year, or franchise.

naftiko: '0.5'
info:
  label: Snowflake Content Catalog Query
  description: Queries the Snowflake content catalog for Disney titles by genre, release year, or franchise.
  tags:
  - analytics
  - snowflake
  - content-catalog
capability:
  exposes:
  - type: mcp
    namespace: content-catalog
    port: 8080
    tools:
    - name: search-catalog
      description: Search the content catalog in Snowflake.
      inputParameters:
      - name: genre
        in: body
        type: string
        description: Content genre.
      - name: franchise
        in: body
        type: string
        description: Franchise name.
      call: snowflake.execute-statement
      with:
        statement: SELECT title, genre, release_date, franchise, rating FROM CONTENT.CATALOG WHERE genre = '{{genre}}' AND franchise LIKE '%{{franchise}}%' ORDER BY release_date DESC
      outputParameters:
      - name: titles
        type: array
        mapping: $.data
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
Open in Framework → View in Fleet → snowflake-content-catalog-query.yml

Transfers assets from Amazon S3, updates Jira tracker, creates Confluence handoff notes, and notifies post-production via Microsoft Teams.

naftiko: '0.5'
info:
  label: Studio Post-Production Handoff Pipeline
  description: Transfers assets from Amazon S3, updates Jira tracker, creates Confluence handoff notes, and notifies post-production via Microsoft Teams.
  tags:
  - post-production
  - s3
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-post-production-hand
    port: 8080
    tools:
    - name: post-production-handoff
      description: Transfers assets from Amazon S3.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: transfer
        call: s3.putObject
        with:
          bucket: post-production
          key: '{{production_id}}/final'
      - name: update-tracker
        call: jira.createIssue
        with:
          project: PROD
          summary: 'Handoff: {{production_name}}'
      - name: create-handoff
        call: confluence.createPage
        with:
          space: PROD
          title: 'Handoff: {{production_name}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.post_prod_channel
          text: 'Handoff: {{production_name}}. Notes: {{create-handoff.web_url}}.'
  consumes:
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → studio-post-production-handoff-pipeline.yml

Runs demand forecasting in Snowflake, creates SAP purchase requisitions, updates Jira supply chain tracker, and notifies merchandising via Microsoft Teams.

naftiko: '0.5'
info:
  label: Consumer Products Demand Forecast Pipeline
  description: Runs demand forecasting in Snowflake, creates SAP purchase requisitions, updates Jira supply chain tracker, and notifies merchandising via Microsoft Teams.
  tags:
  - consumer-products
  - snowflake
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-demand-forecast
    port: 8080
    tools:
    - name: run-forecast
      description: Orchestrate consumer products demand forecasting.
      inputParameters:
      - name: product_line
        type: string
        description: Product line name
        in: body
      - name: season
        type: string
        description: Target season
        in: body
      steps:
      - name: forecast
        call: snowflake.execute-statement
        with:
          statement: SELECT sku, predicted_demand, confidence FROM MERCH.DEMAND_FORECAST WHERE product_line = '{{product_line}}' AND season = '{{season}}'
      - name: create-reqs
        call: sap.createEvent
        with:
          type: PR
          product_line: '{{product_line}}'
          items: '{{forecast.results}}'
      - name: update-tracker
        call: jira.createIssue
        with:
          project: SUPPLY
          summary: 'Demand forecast: {{product_line}} - {{season}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.merch_planning_channel
          text: 'Demand forecast: {{product_line}} ({{season}}). {{forecast.row_count}} SKUs. Jira: {{update-tracker.key}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: createEvent
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → consumer-products-demand-forecast-pipeline.yml

Queries expiring rights in Snowflake, creates Jira renewal tasks, alerts legal via Microsoft Outlook, and updates Salesforce.

naftiko: '0.5'
info:
  label: Content Rights Expiration Pipeline
  description: Queries expiring rights in Snowflake, creates Jira renewal tasks, alerts legal via Microsoft Outlook, and updates Salesforce.
  tags:
  - rights-management
  - snowflake
  - jira
  - outlook
  - salesforce
capability:
  exposes:
    type: mcp
    namespace: disney-content-rights-expir
    port: 8080
    tools:
    - name: content-rights-expiration
      description: Queries expiring rights in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: find-expiring
        call: snowflake.execute-statement
        with:
          statement: SELECT title, expiration_date FROM RIGHTS.CONTENT_RIGHTS WHERE expiration_date BETWEEN CURRENT_DATE() AND DATEADD(day, 90, CURRENT_DATE())
      - name: create-tasks
        call: jira.createIssue
        with:
          project: RIGHTS
          summary: 'Expiring rights: {{find-expiring.row_count}} titles'
      - name: alert-legal
        call: outlook.sendEmail
        with:
          to: $secrets.rights_legal_email
          subject: Content Rights Expiring
      - name: update-sf
        call: salesforce.createRecord
        with:
          object: Task
          subject: Rights renewal review
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: outlook
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
Open in Framework → View in Fleet → content-rights-expiration-pipeline.yml

Pulls Disney+ streaming engagement metrics from Snowflake and refreshes the executive Power BI dashboard.

naftiko: '0.5'
info:
  label: Streaming Content Performance Dashboard Refresh
  description: Pulls Disney+ streaming engagement metrics from Snowflake and refreshes the executive Power BI dashboard.
  tags:
  - analytics
  - streaming
  - snowflake
  - power-bi
  - disney-plus
capability:
  exposes:
    type: mcp
    namespace: disney-streaming-dashboard
    port: 8080
    tools:
    - name: refresh-streaming-dashboard
      description: Queries Snowflake for Disney+ content performance metrics and triggers a Power BI dataset refresh.
      inputParameters:
      - name: report_date
        type: string
        description: Date for the report in YYYY-MM-DD format
        required: true
        in: body
      - name: dataset_id
        type: string
        description: Power BI dataset ID to refresh
        required: true
        in: body
      steps:
      - name: query-streaming-metrics
        call: snowflake.executeQuery
        with:
          query: SELECT content_id, title, total_streams, watch_time_minutes, unique_viewers FROM disney_plus.content_performance WHERE report_date = '{{input.report_date}}'
      - name: refresh-powerbi
        call: power-bi.refreshDataset
        with:
          datasetId: '{{input.dataset_id}}'
          notifyOption: MailOnFailure
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: executeQuery
        method: POST
  - namespace: power-bi
    type: http
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - path: /datasets/{datasetId}/refreshes
      operations:
      - name: refreshDataset
        method: POST
Open in Framework → View in Fleet → streaming-content-performance-dashboard-refresh.yml

Sends surveys via Salesforce Marketing Cloud, collects responses in Snowflake, generates analysis in Confluence, and reports via Microsoft Teams.

naftiko: '0.5'
info:
  label: Park Visitor Experience Survey Pipeline
  description: Sends surveys via Salesforce Marketing Cloud, collects responses in Snowflake, generates analysis in Confluence, and reports via Microsoft Teams.
  tags:
  - guest-experience
  - salesforce-marketing-cloud
  - snowflake
  - confluence
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-park-visitor-survey-
    port: 8080
    tools:
    - name: park-visitor-survey
      description: Sends surveys via Salesforce Marketing Cloud.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: send-survey
        call: sfmc.sendEmail
        with:
          campaign: park-survey
          segment: '{{park}}-visitors'
      - name: collect-responses
        call: snowflake.execute-statement
        with:
          statement: SELECT rating, COUNT(*) FROM SURVEY.RESPONSES WHERE park = '{{park}}' GROUP BY rating
      - name: create-report
        call: confluence.createPage
        with:
          space: PARKS
          title: 'Survey: {{park}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.parks_channel
          text: 'Survey results published. Report: {{create-report.web_url}}.'
  consumes:
  - namespace: sfmc
    type: http
    baseUri: https://disney.rest.marketingcloudapis.com
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - path: /messaging/v1/email/messages
      operations:
      - name: sendEmail
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → park-visitor-experience-survey-pipeline.yml

Generates presigned URLs for media assets stored in Amazon S3 for Disney content distribution.

naftiko: '0.5'
info:
  label: Amazon S3 Media Asset Retrieval
  description: Generates presigned URLs for media assets stored in Amazon S3 for Disney content distribution.
  tags:
  - storage
  - amazon-s3
  - media-assets
capability:
  exposes:
  - type: mcp
    namespace: media-assets
    port: 8080
    tools:
    - name: get-asset-url
      description: Generate a presigned URL for an S3 media asset.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: S3 bucket name.
      - name: key
        in: body
        type: string
        description: S3 object key.
      call: s3.get-presigned-url
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
      outputParameters:
      - name: presigned_url
        type: string
        mapping: $.url
  consumes:
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /{{bucket}}/{{key}}
      operations:
      - name: get-presigned-url
        method: GET
Open in Framework → View in Fleet → amazon-s3-media-asset-retrieval.yml

Uploads dailies to Amazon S3, creates review tasks in Jira, documents notes in Confluence, and notifies the director and producers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Studio Dailies Review Pipeline
  description: Uploads dailies to Amazon S3, creates review tasks in Jira, documents notes in Confluence, and notifies the director and producers via Microsoft Teams.
  tags:
  - production
  - amazon-s3
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-dailies
    port: 8080
    tools:
    - name: process-dailies
      description: Orchestrate studio dailies review workflow.
      inputParameters:
      - name: production_id
        type: string
        description: Production identifier
        in: body
      - name: shoot_date
        type: string
        description: Shooting date
        in: body
      steps:
      - name: upload-dailies
        call: s3.putObject
        with:
          bucket: production-dailies
          key: '{{production_id}}/{{shoot_date}}'
      - name: create-review
        call: jira.createIssue
        with:
          project: PROD
          summary: 'Dailies review: {{production_id}} - {{shoot_date}}'
      - name: create-notes
        call: confluence.createPage
        with:
          space: PROD
          title: 'Dailies: {{production_id}} - {{shoot_date}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.production_channel
          text: 'Dailies uploaded: {{production_id}} ({{shoot_date}}). Review: {{create-review.key}}.'
  consumes:
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → studio-dailies-review-pipeline.yml

Monitors render queue in Datadog, scales AWS instances, updates Jira tracker, and notifies animation team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Animation Render Farm Scaling Pipeline
  description: Monitors render queue in Datadog, scales AWS instances, updates Jira tracker, and notifies animation team via Microsoft Teams.
  tags:
  - animation
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-animation-render-sca
    port: 8080
    tools:
    - name: animation-render-scaling
      description: Monitors render queue in Datadog.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-queue
        call: datadog.queryMetrics
        with:
          query: avg:render.queue_depth{studio:animation}
      - name: update-tracker
        call: jira.createIssue
        with:
          project: ANIM
          summary: 'Render farm scaling: queue {{check-queue.value}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.animation_channel
          text: 'Render farm scaled. Queue: {{check-queue.value}} jobs.'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
    resources:
    - path: /query
      operations:
      - name: queryMetrics
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → animation-render-farm-scaling-pipeline.yml

Creates partner in Salesforce, provisions API access, documents in Confluence, and notifies partnerships via Microsoft Teams.

naftiko: '0.5'
info:
  label: Media Distribution Partner Onboarding Pipeline
  description: Creates partner in Salesforce, provisions API access, documents in Confluence, and notifies partnerships via Microsoft Teams.
  tags:
  - distribution
  - salesforce
  - confluence
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-media-distribution-p
    port: 8080
    tools:
    - name: media-distribution-partner-onboarding
      description: Creates partner in Salesforce.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: create-partner
        call: salesforce.createRecord
        with:
          object: Account
          name: '{{partner_name}}'
          type: Distribution Partner
      - name: create-docs
        call: confluence.createPage
        with:
          space: DIST
          title: 'Partner: {{partner_name}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.partnerships_channel
          text: 'New partner: {{partner_name}}. Docs: {{create-docs.web_url}}.'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → media-distribution-partner-onboarding-pipeline.yml

Retrieves a purchase order from SAP S/4HANA by PO number and returns the line item details.

naftiko: '0.5'
info:
  label: SAP Purchase Order Lookup
  description: Retrieves a purchase order from SAP S/4HANA by PO number and returns the line item details.
  tags:
  - erp
  - sap
  - procurement
  - finance
capability:
  exposes:
    type: mcp
    namespace: disney-sap-po-lookup
    port: 8080
    tools:
    - name: lookup-purchase-order
      description: Fetches a purchase order and its line items from SAP S/4HANA.
      inputParameters:
      - name: po_number
        type: string
        description: SAP purchase order number
        required: true
        in: query
      call: sap.getPurchaseOrder
      outputParameters:
      - name: po_details
        mapping: $.value
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney.s4hana.ondemand.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /A_PurchaseOrder('{po_number}')
      operations:
      - name: getPurchaseOrder
        method: GET
Open in Framework → View in Fleet → sap-purchase-order-lookup.yml

Pulls project milestones from Jira, generates a review document in Confluence, refreshes Tableau dashboards, and notifies Imagineering leadership via Microsoft Teams.

naftiko: '0.5'
info:
  label: Imagineering Project Review Pipeline
  description: Pulls project milestones from Jira, generates a review document in Confluence, refreshes Tableau dashboards, and notifies Imagineering leadership via Microsoft Teams.
  tags:
  - imagineering
  - jira
  - confluence
  - tableau
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-imagineering
    port: 8080
    tools:
    - name: generate-review
      description: Orchestrate Imagineering project review.
      inputParameters:
      - name: project_key
        type: string
        description: Jira project key
        in: body
      steps:
      - name: get-milestones
        call: jira.createIssue
        with:
          project: '{{project_key}}'
          summary: Milestone review
      - name: create-review
        call: confluence.createPage
        with:
          space: IMAGINE
          title: 'Project Review: {{project_key}}'
      - name: refresh-dashboard
        call: tableau.refreshExtract
        with:
          workbook_id: $secrets.imagineering_workbook_id
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.imagineering_channel
          text: 'Project review: {{project_key}}. Report: {{create-review.web_url}}.'
  consumes:
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: tableau
    type: http
    baseUri: https://tableau.disney.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - path: /sites/default/workbooks/refresh
      operations:
      - name: refreshExtract
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → imagineering-project-review-pipeline.yml

Retrieves content performance metrics from Adobe Analytics for a specified time range and content asset.

naftiko: '0.5'
info:
  label: Adobe Analytics Content Performance Lookup
  description: Retrieves content performance metrics from Adobe Analytics for a specified time range and content asset.
  tags:
  - analytics
  - adobe-analytics
  - content
  - media
capability:
  exposes:
    type: mcp
    namespace: disney-content-performance
    port: 8080
    tools:
    - name: get-content-performance
      description: Fetches page views, time on page, and engagement metrics from Adobe Analytics for a content asset.
      inputParameters:
      - name: report_suite_id
        type: string
        description: Adobe Analytics report suite ID
        required: true
        in: query
      - name: asset_id
        type: string
        description: Content asset identifier
        required: true
        in: query
      - name: date_range
        type: string
        description: Date range in ISO 8601 interval format
        required: true
        in: query
      call: adobe-analytics.getReport
      outputParameters:
      - name: metrics
        mapping: $.rows
  consumes:
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /{report_suite_id}/reports
      operations:
      - name: getReport
        method: POST
Open in Framework → View in Fleet → adobe-analytics-content-performance-lookup.yml

Retrieves employee profile information from Workday including department, title, and manager.

naftiko: '0.5'
info:
  label: Workday Employee Directory Lookup
  description: Retrieves employee profile information from Workday including department, title, and manager.
  tags:
  - hr
  - workday
  - directory
capability:
  exposes:
  - type: mcp
    namespace: employee-directory
    port: 8080
    tools:
    - name: lookup-employee
      description: Look up employee details in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-worker
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Worker[0].Name
      - name: department
        type: string
        mapping: $.Worker[0].Department
      - name: title
        type: string
        mapping: $.Worker[0].Job_Title
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources/Worker/{{employee_id}}
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-employee-directory-lookup.yml

Retrieves a pending expense report from SAP Concur and routes it for manager approval via Microsoft 365 email.

naftiko: '0.5'
info:
  label: Expense Report Approval Workflow
  description: Retrieves a pending expense report from SAP Concur and routes it for manager approval via Microsoft 365 email.
  tags:
  - finance
  - sap-concur
  - microsoft-365
  - expense-management
  - approval
capability:
  exposes:
    type: mcp
    namespace: disney-expense-approval
    port: 8080
    tools:
    - name: route-expense-for-approval
      description: Fetches a pending expense report from SAP Concur and sends an approval request to the manager via email.
      inputParameters:
      - name: expense_report_id
        type: string
        description: SAP Concur expense report ID
        required: true
        in: body
      - name: manager_email
        type: string
        description: Manager email address for approval routing
        required: true
        in: body
      steps:
      - name: get-expense-report
        call: sap-concur.getExpenseReport
        with:
          reportId: '{{input.expense_report_id}}'
      - name: send-approval-request
        call: microsoft-365.sendEmail
        with:
          to: '{{input.manager_email}}'
          subject: 'Expense Approval Required: {{get-expense-report.Name}} — ${{get-expense-report.Total}}'
          body: 'Please approve expense report {{input.expense_report_id}} submitted by {{get-expense-report.OwnerName}} for ${{get-expense-report.Total}}. Policy: {{get-expense-report.PolicyName}}'
  consumes:
  - namespace: sap-concur
    type: http
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - path: /expense/reports/{reportId}
      operations:
      - name: getExpenseReport
        method: GET
  - namespace: microsoft-365
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
Open in Framework → View in Fleet → expense-report-approval-workflow.yml

Exports creative assets from a Figma file for Disney marketing and merchandising use.

naftiko: '0.5'
info:
  label: Figma Creative Asset Export
  description: Exports creative assets from a Figma file for Disney marketing and merchandising use.
  tags:
  - design
  - figma
  - creative
capability:
  exposes:
  - type: mcp
    namespace: figma-export
    port: 8080
    tools:
    - name: export-assets
      description: Export images from a Figma file.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: Figma file key.
      - name: node_ids
        in: body
        type: string
        description: Comma-separated node IDs to export.
      call: figma.get-images
      with:
        file_key: '{{file_key}}'
        ids: '{{node_ids}}'
      outputParameters:
      - name: images
        type: object
        mapping: $.images
  consumes:
  - namespace: figma
    type: http
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - path: /images/{{file_key}}
      operations:
      - name: get-images
        method: GET
Open in Framework → View in Fleet → figma-creative-asset-export.yml

Triggers a Power BI dataset refresh for Disney audience analytics dashboards.

naftiko: '0.5'
info:
  label: Power BI Audience Analytics Refresh
  description: Triggers a Power BI dataset refresh for Disney audience analytics dashboards.
  tags:
  - analytics
  - power-bi
  - audience
capability:
  exposes:
  - type: mcp
    namespace: audience-analytics
    port: 8080
    tools:
    - name: refresh-audience-dashboard
      description: Trigger Power BI refresh for audience analytics.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      call: powerbi.refresh-dataset
      with:
        group_id: $secrets.powerbi_workspace_id
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: request_id
        type: string
        mapping: $.requestId
  consumes:
  - namespace: powerbi
    type: http
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → power-bi-audience-analytics-refresh.yml

Checks inventory in SAP, creates purchase orders, updates Snowflake analytics, and notifies F&B managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Park Food and Beverage Ordering Pipeline
  description: Checks inventory in SAP, creates purchase orders, updates Snowflake analytics, and notifies F&B managers via Microsoft Teams.
  tags:
  - food-beverage
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-park-food-beverage-o
    port: 8080
    tools:
    - name: park-food-beverage-ordering
      description: Checks inventory in SAP.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-inv
        call: sap.getInventory
        with:
          plant: '{{park}}'
          category: food_beverage
      - name: create-orders
        call: sap.createEvent
        with:
          type: PO
          plant: '{{park}}'
      - name: update
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO PARKS.FB_ORDERS VALUES ('{{park}}', CURRENT_DATE())
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.fb_channel
          text: F&B orders placed for {{park}}.
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: operation
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → park-food-and-beverage-ordering-pipeline.yml

Checks render status in Datadog, pulls shot completion from Snowflake, updates Jira board, and notifies VFX supervisor via Microsoft Teams.

naftiko: '0.5'
info:
  label: VFX Pipeline Status Pipeline
  description: Checks render status in Datadog, pulls shot completion from Snowflake, updates Jira board, and notifies VFX supervisor via Microsoft Teams.
  tags:
  - vfx
  - datadog
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-vfx-pipeline-status-
    port: 8080
    tools:
    - name: vfx-status
      description: Checks render status in Datadog.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-renders
        call: datadog.queryMetrics
        with:
          query: sum:vfx.render.completed{production:{{production_id}}}
      - name: get-shots
        call: snowflake.execute-statement
        with:
          statement: SELECT shot_name, status FROM VFX.SHOT_TRACKER WHERE production_id = '{{production_id}}'
      - name: update-board
        call: jira.createIssue
        with:
          project: VFX
          summary: 'VFX status: {{production_id}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.vfx_channel
          text: 'VFX update: {{production_id}}. Renders: {{check-renders.value}}.'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
    resources:
    - path: /query
      operations:
      - name: queryMetrics
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → vfx-pipeline-status-pipeline.yml

Creates contract in Salesforce, generates documents in SharePoint, sends for signature via DocuSign, and notifies talent relations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Celebrity Talent Contract Pipeline
  description: Creates contract in Salesforce, generates documents in SharePoint, sends for signature via DocuSign, and notifies talent relations via Microsoft Teams.
  tags:
  - talent
  - salesforce
  - sharepoint
  - docusign
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-celebrity-talent-con
    port: 8080
    tools:
    - name: celebrity-talent-contract
      description: Creates contract in Salesforce.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: create-contract
        call: salesforce.createRecord
        with:
          object: Contract
          talent: '{{talent_name}}'
          production: '{{production}}'
      - name: generate-doc
        call: sharepoint.createDocument
        with:
          site: talent-contracts
          name: '{{talent_name}}-contract.docx'
      - name: send-signature
        call: docusign.createEnvelope
        with:
          document_url: '{{generate-doc.web_url}}'
          signer_email: '{{talent_email}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.talent_channel
          text: 'Contract sent: {{talent_name}}. DocuSign: {{send-signature.envelope_id}}.'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: sharepoint
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /sites/drive/items
      operations:
      - name: createDocument
        method: POST
  - namespace: docusign
    type: http
    baseUri: https://na3.docusign.net/restapi/v2.1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - path: /accounts/envelopes
      operations:
      - name: createEnvelope
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → celebrity-talent-contract-pipeline.yml

Creates travel request in SAP Concur, checks policy in Workday, creates Jira approval, and notifies manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Corporate Travel Booking Pipeline
  description: Creates travel request in SAP Concur, checks policy in Workday, creates Jira approval, and notifies manager via Microsoft Teams.
  tags:
  - travel
  - concur
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-corporate-travel-boo
    port: 8080
    tools:
    - name: corporate-travel-booking
      description: Creates travel request in SAP Concur.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: create-request
        call: concur.createRequest
        with:
          employee_id: '{{employee_id}}'
          destination: '{{destination}}'
      - name: check-policy
        call: workday.getWorker
        with:
          employee_id: '{{employee_id}}'
      - name: create-approval
        call: jira.createIssue
        with:
          project: TRAVEL
          summary: 'Travel: {{employee_id}} to {{destination}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.travel_channel
          text: 'Travel request: {{destination}}. Approval: {{create-approval.key}}.'
  consumes:
  - namespace: concur
    type: http
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - path: /travelrequest
      operations:
      - name: createRequest
        method: POST
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → corporate-travel-booking-pipeline.yml

Retrieves unestimated backlog items from Jira and posts a grooming digest to the product team Slack channel.

naftiko: '0.5'
info:
  label: Jira Backlog Grooming Digest
  description: Retrieves unestimated backlog items from Jira and posts a grooming digest to the product team Slack channel.
  tags:
  - jira
  - agile
  - backlog
  - slack
  - product-management
capability:
  exposes:
    type: mcp
    namespace: disney-backlog-digest
    port: 8080
    tools:
    - name: post-backlog-grooming-digest
      description: Fetches unestimated Jira backlog items and posts a grooming digest to the product Slack channel.
      inputParameters:
      - name: project_key
        type: string
        description: Jira project key
        required: true
        in: body
      steps:
      - name: get-unestimated-backlog
        call: jira.searchIssues
        with:
          jql: project = {{input.project_key}} AND status = Backlog AND story_points is EMPTY ORDER BY priority DESC
          maxResults: 20
      - name: post-backlog-digest
        call: slack.postMessage
        with:
          channel: '#product-backlog'
          text: 'Backlog grooming needed for {{input.project_key}}: {{get-unestimated-backlog.total}} unestimated items. Top items: {{get-unestimated-backlog.issues}}'
  consumes:
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - path: /search
      operations:
      - name: searchIssues
        method: GET
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → jira-backlog-grooming-digest.yml

Detects cloud cost anomalies from Datadog, creates a Jira ticket for cost review, and notifies the FinOps team in Slack.

naftiko: '0.5'
info:
  label: Azure Cloud Cost Anomaly Responder
  description: Detects cloud cost anomalies from Datadog, creates a Jira ticket for cost review, and notifies the FinOps team in Slack.
  tags:
  - finops
  - cloud-cost
  - datadog
  - jira
  - slack
capability:
  exposes:
    type: mcp
    namespace: disney-cloud-cost-anomaly
    port: 8080
    tools:
    - name: respond-to-cost-anomaly
      description: Fetches cost anomaly events from Datadog, opens a Jira cost review ticket, and alerts the FinOps Slack channel.
      inputParameters:
      - name: alert_id
        type: string
        description: Datadog cost anomaly alert ID
        required: true
        in: body
      - name: jira_project_key
        type: string
        description: Jira project key for cost review tickets
        required: true
        in: body
      steps:
      - name: get-cost-alert
        call: datadog.getEvent
        with:
          event_id: '{{input.alert_id}}'
      - name: create-cost-review-ticket
        call: jira.createIssue
        with:
          project: '{{input.jira_project_key}}'
          issuetype: Task
          summary: 'Cloud cost anomaly detected: {{get-cost-alert.title}}'
          description: '{{get-cost-alert.text}}'
      - name: notify-finops
        call: slack.postMessage
        with:
          channel: '#finops-alerts'
          text: 'Cost anomaly detected: {{get-cost-alert.title}}. Jira review ticket: {{create-cost-review-ticket.key}}'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
      placement: header
      name: DD-API-KEY
    resources:
    - path: /events/{event_id}
      operations:
      - name: getEvent
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → azure-cloud-cost-anomaly-responder.yml

Monitors reservations in Snowflake, adjusts capacity limits, updates ServiceNow alerts, and notifies park operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Theme Park Reservation Capacity Pipeline
  description: Monitors reservations in Snowflake, adjusts capacity limits, updates ServiceNow alerts, and notifies park operations via Microsoft Teams.
  tags:
  - parks-reservations
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-theme-park-reservati
    port: 8080
    tools:
    - name: theme-park-reservation-capacity
      description: Monitors reservations in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-reservations
        call: snowflake.execute-statement
        with:
          statement: SELECT park, reservation_count, capacity FROM PARKS.RESERVATIONS WHERE date = '{{target_date}}'
      - name: adjust-capacity
        call: snowflake.execute-statement
        with:
          statement: UPDATE PARKS.CAPACITY SET available = max_capacity - {{check-reservations.results[0].reservation_count}} WHERE park = '{{park}}'
      - name: create-alert
        call: servicenow.createIncident
        with:
          short_description: 'Capacity alert: {{park}} on {{target_date}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.park_ops_channel
          text: 'Capacity update: {{park}} on {{target_date}}. Reservations: {{check-reservations.results[0].reservation_count}}.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → theme-park-reservation-capacity-pipeline.yml

Assigns Pluralsight courses based on Workday role, creates Jira development plan, and notifies via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Learning Path Pipeline
  description: Assigns Pluralsight courses based on Workday role, creates Jira development plan, and notifies via Microsoft Teams.
  tags:
  - learning
  - workday
  - pluralsight
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-employee-learning-pa
    port: 8080
    tools:
    - name: employee-learning-path
      description: Assigns Pluralsight courses based on Workday role.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-role
        call: workday.getWorker
        with:
          employee_id: '{{employee_id}}'
      - name: assign
        call: pluralsight.assignPath
        with:
          email: '{{get-role.email}}'
          path: '{{learning_path}}'
      - name: create-plan
        call: jira.createIssue
        with:
          project: LEARN
          summary: 'Dev plan: {{get-role.name}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.hr_channel
          text: 'Learning path assigned: {{get-role.name}}. Jira: {{create-plan.key}}.'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: pluralsight
    type: http
    baseUri: https://api.pluralsight.com/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - path: /paths
      operations:
      - name: assignPath
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → employee-learning-path-pipeline.yml

Runs a data quality validation query on a Snowflake table and posts results to the data engineering Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Check
  description: Runs a data quality validation query on a Snowflake table and posts results to the data engineering Slack channel.
  tags:
  - data-quality
  - snowflake
  - slack
  - analytics
capability:
  exposes:
    type: mcp
    namespace: disney-data-quality-check
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Executes a null/duplicate check query on a Snowflake table and posts the results to Slack.
      inputParameters:
      - name: table_name
        type: string
        description: Fully qualified Snowflake table name (db.schema.table)
        required: true
        in: body
      - name: check_column
        type: string
        description: Column to check for nulls or duplicates
        required: true
        in: body
      steps:
      - name: run-quality-query
        call: snowflake.executeQuery
        with:
          query: SELECT COUNT(*) AS total_rows, COUNT(DISTINCT {{input.check_column}}) AS distinct_vals, SUM(CASE WHEN {{input.check_column}} IS NULL THEN 1 ELSE 0 END) AS null_count FROM {{input.table_name}}
      - name: post-results
        call: slack.postMessage
        with:
          channel: '#data-engineering'
          text: 'Data quality check on {{input.table_name}}: {{run-quality-query.total_rows}} rows, {{run-quality-query.null_count}} nulls, {{run-quality-query.distinct_vals}} distinct values.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: executeQuery
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-check.yml

Triggers ML model update in Azure Databricks, validates in Snowflake, updates weights in Amazon S3, and notifies data science via Microsoft Teams.

naftiko: '0.5'
info:
  label: Streaming Content Recommendation Update Pipeline
  description: Triggers ML model update in Azure Databricks, validates in Snowflake, updates weights in Amazon S3, and notifies data science via Microsoft Teams.
  tags:
  - recommendations
  - databricks
  - snowflake
  - s3
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-streaming-recommenda
    port: 8080
    tools:
    - name: streaming-recommendation-update
      description: Triggers ML model update in Azure Databricks.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: trigger-model
        call: databricks.runJob
        with:
          job_id: $secrets.recommendation_job_id
      - name: validate
        call: snowflake.execute-statement
        with:
          statement: SELECT f1_score FROM ML.MODEL_METRICS WHERE run_id = '{{trigger-model.run_id}}'
      - name: update-weights
        call: s3.putObject
        with:
          bucket: recommendation-models
          key: latest/weights.json
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.ds_channel
          text: 'Recommendation model updated. F1: {{validate.results[0].f1_score}}.'
  consumes:
  - namespace: databricks
    type: http
    baseUri: https://adb-disney.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - path: /jobs/runs/submit
      operations:
      - name: runJob
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: s3
    type: http
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /bucket/key
      operations:
      - name: putObject
        method: PUT
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → streaming-content-recommendation-update-pipeline.yml

Queries Amazon Redshift for Disney+ viewership analytics by title, region, and time period.

naftiko: '0.5'
info:
  label: Amazon Redshift Viewership Query
  description: Queries Amazon Redshift for Disney+ viewership analytics by title, region, and time period.
  tags:
  - analytics
  - amazon-redshift
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: viewership-analytics
    port: 8080
    tools:
    - name: query-viewership
      description: Run a viewership query in Redshift.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: Content title ID.
      - name: region
        in: body
        type: string
        description: Geographic region.
      call: redshift.execute-query
      with:
        query: SELECT view_date, unique_viewers, total_hours, completion_rate FROM streaming.viewership WHERE title_id = '{{title_id}}' AND region = '{{region}}' ORDER BY view_date DESC LIMIT 30
      outputParameters:
      - name: data
        type: array
        mapping: $.Records
  consumes:
  - namespace: redshift
    type: http
    baseUri: https://redshift-data.us-east-1.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key_id
      secretAccessKey: $secrets.aws_secret_access_key
    resources:
    - path: /
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → amazon-redshift-viewership-query.yml

Retrieves vendor payment status and outstanding invoices from SAP.

naftiko: '0.5'
info:
  label: SAP Vendor Payment Status
  description: Retrieves vendor payment status and outstanding invoices from SAP.
  tags:
  - finance
  - sap
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: vendor-payments
    port: 8080
    tools:
    - name: get-payment-status
      description: Look up vendor payment status in SAP.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: SAP vendor ID.
      call: sap.get-vendor-items
      with:
        vendor_id: '{{vendor_id}}'
      outputParameters:
      - name: outstanding_amount
        type: number
        mapping: $.d.results[0].OutstandingAmount
      - name: last_payment_date
        type: string
        mapping: $.d.results[0].LastPaymentDate
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/FI_VENDOR_LINE_ITEMS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /A_VendorLineItems
      operations:
      - name: get-vendor-items
        method: GET
Open in Framework → View in Fleet → sap-vendor-payment-status.yml

Checks weather data in Snowflake, adjusts park capacity, creates ServiceNow alerts, and notifies park operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Theme Park Weather Response Pipeline
  description: Checks weather data in Snowflake, adjusts park capacity, creates ServiceNow alerts, and notifies park operations via Microsoft Teams.
  tags:
  - parks-operations
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-theme-park-weather-r
    port: 8080
    tools:
    - name: theme-park-weather-response
      description: Checks weather data in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check-weather
        call: snowflake.execute-statement
        with:
          statement: SELECT precipitation_pct, wind_speed FROM PARKS.WEATHER_FORECAST WHERE park = '{{park}}' AND forecast_date = CURRENT_DATE()
      - name: update-capacity
        call: snowflake.execute-statement
        with:
          statement: UPDATE PARKS.CAPACITY SET adjusted = max_capacity * 0.7 WHERE park = '{{park}}'
      - name: create-alert
        call: servicenow.createIncident
        with:
          short_description: 'Weather alert: {{park}}'
          urgency: '2'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.park_ops_channel
          text: 'Weather alert: {{park}}. Capacity adjusted.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → theme-park-weather-response-pipeline.yml

Sends a notification message to a Microsoft Teams channel for Disney internal communications.

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

Drafts and publishes a talent acquisition post to the Disney LinkedIn Company Page to support employer brand campaigns.

naftiko: '0.5'
info:
  label: LinkedIn Talent Brand Post Publisher
  description: Drafts and publishes a talent acquisition post to the Disney LinkedIn Company Page to support employer brand campaigns.
  tags:
  - recruiting
  - linkedin
  - employer-brand
  - hr
capability:
  exposes:
    type: mcp
    namespace: disney-linkedin-post
    port: 8080
    tools:
    - name: publish-talent-brand-post
      description: Publishes a LinkedIn company page post for Disney talent brand and recruitment campaigns.
      inputParameters:
      - name: post_text
        type: string
        description: Post copy text
        required: true
        in: body
      - name: media_url
        type: string
        description: Optional image or video URL to attach
        required: false
        in: body
      call: linkedin.createPost
      outputParameters:
      - name: post_id
        mapping: $.id
  consumes:
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - path: /ugcPosts
      operations:
      - name: createPost
        method: POST
Open in Framework → View in Fleet → linkedin-talent-brand-post-publisher.yml

Queries Datadog for latency anomalies in a streaming service and posts an alert to Teams with a dashboard link.

naftiko: '0.5'
info:
  label: Datadog Latency Anomaly Alert
  description: Queries Datadog for latency anomalies in a streaming service and posts an alert to Teams with a dashboard link.
  tags:
  - observability
  - datadog
  - teams
  - latency
  - streaming
capability:
  exposes:
    type: mcp
    namespace: disney-latency-anomaly
    port: 8080
    tools:
    - name: alert-latency-anomaly
      description: Fetches open latency anomaly events from Datadog and posts an alert to the engineering Teams channel.
      inputParameters:
      - name: service_name
        type: string
        description: Service name tag in Datadog
        required: true
        in: query
      call: datadog.getEvents
      outputParameters:
      - name: events
        mapping: $.events
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
      placement: header
      name: DD-API-KEY
    resources:
    - path: /events
      operations:
      - name: getEvents
        method: GET
Open in Framework → View in Fleet → datadog-latency-anomaly-alert.yml

Matches invoices in SAP with POs, flags discrepancies in Jira, updates Snowflake records, and notifies AP via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Invoice Processing Pipeline
  description: Matches invoices in SAP with POs, flags discrepancies in Jira, updates Snowflake records, and notifies AP via Microsoft Teams.
  tags:
  - accounts-payable
  - sap
  - jira
  - snowflake
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-vendor-invoice-proce
    port: 8080
    tools:
    - name: vendor-invoice-processing
      description: Matches invoices in SAP with POs.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: match
        call: sap.getInventory
        with:
          invoice: '{{invoice_number}}'
          po: '{{po_number}}'
      - name: flag
        call: jira.createIssue
        with:
          project: FIN
          summary: 'Invoice discrepancy: {{invoice_number}}'
      - name: update
        call: snowflake.execute-statement
        with:
          statement: UPDATE FINANCE.INVOICES SET status = 'reviewed' WHERE invoice_number = '{{invoice_number}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.ap_channel
          text: 'Invoice {{invoice_number}} processed. Jira: {{flag.key}}.'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: operation
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → vendor-invoice-processing-pipeline.yml

Pulls data from Adobe Analytics, enriches with Salesforce leads, stores in Snowflake, and refreshes Tableau dashboards.

naftiko: '0.5'
info:
  label: Marketing Campaign Performance Pipeline
  description: Pulls data from Adobe Analytics, enriches with Salesforce leads, stores in Snowflake, and refreshes Tableau dashboards.
  tags:
  - marketing
  - adobe-analytics
  - salesforce
  - snowflake
  - tableau
capability:
  exposes:
    type: mcp
    namespace: disney-marketing-campaign-p
    port: 8080
    tools:
    - name: marketing-campaign-performance
      description: Pulls data from Adobe Analytics.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-metrics
        call: adobe-analytics.getReport
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-leads
        call: salesforce.getOpportunity
        with:
          campaign: '{{campaign_id}}'
      - name: store
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.CAMPAIGN_PERF VALUES ('{{campaign_id}}', '{{get-metrics.impressions}}')
      - name: refresh
        call: tableau.refreshExtract
        with:
          workbook_id: $secrets.marketing_workbook_id
  consumes:
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /reports
      operations:
      - name: getReport
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: tableau
    type: http
    baseUri: https://tableau.disney.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - path: /sites/default/workbooks/refresh
      operations:
      - name: refreshExtract
        method: POST
Open in Framework → View in Fleet → marketing-campaign-performance-pipeline.yml

Pulls budget data from SAP, compares with actuals in Snowflake, creates a Jira tracking issue, and sends summary to finance via Microsoft Teams.

naftiko: '0.5'
info:
  label: Film Production Budget Tracking Pipeline
  description: Pulls budget data from SAP, compares with actuals in Snowflake, creates a Jira tracking issue, and sends summary to finance via Microsoft Teams.
  tags:
  - finance
  - sap
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-production-budget
    port: 8080
    tools:
    - name: track-budget
      description: Orchestrate production budget tracking and variance reporting.
      inputParameters:
      - name: production_id
        type: string
        description: Production identifier
        in: body
      - name: period
        type: string
        description: Budget period
        in: body
      steps:
      - name: get-budget
        call: sap.getBudget
        with:
          production_id: '{{production_id}}'
          period: '{{period}}'
      - name: get-actuals
        call: snowflake.execute-statement
        with:
          statement: SELECT SUM(amount) as total_spend, category FROM FINANCE.PRODUCTION_ACTUALS WHERE production_id = '{{production_id}}' AND period = '{{period}}' GROUP BY category
      - name: create-tracker
        call: jira.createIssue
        with:
          project: PROD
          summary: 'Budget review: Production {{production_id}} - {{period}}'
      - name: notify-finance
        call: msteams.sendMessage
        with:
          channel_id: $secrets.finance_channel
          text: 'Budget report: Production {{production_id}}. Jira: {{create-tracker.key}}.'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/FI_BUDGET_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /A_Budget
      operations:
      - name: getBudget
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → film-production-budget-tracking-pipeline.yml

Detects a CI/CD pipeline failure in GitHub Actions, creates a Jira bug ticket, and sends a Slack notification to the engineering team.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Failure to Jira Bug
  description: Detects a CI/CD pipeline failure in GitHub Actions, creates a Jira bug ticket, and sends a Slack notification to the engineering team.
  tags:
  - devops
  - github
  - jira
  - slack
  - ci-cd
capability:
  exposes:
    type: mcp
    namespace: disney-cicd-failure-response
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Opens a Jira bug for a failed GitHub Actions workflow and alerts the engineering channel in Slack.
      inputParameters:
      - name: workflow_run_id
        type: string
        description: GitHub Actions workflow run ID
        required: true
        in: body
      - name: repo
        type: string
        description: GitHub repository full name (org/repo)
        required: true
        in: body
      - name: jira_project_key
        type: string
        description: Jira project key for the bug ticket
        required: true
        in: body
      steps:
      - name: get-workflow-run
        call: github.getWorkflowRun
        with:
          repo: '{{input.repo}}'
          run_id: '{{input.workflow_run_id}}'
      - name: create-jira-bug
        call: jira.createIssue
        with:
          project: '{{input.jira_project_key}}'
          issuetype: Bug
          summary: 'CI/CD failure: {{get-workflow-run.name}} on {{get-workflow-run.head_branch}}'
          description: 'Workflow run {{input.workflow_run_id}} failed. URL: {{get-workflow-run.html_url}}'
      - name: notify-slack
        call: slack.postMessage
        with:
          channel: '#engineering-alerts'
          text: 'Pipeline failure in {{input.repo}}: {{get-workflow-run.name}}. Jira bug created: {{create-jira-bug.key}}'
  consumes:
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - path: /repos/{repo}/actions/runs/{run_id}
      operations:
      - name: getWorkflowRun
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - path: /chat.postMessage
      operations:
      - name: postMessage
        method: POST
Open in Framework → View in Fleet → ci-cd-pipeline-failure-to-jira-bug.yml

Creates event in SAP, sets up ticketing in Salesforce, publishes tracking, and announces via LinkedIn.

naftiko: '0.5'
info:
  label: Theme Park Event Planning Pipeline
  description: Creates event in SAP, sets up ticketing in Salesforce, publishes tracking, and announces via LinkedIn.
  tags:
  - events
  - sap
  - salesforce
  - linkedin
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-theme-park-event-pla
    port: 8080
    tools:
    - name: theme-park-event-planning
      description: Creates event in SAP.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: create-event
        call: sap.createEvent
        with:
          name: '{{event_name}}'
          park: '{{park}}'
          date: '{{event_date}}'
      - name: setup-ticketing
        call: salesforce.createCampaign
        with:
          name: '{{event_name}} Tickets'
          type: Event
      - name: announce
        call: linkedin.createPost
        with:
          text: Join us for {{event_name}} at {{park}} on {{event_date}}!
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.events_channel
          text: 'Event created: {{event_name}}. SF Campaign: {{setup-ticketing.id}}.'
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: operation
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - path: /ugcPosts
      operations:
      - name: createPost
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → theme-park-event-planning-pipeline.yml

Searches web mentions via Splunk, creates Salesforce legal cases, files Jira tickets, and alerts IP team via Microsoft Teams.

naftiko: '0.5'
info:
  label: IP Protection Monitoring Pipeline
  description: Searches web mentions via Splunk, creates Salesforce legal cases, files Jira tickets, and alerts IP team via Microsoft Teams.
  tags:
  - ip-protection
  - splunk
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-ip-protection-monito
    port: 8080
    tools:
    - name: ip-protection-monitoring
      description: Searches web mentions via Splunk.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: scan
        call: splunk.search
        with:
          query: index=web_monitoring ip_match=true brand={{brand}} earliest=-24h
      - name: create-case
        call: salesforce.createRecord
        with:
          object: Case
          subject: 'IP violation: {{brand}}'
      - name: create-ticket
        call: jira.createIssue
        with:
          project: LEGAL
          summary: 'IP investigation: {{brand}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.ip_channel
          text: 'IP alert: {{brand}}. {{scan.count}} violations. Case: {{create-case.id}}.'
  consumes:
  - namespace: splunk
    type: http
    baseUri: https://splunk.disney.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - path: /search/jobs
      operations:
      - name: search
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → ip-protection-monitoring-pipeline.yml

Queries Datadog for CDN metrics, checks Cloudflare analytics, creates Jira optimization tickets, and notifies platform engineering via Microsoft Teams.

naftiko: '0.5'
info:
  label: Streaming CDN Performance Pipeline
  description: Queries Datadog for CDN metrics, checks Cloudflare analytics, creates Jira optimization tickets, and notifies platform engineering via Microsoft Teams.
  tags:
  - cdn
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-streaming-cdn-perfor
    port: 8080
    tools:
    - name: streaming-cdn-performance
      description: Queries Datadog for CDN metrics.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-metrics
        call: datadog.queryMetrics
        with:
          query: avg:cdn.latency{service:disney-plus} by {region}
      - name: create-ticket
        call: jira.createIssue
        with:
          project: PLATFORM
          summary: 'CDN optimization: {{get-metrics.worst_region}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.platform_channel
          text: 'CDN alert: Worst region {{get-metrics.worst_region}}. Jira: {{create-ticket.key}}.'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
    resources:
    - path: /query
      operations:
      - name: queryMetrics
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → streaming-cdn-performance-pipeline.yml

Scans for unauthorized content via Splunk, files takedown notices in Salesforce, creates Jira legal tickets, and notifies content protection via Microsoft Teams.

naftiko: '0.5'
info:
  label: Digital Content Piracy Detection Pipeline
  description: Scans for unauthorized content via Splunk, files takedown notices in Salesforce, creates Jira legal tickets, and notifies content protection via Microsoft Teams.
  tags:
  - content-protection
  - splunk
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-digital-piracy-detec
    port: 8080
    tools:
    - name: digital-piracy-detection
      description: Scans for unauthorized content via Splunk.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: scan
        call: splunk.search
        with:
          query: index=content_protection title={{title}} piracy_match=true earliest=-24h
      - name: file-takedown
        call: salesforce.createRecord
        with:
          object: Case
          subject: 'Takedown: {{title}}'
          type: DMCA
      - name: create-ticket
        call: jira.createIssue
        with:
          project: LEGAL
          summary: 'Piracy takedown: {{title}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.protection_channel
          text: 'Piracy detected: {{title}}. {{scan.count}} instances.'
  consumes:
  - namespace: splunk
    type: http
    baseUri: https://splunk.disney.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - path: /search/jobs
      operations:
      - name: search
        method: POST
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects
      operations:
      - name: createRecord
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → digital-content-piracy-detection-pipeline.yml

Checks Pluralsight completion, updates Workday learning records, creates Jira follow-ups, and reports to compliance via Microsoft Teams.

naftiko: '0.5'
info:
  label: Compliance Training Tracking Pipeline
  description: Checks Pluralsight completion, updates Workday learning records, creates Jira follow-ups, and reports to compliance via Microsoft Teams.
  tags:
  - compliance
  - pluralsight
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-compliance-training-
    port: 8080
    tools:
    - name: compliance-training-tracking
      description: Checks Pluralsight completion.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: check
        call: pluralsight.assignPath
        with:
          course_id: '{{course_id}}'
          group: '{{department}}'
      - name: update
        call: workday.getWorker
        with:
          course: '{{course_id}}'
      - name: create-followups
        call: jira.createIssue
        with:
          project: COMPLY
          summary: 'Training overdue: {{course_id}} - {{department}}'
      - name: report
        call: msteams.sendMessage
        with:
          channel_id: $secrets.compliance_channel
          text: 'Training report: {{department}}. Follow-ups: {{create-followups.key}}.'
  consumes:
  - namespace: pluralsight
    type: http
    baseUri: https://api.pluralsight.com/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - path: /paths
      operations:
      - name: assignPath
        method: POST
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → compliance-training-tracking-pipeline.yml

Creates a casting call in Workday, posts to LinkedIn, tracks candidates in Jira, and coordinates via Microsoft Teams.

naftiko: '0.5'
info:
  label: Talent Casting Workflow Pipeline
  description: Creates a casting call in Workday, posts to LinkedIn, tracks candidates in Jira, and coordinates via Microsoft Teams.
  tags:
  - talent
  - workday
  - linkedin
  - jira
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-talent-casting-workf
    port: 8080
    tools:
    - name: talent-casting-workflow
      description: Creates a casting call in Workday.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: create-req
        call: workday.createRequisition
        with:
          title: '{{role_name}}'
          production: '{{production}}'
      - name: post-linkedin
        call: linkedin.createPost
        with:
          text: 'Casting: {{role_name}} for {{production}}. Apply now!'
      - name: create-tracker
        call: jira.createIssue
        with:
          project: CASTING
          summary: 'Casting: {{role_name}} - {{production}}'
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.casting_channel
          text: 'Casting opened: {{role_name}}. Jira: {{create-tracker.key}}.'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/disney
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - path: /Human_Resources
      operations:
      - name: getWorker
        method: GET
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - path: /ugcPosts
      operations:
      - name: createPost
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → talent-casting-workflow-pipeline.yml

Scans data stores via Snowflake, checks retention policies, creates Jira compliance tickets, and reports to DPO via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Data Privacy Compliance Audit Pipeline
  description: Scans data stores via Snowflake, checks retention policies, creates Jira compliance tickets, and reports to DPO via Microsoft Outlook.
  tags:
  - privacy
  - snowflake
  - jira
  - outlook
capability:
  exposes:
    type: mcp
    namespace: disney-data-privacy-audit-p
    port: 8080
    tools:
    - name: data-privacy-audit
      description: Scans data stores via Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: scan
        call: snowflake.execute-statement
        with:
          statement: SELECT table_name, pii_columns FROM GOVERNANCE.DATA_CATALOG WHERE retention_days < DATEDIFF(day, last_purge_date, CURRENT_DATE())
      - name: create-ticket
        call: jira.createIssue
        with:
          project: PRIVACY
          summary: 'Data retention audit: {{scan.row_count}} tables overdue'
      - name: report
        call: outlook.sendEmail
        with:
          to: $secrets.dpo_email
          subject: Privacy Audit Report
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: outlook
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
Open in Framework → View in Fleet → data-privacy-compliance-audit-pipeline.yml

Pulls financials from SAP, generates analytics in Snowflake, creates Confluence report, and distributes via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Corporate Quarterly Review Pipeline
  description: Pulls financials from SAP, generates analytics in Snowflake, creates Confluence report, and distributes via Microsoft Outlook.
  tags:
  - finance
  - sap
  - snowflake
  - confluence
  - outlook
capability:
  exposes:
    type: mcp
    namespace: disney-corporate-quarterly-
    port: 8080
    tools:
    - name: corporate-quarterly-review
      description: Pulls financials from SAP.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: get-financials
        call: sap.getBudget
        with:
          period: '{{quarter}}'
          scope: corporate
      - name: run-analytics
        call: snowflake.execute-statement
        with:
          statement: SELECT business_unit, revenue, expenses, margin FROM FINANCE.QUARTERLY_SUMMARY WHERE quarter = '{{quarter}}'
      - name: create-report
        call: confluence.createPage
        with:
          space: FINANCE
          title: Q{{quarter}} Review
      - name: distribute
        call: outlook.sendEmail
        with:
          to: $secrets.executive_dl
          subject: Q{{quarter}} Review Published
  consumes:
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/API_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /resource
      operations:
      - name: operation
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://disney.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - path: /content
      operations:
      - name: createPage
        method: POST
  - namespace: outlook
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
Open in Framework → View in Fleet → corporate-quarterly-review-pipeline.yml

Retrieves website traffic metrics from Google Analytics for Disney theme park web properties.

naftiko: '0.5'
info:
  label: Google Analytics Park Website Traffic
  description: Retrieves website traffic metrics from Google Analytics for Disney theme park web properties.
  tags:
  - analytics
  - google-analytics
  - theme-parks
capability:
  exposes:
  - type: mcp
    namespace: park-website-traffic
    port: 8080
    tools:
    - name: get-traffic
      description: Retrieve park website traffic metrics.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: GA4 property ID.
      - name: date_range
        in: body
        type: string
        description: Date range.
      call: ga.run-report
      with:
        property: '{{property_id}}'
        dateRange: '{{date_range}}'
      outputParameters:
      - name: sessions
        type: number
        mapping: $.rows[0].metricValues[0].value
      - name: users
        type: number
        mapping: $.rows[0].metricValues[1].value
  consumes:
  - namespace: ga
    type: http
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - path: /properties/{{property}}:runReport
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-park-website-traffic.yml

Schedules broadcast in Snowflake, creates Jira production checklist, updates Adobe Analytics tracking, and notifies broadcast team via Microsoft Teams.

naftiko: '0.5'
info:
  label: ESPN+ Esports Tournament Broadcast Pipeline
  description: Schedules broadcast in Snowflake, creates Jira production checklist, updates Adobe Analytics tracking, and notifies broadcast team via Microsoft Teams.
  tags:
  - esports
  - snowflake
  - jira
  - adobe-analytics
  - microsoft-teams
capability:
  exposes:
    type: mcp
    namespace: disney-esports-tournament-b
    port: 8080
    tools:
    - name: esports-tournament-broadcast
      description: Schedules broadcast in Snowflake.
      inputParameters:
      - name: input_id
        type: string
        description: Primary input identifier
        in: body
      steps:
      - name: schedule
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO BROADCAST.SCHEDULE (event, start_time, channel) VALUES ('{{event_name}}', '{{start_time}}', 'ESPN+')
      - name: create-checklist
        call: jira.createIssue
        with:
          project: BROADCAST
          summary: 'Broadcast: {{event_name}}'
      - name: setup-tracking
        call: adobe-analytics.getReport
        with:
          segment: broadcast-{{event_name}}
      - name: notify
        call: msteams.sendMessage
        with:
          channel_id: $secrets.broadcast_channel
          text: 'Broadcast scheduled: {{event_name}} at {{start_time}} on ESPN+.'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: adobe-analytics
    type: http
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - path: /reports
      operations:
      - name: getReport
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → espn-esports-tournament-broadcast-pipeline.yml

Creates a ServiceNow work order for ride maintenance, schedules vendor via SAP, notifies park operations in Microsoft Teams, and logs in Jira.

naftiko: '0.5'
info:
  label: Theme Park Ride Maintenance Pipeline
  description: Creates a ServiceNow work order for ride maintenance, schedules vendor via SAP, notifies park operations in Microsoft Teams, and logs in Jira.
  tags:
  - theme-parks
  - servicenow
  - sap
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: ride-maintenance
    port: 8080
    tools:
    - name: schedule-maintenance
      description: Orchestrate ride maintenance scheduling and notifications.
      inputParameters:
      - name: ride_name
        in: body
        type: string
        description: Ride name.
      - name: park
        in: body
        type: string
        description: Park name.
      - name: issue_description
        in: body
        type: string
        description: Maintenance issue.
      steps:
      - name: create-work-order
        call: servicenow.createRecord
        with:
          table: wm_order
          short_description: 'Ride maintenance: {{ride_name}} at {{park}}'
          description: '{{issue_description}}'
      - name: schedule-vendor
        call: sap.createMaintenanceOrder
        with:
          equipment: '{{ride_name}}'
          plant: '{{park}}'
          description: '{{issue_description}}'
      - name: create-tracker
        call: jira.createIssue
        with:
          project: PARKS
          summary: 'Ride maintenance: {{ride_name}} - {{park}}'
          description: 'ServiceNow: {{create-work-order.number}}. SAP: {{schedule-vendor.order_number}}.'
          issuetype: Task
      - name: notify-ops
        call: msteams.sendMessage
        with:
          channel_id: $secrets.park_ops_channel
          text: 'Ride maintenance: {{ride_name}} at {{park}}. Work order: {{create-work-order.number}}.'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/{table}
      operations:
      - name: createRecord
        method: POST
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /A_MaintenanceOrder
      operations:
      - name: createMaintenanceOrder
        method: POST
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → theme-park-ride-maintenance-pipeline.yml

Looks up a new Salesforce lead and enriches the record with LinkedIn company and contact data before syncing back to Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Lead Enrichment from LinkedIn
  description: Looks up a new Salesforce lead and enriches the record with LinkedIn company and contact data before syncing back to Salesforce.
  tags:
  - crm
  - salesforce
  - linkedin
  - lead-enrichment
  - sales
capability:
  exposes:
    type: mcp
    namespace: disney-lead-enrichment
    port: 8080
    tools:
    - name: enrich-salesforce-lead
      description: Fetches lead details from Salesforce, queries LinkedIn for company data, and updates the lead record with enriched information.
      inputParameters:
      - name: lead_id
        type: string
        description: Salesforce lead ID
        required: true
        in: body
      steps:
      - name: get-lead
        call: salesforce.getLead
        with:
          leadId: '{{input.lead_id}}'
      - name: lookup-linkedin-company
        call: linkedin.getCompany
        with:
          companyName: '{{get-lead.Company}}'
      - name: update-lead-record
        call: salesforce-update.updateLead
        with:
          leadId: '{{input.lead_id}}'
          linkedin_company_id: '{{lookup-linkedin-company.id}}'
          employee_count: '{{lookup-linkedin-company.employeeCount}}'
          industry: '{{lookup-linkedin-company.industries}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects/Lead/{leadId}
      operations:
      - name: getLead
        method: GET
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - path: /organizations
      operations:
      - name: getCompany
        method: GET
  - namespace: salesforce-update
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /sobjects/Lead/{leadId}
      operations:
      - name: updateLead
        method: PATCH
Open in Framework → View in Fleet → salesforce-lead-enrichment-from-linkedin.yml

Detects streaming outages via Datadog, creates a ServiceNow P1 incident, pages on-call via PagerDuty, and posts to the war room in Microsoft Teams.

naftiko: '0.5'
info:
  label: Streaming Outage Response Pipeline
  description: Detects streaming outages via Datadog, creates a ServiceNow P1 incident, pages on-call via PagerDuty, and posts to the war room in Microsoft Teams.
  tags:
  - incident-response
  - datadog
  - servicenow
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: streaming-outage
    port: 8080
    tools:
    - name: respond-to-outage
      description: Orchestrate streaming outage incident response.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Datadog monitor ID.
      - name: service_name
        in: body
        type: string
        description: Affected streaming service.
      steps:
      - name: get-alert
        call: datadog.getMonitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-incident
        call: servicenow.createIncident
        with:
          urgency: '1'
          impact: '1'
          short_description: '[P1] Streaming outage: {{service_name}}'
      - name: page-oncall
        call: pagerduty.createIncident
        with:
          title: '[P1] {{service_name}} streaming outage'
          service_id: $secrets.streaming_pagerduty_service
      - name: notify-war-room
        call: msteams.sendMessage
        with:
          channel_id: $secrets.streaming_war_room_channel
          text: 'STREAMING OUTAGE: {{service_name}}. ServiceNow: {{create-incident.number}}. PagerDuty: {{page-oncall.id}}.'
  consumes:
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
    resources:
    - path: /monitor/{monitor_id}
      operations:
      - name: getMonitor
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://disney.service-now.com/api/now/v1
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - path: /table/incident
      operations:
      - name: createIncident
        method: POST
  - namespace: pagerduty
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - path: /incidents
      operations:
      - name: createIncident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /teams/channels/messages
      operations:
      - name: sendMessage
        method: POST
Open in Framework → View in Fleet → streaming-outage-response-pipeline.yml

Runs revenue forecasts in Snowflake, updates SAP financial projections, creates Jira review tasks, and distributes to leadership via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Resort Revenue Forecasting Pipeline
  description: Runs revenue forecasts in Snowflake, updates SAP financial projections, creates Jira review tasks, and distributes to leadership via Microsoft Outlook.
  tags:
  - revenue
  - snowflake
  - sap
  - jira
  - microsoft-outlook
capability:
  exposes:
    type: mcp
    namespace: disney-resort-revenue
    port: 8080
    tools:
    - name: forecast-revenue
      description: Orchestrate resort revenue forecasting.
      inputParameters:
      - name: resort
        type: string
        description: Resort name
        in: body
      - name: quarter
        type: string
        description: Target quarter
        in: body
      steps:
      - name: run-forecast
        call: snowflake.execute-statement
        with:
          statement: CALL FINANCE.FORECAST_REVENUE('{{resort}}', '{{quarter}}')
      - name: update-sap
        call: sap.getBudget
        with:
          resort: '{{resort}}'
          quarter: '{{quarter}}'
      - name: create-review
        call: jira.createIssue
        with:
          project: FIN
          summary: 'Revenue forecast: {{resort}} Q{{quarter}}'
      - name: distribute
        call: outlook.sendEmail
        with:
          to: $secrets.resort_leadership_email
          subject: 'Revenue Forecast: {{resort}} Q{{quarter}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://disney.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - path: /statements
      operations:
      - name: execute-statement
        method: POST
  - namespace: sap
    type: http
    baseUri: https://disney-s4.sap.com/sap/opu/odata/sap/FI_BUDGET_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - path: /A_Budget
      operations:
      - name: getBudget
        method: GET
  - namespace: jira
    type: http
    baseUri: https://disney.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - path: /issue
      operations:
      - name: createIssue
        method: POST
  - namespace: outlook
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - path: /me/sendMail
      operations:
      - name: sendEmail
        method: POST
Open in Framework → View in Fleet → resort-revenue-forecasting-pipeline.yml

Retrieves partner account details from Salesforce including licensing status and deal value.

naftiko: '0.5'
info:
  label: Salesforce Partner Account Lookup
  description: Retrieves partner account details from Salesforce including licensing status and deal value.
  tags:
  - partnerships
  - salesforce
  - licensing
capability:
  exposes:
  - type: mcp
    namespace: partner-accounts
    port: 8080
    tools:
    - name: get-partner
      description: Look up a partner account in Salesforce.
      inputParameters:
      - name: partner_name
        in: body
        type: string
        description: Partner company name.
      call: salesforce.query-account
      with:
        query: SELECT Id, Name, License_Status__c, Annual_Deal_Value__c FROM Account WHERE Name = '{{partner_name}}' AND Type = 'Partner'
      outputParameters:
      - name: account
        type: object
        mapping: $.records[0]
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://disney.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - path: /query
      operations:
      - name: query-account
        method: GET
Open in Framework → View in Fleet → salesforce-partner-account-lookup.yml

Pulls ad metrics from Google Ads, aggregates in Snowflake, refreshes Power BI dashboards, and alerts sales via Slack.

naftiko: '0.5'
info:
  label: Digital Ad Performance Pipeline
  description: Pulls ad metrics from Google Ads, aggregates in Snowflake, refreshes Power BI dashboards, and alerts sales via Slack.
  tags:
  - advertising
  - google-ads
  - snowflake
  - power-bi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: digital-ad-performance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls ad metrics from Google Ads, aggregates in Snowflake, refreshes Power BI dashboards, and alerts sales via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: google-ads.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: power-bi.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://api.googleads.com/v1
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → digital-ad-performance-pipeline.yml

Creates event in Airtable, assigns reporters via Asana, sets up live blog in Confluence, and promotes on Twitter.

naftiko: '0.5'
info:
  label: Event Coverage Coordination Pipeline
  description: Creates event in Airtable, assigns reporters via Asana, sets up live blog in Confluence, and promotes on Twitter.
  tags:
  - editorial
  - airtable
  - asana
  - confluence
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: event-coverage-coordination-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates event in Airtable, assigns reporters via Asana, sets up live blog in Confluence, and promotes on Twitter.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: airtable.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: asana.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: confluence.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: twitter.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v1
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: asana
    baseUri: https://api.asana.com/v1
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/v1
    authentication:
      type: bearer
      token: $secrets.twitter_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → event-coverage-coordination-pipeline.yml

Creates advertiser campaign in Salesforce, sets up ad inventory in Google Ads, configures tracking in Google Analytics, and sends confirmation via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Advertiser Campaign Onboarding Pipeline
  description: Creates advertiser campaign in Salesforce, sets up ad inventory in Google Ads, configures tracking in Google Analytics, and sends confirmation via Microsoft Outlook.
  tags:
  - advertising
  - salesforce
  - google-ads
  - google-analytics
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: advertiser-campaign-onboarding-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates advertiser campaign in Salesforce, sets up ad inventory in Google Ads, configures tracking in Google Analytics, and sends confirmation via Microsoft Outlook.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: google-ads.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-analytics.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-outlook.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-ads
    baseUri: https://api.googleads.com/v1
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://api.googleanalytics.com/v1
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-outlook
    baseUri: https://api.microsoftoutlook.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_outlook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → advertiser-campaign-onboarding-pipeline.yml

Pulls Google Ads campaign revenue for Hearst digital properties and syncs to SAP for finance reconciliation.

naftiko: '0.5'
info:
  label: Google Ads Revenue Tracker
  description: Pulls Google Ads campaign revenue for Hearst digital properties and syncs to SAP for finance reconciliation.
  tags:
  - advertising
  - revenue
  - google-ads
  - sap
capability:
  exposes:
  - type: mcp
    namespace: ad-revenue
    port: 8080
    tools:
    - name: sync-ad-revenue
      description: Pull Google Ads revenue and sync to SAP.
      inputParameters:
      - name: period
        in: body
        type: string
        description: The revenue period.
      steps:
      - name: get-revenue
        type: call
        call: googleads.get-campaign-revenue
        with:
          period: '{{period}}'
      - name: post-to-sap
        type: call
        call: sap.post-ad-revenue
        with:
          period: '{{period}}'
          total_revenue: '{{get-revenue.total_revenue}}'
          campaign_count: '{{get-revenue.campaign_count}}'
  consumes:
  - type: http
    namespace: googleads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: reports
      path: /customers/{{customer_id}}/googleAds:searchStream
      operations:
      - name: get-campaign-revenue
        method: POST
  - type: http
    namespace: sap
    baseUri: https://hearst-s4.sap.com/sap/opu/odata/sap/ZFI_AD_REVENUE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: revenue
      path: /AdRevenueSet
      operations:
      - name: post-ad-revenue
        method: POST
Open in Framework → View in Fleet → google-ads-revenue-tracker.yml

Retrieves the status of editorial tasks from a Jira project.

naftiko: '0.5'
info:
  label: Jira Editorial Task Tracker
  description: Retrieves the status of editorial tasks from a Jira project.
  tags:
  - editorial
  - jira
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: editorial-tasks
    port: 8080
    tools:
    - name: get-editorial-status
      description: Get editorial task status from Jira.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The Jira project key.
      call: jira.get-project-summary
      with:
        project_key: '{{project_key}}'
      outputParameters:
      - name: total_issues
        type: integer
        mapping: $.total
      - name: open_issues
        type: integer
        mapping: $.open_count
  consumes:
  - type: http
    namespace: jira
    baseUri: https://hearst.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: search
      path: /search?jql=project={{project_key}}
      inputParameters:
      - name: project_key
        in: path
      operations:
      - name: get-project-summary
        method: GET
Open in Framework → View in Fleet → jira-editorial-task-tracker.yml

Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.

naftiko: '0.5'
info:
  label: Training Compliance Pipeline
  description: Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
  tags:
  - training
  - pluralsight
  - workday
  - google-sheets
  - slack
capability:
  exposes:
  - type: mcp
    namespace: training-compliance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: pluralsight.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: workday.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: workday
    baseUri: https://api.workday.com/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → training-compliance-pipeline.yml

Creates photo assignments in Asana, uploads to Google Drive, routes approvals via Slack, and publishes to CMS via SharePoint.

naftiko: '0.5'
info:
  label: Photo Editorial Workflow Pipeline
  description: Creates photo assignments in Asana, uploads to Google Drive, routes approvals via Slack, and publishes to CMS via SharePoint.
  tags:
  - editorial
  - asana
  - google-drive
  - slack
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: photo-editorial-workflow-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates photo assignments in Asana, uploads to Google Drive, routes approvals via Slack, and publishes to CMS via SharePoint.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: asana.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: google-drive.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: slack.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: sharepoint.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: asana
    baseUri: https://api.asana.com/v1
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-drive
    baseUri: https://api.googledrive.com/v1
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → photo-editorial-workflow-pipeline.yml

Creates a Google Ads campaign linked to a Salesforce opportunity, sets up tracking in Google Tag Manager, and notifies the ad ops team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Advertising Campaign Creator
  description: Creates a Google Ads campaign linked to a Salesforce opportunity, sets up tracking in Google Tag Manager, and notifies the ad ops team in Microsoft Teams.
  tags:
  - advertising
  - google-ads
  - salesforce
  - google-tag-manager
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ad-campaigns
    port: 8080
    tools:
    - name: create-ad-campaign
      description: Set up a Google Ads campaign linked to Salesforce and GTM.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID.
      - name: budget_amount
        in: body
        type: number
        description: The daily budget in USD.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-campaign
        type: call
        call: googleads.create-campaign
        with:
          name: '{{get-opportunity.Name}}'
          budget: '{{budget_amount}}'
          advertiser: '{{get-opportunity.Account.Name}}'
      - name: setup-tracking
        type: call
        call: gtm.create-tag
        with:
          campaign_id: '{{create-campaign.id}}'
          tag_name: GA_{{create-campaign.id}}
      - name: notify-adops
        type: call
        call: msteams.send-message
        with:
          channel_id: ad-ops
          text: 'New ad campaign created: {{get-opportunity.Name}}. Google Ads ID: {{create-campaign.id}}. Budget: ${{budget_amount}}/day. GTM tag: {{setup-tracking.tag_id}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://hearst.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: googleads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/{{customer_id}}/campaigns
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.gtm_token
    resources:
    - name: tags
      path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags
      operations:
      - name: create-tag
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → advertising-campaign-creator.yml

Aggregates content metrics from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.

naftiko: '0.5'
info:
  label: Weekly Editorial Digest Pipeline
  description: Aggregates content metrics from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.
  tags:
  - editorial
  - snowflake
  - power-bi
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: weekly-editorial-digest-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates content metrics from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: power-bi.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: confluence.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → weekly-editorial-digest-pipeline.yml

When an article reaches high engagement on Google Analytics, automatically syndicates to partner outlets via WordPress multisite, posts to all social channels via HubSpot, and logs syndication in Salesforce.

naftiko: '0.5'
info:
  label: Content Syndication Pipeline
  description: When an article reaches high engagement on Google Analytics, automatically syndicates to partner outlets via WordPress multisite, posts to all social channels via HubSpot, and logs syndication in Salesforce.
  tags:
  - publishing
  - syndication
  - google-analytics
  - wordpress
  - hubspot
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: content-syndication
    port: 8080
    tools:
    - name: syndicate-content
      description: Syndicate high-performing content to partner outlets and social channels.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The WordPress article ID.
      - name: partner_site_ids
        in: body
        type: array
        description: List of partner WordPress site IDs.
      steps:
      - name: get-article
        type: call
        call: wordpress.get-post
        with:
          post_id: '{{article_id}}'
      - name: syndicate-post
        type: call
        call: wordpress.create-post
        with:
          site_id: '{{partner_site_ids[0]}}'
          title: '{{get-article.title}}'
          content: '{{get-article.content}}'
          source_url: '{{get-article.url}}'
      - name: social-broadcast
        type: call
        call: hubspot.create-broadcast
        with:
          content: '{{get-article.title}} - Read more: {{get-article.url}} #Hearst'
      - name: log-syndication
        type: call
        call: salesforce.create-syndication-record
        with:
          article_id: '{{article_id}}'
          partner_count: '{{partner_site_ids.length}}'
          status: Syndicated
  consumes:
  - type: http
    namespace: wordpress
    baseUri: https://hearst.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-post
        method: GET
      - name: create-post
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: broadcasts
      path: /broadcast/v1/broadcasts
      operations:
      - name: create-broadcast
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: syndication
      path: /sobjects/Content_Syndication__c
      operations:
      - name: create-syndication-record
        method: POST
Open in Framework → View in Fleet → content-syndication-pipeline.yml

Sends a formatted email via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Microsoft Outlook Email Sender
  description: Sends a formatted email via Microsoft Outlook.
  tags:
  - communications
  - email
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: email-sending
    port: 8080
    tools:
    - name: send-email
      description: Send an email via Microsoft Outlook.
      inputParameters:
      - name: to_address
        in: body
        type: string
        description: Recipient email.
      - name: subject
        in: body
        type: string
        description: Email subject.
      - name: body_text
        in: body
        type: string
        description: Email body.
      call: outlook.send-mail
      with:
        to: '{{to_address}}'
        subject: '{{subject}}'
        body: '{{body_text}}'
  consumes:
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0/me
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → microsoft-outlook-email-sender.yml

Pulls subscription revenue data from SAP, enriches with Salesforce subscriber counts, and pushes to Power BI for finance visibility.

naftiko: '0.5'
info:
  label: Subscription Revenue Dashboard Sync
  description: Pulls subscription revenue data from SAP, enriches with Salesforce subscriber counts, and pushes to Power BI for finance visibility.
  tags:
  - subscriptions
  - finance
  - sap
  - salesforce
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: subscription-revenue
    port: 8080
    tools:
    - name: sync-subscription-revenue
      description: Sync subscription revenue from SAP and Salesforce to Power BI.
      inputParameters:
      - name: period
        in: body
        type: string
        description: The revenue period (e.g. 2026-03).
      steps:
      - name: get-revenue
        type: call
        call: sap.get-subscription-revenue
        with:
          period: '{{period}}'
      - name: get-subscribers
        type: call
        call: salesforce.get-subscriber-count
        with:
          period: '{{period}}'
      - name: push-to-bi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: subscription_revenue_ds
          table_name: Revenue
          rows:
          - period: '{{period}}'
            revenue: '{{get-revenue.total_revenue}}'
            subscribers: '{{get-subscribers.active_count}}'
            churn_rate: '{{get-subscribers.churn_rate}}'
            arpu: '{{get-revenue.arpu}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hearst-s4.sap.com/sap/opu/odata/sap/ZFI_SUBSCRIPTION_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: revenue
      path: /SubscriptionRevenueSet('{{period}}')
      inputParameters:
      - name: period
        in: path
      operations:
      - name: get-subscription-revenue
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: subscribers
      path: /sobjects/Subscriber_Metrics__c?period={{period}}
      inputParameters:
      - name: period
        in: query
      operations:
      - name: get-subscriber-count
        method: GET
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/tables/{{table_name}}/rows
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: push-rows
        method: POST
Open in Framework → View in Fleet → subscription-revenue-dashboard-sync.yml

Creates ad booking in Salesforce, routes creative approval via Asana, archives assets in Box, and tracks revenue in Google Sheets.

naftiko: '0.5'
info:
  label: Print Advertising Pipeline
  description: Creates ad booking in Salesforce, routes creative approval via Asana, archives assets in Box, and tracks revenue in Google Sheets.
  tags:
  - advertising
  - salesforce
  - asana
  - box
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: print-advertising-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates ad booking in Salesforce, routes creative approval via Asana, archives assets in Box, and tracks revenue in Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: asana.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: box.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: asana
    baseUri: https://api.asana.com/v1
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/v1
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → print-advertising-pipeline.yml

Pulls subscriber churn data from Salesforce, analyzes engagement patterns from Adobe Analytics, and publishes a retention report to Confluence.

naftiko: '0.5'
info:
  label: Subscriber Churn Analysis
  description: Pulls subscriber churn data from Salesforce, analyzes engagement patterns from Adobe Analytics, and publishes a retention report to Confluence.
  tags:
  - subscriptions
  - analytics
  - salesforce
  - adobe-analytics
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: churn-analysis
    port: 8080
    tools:
    - name: analyze-churn
      description: Analyze subscriber churn patterns and publish a retention report.
      inputParameters:
      - name: publication
        in: body
        type: string
        description: The publication name.
      - name: period
        in: body
        type: string
        description: The analysis period.
      steps:
      - name: get-churn-data
        type: call
        call: salesforce.get-churn-metrics
        with:
          publication: '{{publication}}'
          period: '{{period}}'
      - name: get-engagement
        type: call
        call: adobe-analytics.get-engagement
        with:
          publication: '{{publication}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: SUB
          title: 'Churn Analysis: {{publication}} - {{period}}'
          body: 'Churn rate: {{get-churn-data.churn_rate}}. Churned subscribers: {{get-churn-data.churned_count}}. Avg engagement before churn: {{get-engagement.avg_sessions}}. Top churn reason: {{get-churn-data.top_reason}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: churn
      path: /sobjects/Churn_Metrics__c?publication={{publication}}&period={{period}}
      inputParameters:
      - name: publication
        in: query
      - name: period
        in: query
      operations:
      - name: get-churn-metrics
        method: GET
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /hearst/reports
      operations:
      - name: get-engagement
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://hearst.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → subscriber-churn-analysis.yml

Queries historical data in Snowflake, generates forecasts, updates Salesforce inventory, and alerts sales via Microsoft Teams.

naftiko: '0.5'
info:
  label: Ad Inventory Forecasting Pipeline
  description: Queries historical data in Snowflake, generates forecasts, updates Salesforce inventory, and alerts sales via Microsoft Teams.
  tags:
  - advertising
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ad-inventory-forecasting-pipeline
    port: 8080
    tools:
    - name: execute
      description: Queries historical data in Snowflake, generates forecasts, updates Salesforce inventory, and alerts sales via Microsoft Teams.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: salesforce.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: microsoft-teams.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-teams.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-teams
    baseUri: https://api.microsoftteams.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_teams_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → ad-inventory-forecasting-pipeline.yml

Pulls metrics from Google Analytics, identifies issues via New Relic, creates optimization tickets in Jira, and notifies via Slack.

naftiko: '0.5'
info:
  label: Website Performance Optimization Pipeline
  description: Pulls metrics from Google Analytics, identifies issues via New Relic, creates optimization tickets in Jira, and notifies via Slack.
  tags:
  - performance
  - google-analytics
  - new-relic
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: website-performance-optimization-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls metrics from Google Analytics, identifies issues via New Relic, creates optimization tickets in Jira, and notifies via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: google-analytics.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: new-relic.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://api.googleanalytics.com/v1
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: new-relic
    baseUri: https://api.newrelic.com/v1
    authentication:
      type: bearer
      token: $secrets.new_relic_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → website-performance-optimization-pipeline.yml

Creates campaign in HubSpot, generates contract in DocuSign, tracks deliverables in Asana, and monitors metrics via Instagram.

naftiko: '0.5'
info:
  label: Influencer Partnership Pipeline
  description: Creates campaign in HubSpot, generates contract in DocuSign, tracks deliverables in Asana, and monitors metrics via Instagram.
  tags:
  - marketing
  - hubspot
  - docusign
  - asana
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: influencer-partnership-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates campaign in HubSpot, generates contract in DocuSign, tracks deliverables in Asana, and monitors metrics via Instagram.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: hubspot.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: docusign.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: asana.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: instagram.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubspot.com/v1
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://api.docusign.com/v1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: asana
    baseUri: https://api.asana.com/v1
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://api.instagram.com/v1
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → influencer-partnership-pipeline.yml

Retrieves service health metrics from Datadog.

naftiko: '0.5'
info:
  label: Datadog Service Health Check
  description: Retrieves service health metrics from Datadog.
  tags:
  - it-operations
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-service-health
      description: Get Datadog health metrics for a service.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The Datadog service name.
      call: datadog.get-metrics
      with:
        service: '{{service_name}}'
      outputParameters:
      - name: cpu_usage
        type: string
        mapping: $.series[0].pointlist[-1][1]
      - name: error_rate
        type: string
        mapping: $.series[1].pointlist[-1][1]
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
      headerName: DD-API-KEY
    resources:
    - name: metrics
      path: /query?query=avg:system.cpu.user{service:{{service}}}
      inputParameters:
      - name: service
        in: path
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → datadog-service-health-check.yml

Looks up a SAP purchase order and returns status, vendor, total value, and delivery date.

naftiko: '0.5'
info:
  label: SAP Purchase Order Status
  description: Looks up a SAP purchase order and returns status, vendor, total value, and delivery date.
  tags:
  - procurement
  - sap
  - purchase-order
capability:
  exposes:
  - type: mcp
    namespace: erp-procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: vendor
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: delivery_date
        type: string
        mapping: $.d.DeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hearst-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-purchase-order-status.yml

Aggregates metrics from Google Analytics across publications, stores in Snowflake, generates dashboards in Tableau, and distributes via Microsoft Teams.

naftiko: '0.5'
info:
  label: Cross-Publication Analytics Pipeline
  description: Aggregates metrics from Google Analytics across publications, stores in Snowflake, generates dashboards in Tableau, and distributes via Microsoft Teams.
  tags:
  - analytics
  - google-analytics
  - snowflake
  - tableau
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cross-publication-analytics-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates metrics from Google Analytics across publications, stores in Snowflake, generates dashboards in Tableau, and distributes via Microsoft Teams.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: google-analytics.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: tableau.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-teams.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://api.googleanalytics.com/v1
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://api.tableau.com/v1
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-teams
    baseUri: https://api.microsoftteams.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_teams_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → cross-publication-analytics-pipeline.yml

Enrolls new subscriber in Stripe, creates contact in Salesforce, triggers welcome series in MailChimp, and logs in Snowflake.

naftiko: '0.5'
info:
  label: Subscriber Onboarding Pipeline
  description: Enrolls new subscriber in Stripe, creates contact in Salesforce, triggers welcome series in MailChimp, and logs in Snowflake.
  tags:
  - subscriptions
  - stripe
  - salesforce
  - mailchimp
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: subscriber-onboarding-pipeline
    port: 8080
    tools:
    - name: execute
      description: Enrolls new subscriber in Stripe, creates contact in Salesforce, triggers welcome series in MailChimp, and logs in Snowflake.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: stripe.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: salesforce.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: mailchimp.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: snowflake.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://api.mailchimp.com/v1
    authentication:
      type: bearer
      token: $secrets.mailchimp_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → subscriber-onboarding-pipeline.yml

Manages contracts in Salesforce, routes signatures via DocuSign, archives in SharePoint, and tracks in Google Sheets.

naftiko: '0.5'
info:
  label: Contract Lifecycle Management Pipeline
  description: Manages contracts in Salesforce, routes signatures via DocuSign, archives in SharePoint, and tracks in Google Sheets.
  tags:
  - legal
  - salesforce
  - docusign
  - sharepoint
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: contract-lifecycle-management-pipeline
    port: 8080
    tools:
    - name: execute
      description: Manages contracts in Salesforce, routes signatures via DocuSign, archives in SharePoint, and tracks in Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: docusign.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: sharepoint.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://api.docusign.com/v1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → contract-lifecycle-management-pipeline.yml

Aggregates revenue from Snowflake, generates reports in Google Sheets, uploads to SharePoint, and distributes via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Quarterly Revenue Reporting Pipeline
  description: Aggregates revenue from Snowflake, generates reports in Google Sheets, uploads to SharePoint, and distributes via Microsoft Outlook.
  tags:
  - finance
  - snowflake
  - google-sheets
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: quarterly-revenue-reporting-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates revenue from Snowflake, generates reports in Google Sheets, uploads to SharePoint, and distributes via Microsoft Outlook.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: google-sheets.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: sharepoint.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-outlook.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-outlook
    baseUri: https://api.microsoftoutlook.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_outlook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → quarterly-revenue-reporting-pipeline.yml

Collects reviews from Zendesk, analyzes sentiment via Azure ML, stores in Snowflake, and publishes to Confluence.

naftiko: '0.5'
info:
  label: Customer Feedback Analysis Pipeline
  description: Collects reviews from Zendesk, analyzes sentiment via Azure ML, stores in Snowflake, and publishes to Confluence.
  tags:
  - feedback
  - zendesk
  - azure-machine-learning
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: customer-feedback-analysis-pipeline
    port: 8080
    tools:
    - name: execute
      description: Collects reviews from Zendesk, analyzes sentiment via Azure ML, stores in Snowflake, and publishes to Confluence.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: zendesk.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: azure-machine-learning.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: snowflake.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: confluence.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://api.zendesk.com/v1
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: azure-machine-learning
    baseUri: https://api.azuremachinelearning.com/v1
    authentication:
      type: bearer
      token: $secrets.azure_machine_learning_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → customer-feedback-analysis-pipeline.yml

Executes a parameterized query against Snowflake to retrieve audience engagement metrics by content vertical and date range.

naftiko: '0.5'
info:
  label: Snowflake Audience Data Query
  description: Executes a parameterized query against Snowflake to retrieve audience engagement metrics by content vertical and date range.
  tags:
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: snowflake-audience
    port: 8080
    tools:
    - name: query-audience
      description: Query audience data from Snowflake by content vertical.
      inputParameters:
      - name: vertical
        in: body
        type: string
        description: The content vertical.
      call: snowflake.run-query
      with:
        vertical: '{{vertical}}'
      outputParameters:
      - name: total_pageviews
        type: string
        mapping: $.data[0].TOTAL_PAGEVIEWS
      - name: unique_visitors
        type: string
        mapping: $.data[0].UNIQUE_VISITORS
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://hearst.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-audience-data-query.yml

Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies hiring managers via Slack.

naftiko: '0.5'
info:
  label: Talent Acquisition Pipeline
  description: Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies hiring managers via Slack.
  tags:
  - recruiting
  - linkedin
  - workday
  - zoom
  - slack
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition-pipeline
    port: 8080
    tools:
    - name: execute
      description: Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies hiring managers via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: linkedin.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: workday.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: zoom.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v1
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: workday
    baseUri: https://api.workday.com/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.com/v1
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → talent-acquisition-pipeline.yml

Retrieves editorial project status from Asana by project GID, returning name and deadline.

naftiko: '0.5'
info:
  label: Asana Editorial Project Lookup
  description: Retrieves editorial project status from Asana by project GID, returning name and deadline.
  tags:
  - project-management
  - asana
capability:
  exposes:
  - type: mcp
    namespace: asana-editorial
    port: 8080
    tools:
    - name: get-data
      description: Retrieves editorial project status from Asana by project GID, returning name and deadline.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: asana-editorial.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: asana-editorial
    baseUri: https://app.asana.com/api/1.0
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → asana-editorial-project-lookup.yml

On breaking news event, publishes article via CMS, distributes to social channels via Facebook and Twitter, sends push notifications via Slack, and updates Google Analytics tracking.

naftiko: '0.5'
info:
  label: Breaking News Distribution Pipeline
  description: On breaking news event, publishes article via CMS, distributes to social channels via Facebook and Twitter, sends push notifications via Slack, and updates Google Analytics tracking.
  tags:
  - editorial
  - facebook
  - twitter
  - slack
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: breaking-news-distribution-pipeline
    port: 8080
    tools:
    - name: execute
      description: On breaking news event, publishes article via CMS, distributes to social channels via Facebook and Twitter, sends push notifications via Slack, and updates Google Analytics tracking.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: facebook.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: twitter.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: slack.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-analytics.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://api.facebook.com/v1
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/v1
    authentication:
      type: bearer
      token: $secrets.twitter_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://api.googleanalytics.com/v1
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → breaking-news-distribution-pipeline.yml

Retrieves editorial calendar entries from Airtable by publication and date range, returning article titles, authors, and deadlines.

naftiko: '0.5'
info:
  label: Airtable Editorial Calendar Lookup
  description: Retrieves editorial calendar entries from Airtable by publication and date range, returning article titles, authors, and deadlines.
  tags:
  - editorial
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: airtable-editorial
    port: 8080
    tools:
    - name: get-calendar
      description: Look up editorial calendar entries in Airtable.
      inputParameters:
      - name: publication
        in: body
        type: string
        description: The publication name.
      call: airtable.list-records
      with:
        filter: '{{publication}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.records[0].fields.Title
      - name: author
        type: string
        mapping: $.records[0].fields.Author
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0/appHearst
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: calendar
      path: /EditorialCalendar?filterByFormula={Publication}='{{filter}}'
      inputParameters:
      - name: filter
        in: path
      operations:
      - name: list-records
        method: GET
Open in Framework → View in Fleet → airtable-editorial-calendar-lookup.yml

Builds audience segments in Snowflake, syncs to Salesforce, creates targeted campaigns in MailChimp, and tracks in Google Sheets.

naftiko: '0.5'
info:
  label: Audience Segmentation Campaign Pipeline
  description: Builds audience segments in Snowflake, syncs to Salesforce, creates targeted campaigns in MailChimp, and tracks in Google Sheets.
  tags:
  - marketing
  - snowflake
  - salesforce
  - mailchimp
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: audience-segmentation-campaign-pipeline
    port: 8080
    tools:
    - name: execute
      description: Builds audience segments in Snowflake, syncs to Salesforce, creates targeted campaigns in MailChimp, and tracks in Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: salesforce.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: mailchimp.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://api.mailchimp.com/v1
    authentication:
      type: bearer
      token: $secrets.mailchimp_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → audience-segmentation-campaign-pipeline.yml

Retrieves search performance data from Google Search Console for Hearst properties.

naftiko: '0.5'
info:
  label: Google Search Console SEO Lookup
  description: Retrieves search performance data from Google Search Console for Hearst properties.
  tags:
  - seo
  - google-search-console
capability:
  exposes:
  - type: mcp
    namespace: gsc-seo
    port: 8080
    tools:
    - name: get-data
      description: Retrieves search performance data from Google Search Console for Hearst properties.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: gsc-seo.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: gsc-seo
    baseUri: https://www.googleapis.com/webmasters/v3
    authentication:
      type: bearer
      token: $secrets.google_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → google-search-console-seo-lookup.yml

Creates or updates a Confluence page for editorial guidelines and SOPs.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Publisher
  description: Creates or updates a Confluence page for editorial guidelines and SOPs.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: publish-kb-article
      description: Publish a knowledge base page to Confluence.
      inputParameters:
      - name: space_key
        in: body
        type: string
        description: The Confluence space key.
      - name: title
        in: body
        type: string
        description: The page title.
      - name: content
        in: body
        type: string
        description: The page content.
      call: confluence.create-page
      with:
        space_key: '{{space_key}}'
        title: '{{title}}'
        body: '{{content}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://hearst.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → confluence-knowledge-base-publisher.yml

Retrieves a Stripe subscription by ID, returning plan name, status, billing cycle, and next payment date.

naftiko: '0.5'
info:
  label: Stripe Subscription Payment Lookup
  description: Retrieves a Stripe subscription by ID, returning plan name, status, billing cycle, and next payment date.
  tags:
  - payments
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: stripe-subscriptions
    port: 8080
    tools:
    - name: get-subscription
      description: Look up a Stripe subscription by ID.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: The Stripe subscription ID.
      call: stripe.get-subscription
      with:
        id: '{{subscription_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: plan
        type: string
        mapping: $.plan.nickname
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: subscriptions
      path: /subscriptions/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-subscription
        method: GET
Open in Framework → View in Fleet → stripe-subscription-payment-lookup.yml

Publishes a content teaser to the Hearst Facebook page with link back to the article.

naftiko: '0.5'
info:
  label: Facebook Content Distribution
  description: Publishes a content teaser to the Hearst Facebook page with link back to the article.
  tags:
  - social-media
  - content
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: facebook-publishing
    port: 8080
    tools:
    - name: post-to-facebook
      description: Publish a post to the Hearst Facebook page.
      inputParameters:
      - name: message
        in: body
        type: string
        description: The post message.
      - name: link
        in: body
        type: string
        description: The article URL.
      call: facebook.create-post
      with:
        message: '{{message}}'
        link: '{{link}}'
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: posts
      path: /{{page_id}}/feed
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → facebook-content-distribution.yml

Checks content rights in Salesforce, creates clearance request in Jira, routes contract via DocuSign, and archives in SharePoint.

naftiko: '0.5'
info:
  label: Content Rights Clearance Pipeline
  description: Checks content rights in Salesforce, creates clearance request in Jira, routes contract via DocuSign, and archives in SharePoint.
  tags:
  - legal
  - salesforce
  - jira
  - docusign
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: content-rights-clearance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Checks content rights in Salesforce, creates clearance request in Jira, routes contract via DocuSign, and archives in SharePoint.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: jira.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: docusign.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: sharepoint.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://api.docusign.com/v1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → content-rights-clearance-pipeline.yml

Queries the Teradata data warehouse for audience demographics and behavior data for content personalization.

naftiko: '0.5'
info:
  label: Teradata Audience Data Query
  description: Queries the Teradata data warehouse for audience demographics and behavior data for content personalization.
  tags:
  - analytics
  - data-warehouse
  - teradata
  - audience
capability:
  exposes:
  - type: mcp
    namespace: audience-dwh
    port: 8080
    tools:
    - name: query-audience-data
      description: Query Teradata for audience demographics and behavior.
      inputParameters:
      - name: publication
        in: body
        type: string
        description: The publication name.
      - name: segment
        in: body
        type: string
        description: The audience segment.
      call: teradata.query-audience
      with:
        publication: '{{publication}}'
        segment: '{{segment}}'
      outputParameters:
      - name: total_readers
        type: integer
        mapping: $.results.total_readers
      - name: avg_age
        type: number
        mapping: $.results.avg_age
      - name: top_interests
        type: array
        mapping: $.results.top_interests
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://hearst-td.teradata.com/api/query/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /execute
      operations:
      - name: query-audience
        method: POST
Open in Framework → View in Fleet → teradata-audience-data-query.yml

Checks ad inventory availability from Google Campaign Manager for a given publication, date range, and ad unit.

naftiko: '0.5'
info:
  label: Ad Inventory Availability Checker
  description: Checks ad inventory availability from Google Campaign Manager for a given publication, date range, and ad unit.
  tags:
  - advertising
  - inventory
  - google-campaign-manager
capability:
  exposes:
  - type: mcp
    namespace: ad-inventory
    port: 8080
    tools:
    - name: check-ad-inventory
      description: Check available ad inventory for a publication.
      inputParameters:
      - name: publication_id
        in: body
        type: string
        description: The publication identifier.
      - name: start_date
        in: body
        type: string
        description: Campaign start date.
      - name: end_date
        in: body
        type: string
        description: Campaign end date.
      - name: ad_unit
        in: body
        type: string
        description: The ad unit type.
      call: gcm.get-availability
      with:
        publication_id: '{{publication_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
        ad_unit: '{{ad_unit}}'
      outputParameters:
      - name: available_impressions
        type: integer
        mapping: $.availableImpressions
      - name: sold_pct
        type: string
        mapping: $.soldPercentage
      - name: rate_card
        type: string
        mapping: $.rateCard
  consumes:
  - type: http
    namespace: gcm
    baseUri: https://dfareporting.googleapis.com/dfareporting/v4
    authentication:
      type: bearer
      token: $secrets.google_campaign_manager_token
    resources:
    - name: inventory
      path: /userprofiles/{{profile_id}}/reports
      inputParameters:
      - name: profile_id
        in: path
      operations:
      - name: get-availability
        method: POST
Open in Framework → View in Fleet → ad-inventory-availability-checker.yml

On new hire from Workday, provisions Azure AD account, creates ServiceNow equipment request, and sends welcome via Microsoft Outlook.

naftiko: '0.5'
info:
  label: New Hire IT Provisioning Pipeline
  description: On new hire from Workday, provisions Azure AD account, creates ServiceNow equipment request, and sends welcome via Microsoft Outlook.
  tags:
  - it
  - workday
  - azure-active-directory
  - servicenow
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: new-hire-it-provisioning-pipeline
    port: 8080
    tools:
    - name: execute
      description: On new hire from Workday, provisions Azure AD account, creates ServiceNow equipment request, and sends welcome via Microsoft Outlook.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: workday.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: azure-active-directory.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-outlook.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://api.workday.com/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: azure-active-directory
    baseUri: https://api.azureactivedirectory.com/v1
    authentication:
      type: bearer
      token: $secrets.azure_active_directory_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://api.servicenow.com/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-outlook
    baseUri: https://api.microsoftoutlook.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_outlook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → new-hire-it-provisioning-pipeline.yml

Publishes a branded post to the Hearst LinkedIn company page.

naftiko: '0.5'
info:
  label: LinkedIn Brand Post Publisher
  description: Publishes a branded post to the Hearst LinkedIn company page.
  tags:
  - marketing
  - social-media
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: linkedin-publishing
    port: 8080
    tools:
    - name: publish-linkedin-post
      description: Publish a post to the Hearst LinkedIn page.
      inputParameters:
      - name: post_text
        in: body
        type: string
        description: The post content.
      call: linkedin.create-post
      with:
        author: urn:li:organization:hearst
        text: '{{post_text}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: posts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → linkedin-brand-post-publisher.yml

Publishes a visual story to the Hearst Instagram account with a linked article.

naftiko: '0.5'
info:
  label: Instagram Story Publisher
  description: Publishes a visual story to the Hearst Instagram account with a linked article.
  tags:
  - social-media
  - visual-content
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: instagram-publishing
    port: 8080
    tools:
    - name: post-instagram-story
      description: Publish visual content to Instagram.
      inputParameters:
      - name: image_url
        in: body
        type: string
        description: The image URL.
      - name: caption
        in: body
        type: string
        description: The post caption.
      call: instagram.create-media
      with:
        image_url: '{{image_url}}'
        caption: '{{caption}}'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      operations:
      - name: create-media
        method: POST
Open in Framework → View in Fleet → instagram-story-publisher.yml

Pulls search performance data from Google Search Console, enriches with Google Analytics traffic, and publishes an SEO report to Confluence.

naftiko: '0.5'
info:
  label: SEO Performance Tracker
  description: Pulls search performance data from Google Search Console, enriches with Google Analytics traffic, and publishes an SEO report to Confluence.
  tags:
  - seo
  - analytics
  - google-search-console
  - google-analytics
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: seo-tracking
    port: 8080
    tools:
    - name: track-seo-performance
      description: Track SEO performance and publish a report.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: The site URL for Search Console.
      - name: period
        in: body
        type: string
        description: The analysis period.
      steps:
      - name: get-search-data
        type: call
        call: gsc.get-search-analytics
        with:
          site_url: '{{site_url}}'
          period: '{{period}}'
      - name: get-traffic
        type: call
        call: ga.get-organic-traffic
        with:
          site_url: '{{site_url}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: SEO
          title: 'SEO Report: {{site_url}} - {{period}}'
          body: 'Total clicks: {{get-search-data.total_clicks}}. Impressions: {{get-search-data.total_impressions}}. Avg position: {{get-search-data.avg_position}}. Organic sessions: {{get-traffic.organic_sessions}}.'
  consumes:
  - type: http
    namespace: gsc
    baseUri: https://www.googleapis.com/webmasters/v3
    authentication:
      type: bearer
      token: $secrets.google_search_console_token
    resources:
    - name: search-analytics
      path: /sites/{{site_url}}/searchAnalytics/query
      inputParameters:
      - name: site_url
        in: path
      operations:
      - name: get-search-analytics
        method: POST
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-organic-traffic
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://hearst.atlassian.net/wiki/api/v2
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → seo-performance-tracker.yml

Retrieves a Zendesk subscriber support ticket by ID, returning status, priority, assignee, and resolution details.

naftiko: '0.5'
info:
  label: Zendesk Subscriber Ticket Lookup
  description: Retrieves a Zendesk subscriber support ticket by ID, returning status, priority, assignee, and resolution details.
  tags:
  - support
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: zendesk-tickets
    port: 8080
    tools:
    - name: get-ticket
      description: Look up a Zendesk subscriber ticket by ID.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket ID.
      call: zendesk.get-ticket
      with:
        id: '{{ticket_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.ticket.status
      - name: priority
        type: string
        mapping: $.ticket.priority
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://hearst.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-ticket
        method: GET
Open in Framework → View in Fleet → zendesk-subscriber-ticket-lookup.yml

Uploads editorial assets to Google Drive.

naftiko: '0.5'
info:
  label: Google Drive Editorial Asset Upload
  description: Uploads editorial assets to Google Drive.
  tags:
  - document-management
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: gdrive-assets
    port: 8080
    tools:
    - name: upload-asset
      description: Upload an editorial asset to Google Drive.
      inputParameters:
      - name: folder_id
        in: body
        type: string
        description: The Google Drive folder ID.
      - name: file_name
        in: body
        type: string
        description: The file name.
      - name: content
        in: body
        type: string
        description: The file content.
      call: gdrive.upload-file
      with:
        folder_id: '{{folder_id}}'
        name: '{{file_name}}'
        content: '{{content}}'
      outputParameters:
      - name: file_id
        type: string
        mapping: $.id
      - name: web_view_link
        type: string
        mapping: $.webViewLink
  consumes:
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/upload/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files?uploadType=multipart
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → google-drive-editorial-asset-upload.yml

Audits data usage in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.

naftiko: '0.5'
info:
  label: Data Privacy Compliance Pipeline
  description: Audits data usage in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
  tags:
  - compliance
  - snowflake
  - google-sheets
  - sharepoint
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-privacy-compliance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Audits data usage in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: google-sheets.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: sharepoint.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → data-privacy-compliance-pipeline.yml

Matches invoices from SAP, validates against contracts in Salesforce, processes payments, and logs in Google Sheets.

naftiko: '0.5'
info:
  label: Vendor Invoice Reconciliation Pipeline
  description: Matches invoices from SAP, validates against contracts in Salesforce, processes payments, and logs in Google Sheets.
  tags:
  - finance
  - sap
  - salesforce
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: vendor-invoice-reconciliation-pipeline
    port: 8080
    tools:
    - name: execute
      description: Matches invoices from SAP, validates against contracts in Salesforce, processes payments, and logs in Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: sap.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: salesforce.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://api.sap.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → vendor-invoice-reconciliation-pipeline.yml

Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates CMS, and reports via Google Sheets.

naftiko: '0.5'
info:
  label: SEO Content Optimization Pipeline
  description: Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates CMS, and reports via Google Sheets.
  tags:
  - seo
  - google-search-console
  - snowflake
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: seo-content-optimization-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates CMS, and reports via Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: google-search-console.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-search-console
    baseUri: https://api.googlesearchconsole.com/v1
    authentication:
      type: bearer
      token: $secrets.google_search_console_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → seo-content-optimization-pipeline.yml

Pulls bid data from Google Ads, optimizes using Snowflake models, updates campaigns, and reports via Google Sheets.

naftiko: '0.5'
info:
  label: Programmatic Ad Optimization Pipeline
  description: Pulls bid data from Google Ads, optimizes using Snowflake models, updates campaigns, and reports via Google Sheets.
  tags:
  - advertising
  - google-ads
  - snowflake
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: programmatic-ad-optimization-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls bid data from Google Ads, optimizes using Snowflake models, updates campaigns, and reports via Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: google-ads.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://api.googleads.com/v1
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → programmatic-ad-optimization-pipeline.yml

Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.

naftiko: '0.5'
info:
  label: Annual Budget Planning Pipeline
  description: Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.
  tags:
  - finance
  - sap
  - snowflake
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: annual-budget-planning-pipeline
    port: 8080
    tools:
    - name: execute
      description: Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: sap.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-teams.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://api.sap.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-teams
    baseUri: https://api.microsoftteams.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_teams_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → annual-budget-planning-pipeline.yml

Queries expiring rights from Salesforce, creates renewal tasks in Jira, sends reminders via Microsoft Outlook, and logs in Google Sheets.

naftiko: '0.5'
info:
  label: Content Rights Renewal Pipeline
  description: Queries expiring rights from Salesforce, creates renewal tasks in Jira, sends reminders via Microsoft Outlook, and logs in Google Sheets.
  tags:
  - legal
  - salesforce
  - jira
  - microsoft-outlook
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: content-rights-renewal-pipeline
    port: 8080
    tools:
    - name: execute
      description: Queries expiring rights from Salesforce, creates renewal tasks in Jira, sends reminders via Microsoft Outlook, and logs in Google Sheets.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: jira.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: microsoft-outlook.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-sheets.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-outlook
    baseUri: https://api.microsoftoutlook.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_outlook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → content-rights-renewal-pipeline.yml

Pulls editorial calendar entries from Jira, syncs deadlines to Microsoft Planner, and notifies editors in Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Editorial Calendar Sync
  description: Pulls editorial calendar entries from Jira, syncs deadlines to Microsoft Planner, and notifies editors in Microsoft Teams.
  tags:
  - publishing
  - editorial
  - jira
  - microsoft-planner
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: editorial-calendar
    port: 8080
    tools:
    - name: sync-editorial-calendar
      description: Sync Jira editorial tasks to Microsoft Planner and notify editors.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The Jira project key for editorial content.
      - name: plan_id
        in: body
        type: string
        description: The Microsoft Planner plan ID.
      steps:
      - name: get-editorial-tasks
        type: call
        call: jira.get-issues
        with:
          project_key: '{{project_key}}'
          status: In Progress
      - name: create-planner-tasks
        type: call
        call: planner.create-task
        with:
          plan_id: '{{plan_id}}'
          title: '{{get-editorial-tasks.issues[0].summary}}'
          due_date: '{{get-editorial-tasks.issues[0].due_date}}'
      - name: notify-editors
        type: call
        call: msteams.send-message
        with:
          channel_id: editorial-team
          text: 'Editorial calendar synced. {{get-editorial-tasks.total}} active stories. Next deadline: {{get-editorial-tasks.issues[0].due_date}} - {{get-editorial-tasks.issues[0].summary}}.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://hearst.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /search?jql=project={{project_key}} AND status='In Progress'
      inputParameters:
      - name: project_key
        in: path
      operations:
      - name: get-issues
        method: GET
  - type: http
    namespace: planner
    baseUri: https://graph.microsoft.com/v1.0/planner
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: tasks
      path: /tasks
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: 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 → content-editorial-calendar-sync.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
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: team-notifications
    port: 8080
    tools:
    - name: send-channel-notification
      description: Send a message to a Microsoft Teams channel.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: The Teams channel ID.
      - name: message_text
        in: body
        type: string
        description: The message text.
      call: msteams.send-channel-message
      with:
        channel_id: '{{channel_id}}'
        text: '{{message_text}}'
  consumes:
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-channel-notifier.yml

Retrieves the Power BI advertising revenue dashboard status and last refresh time.

naftiko: '0.5'
info:
  label: Power BI Revenue Dashboard
  description: Retrieves the Power BI advertising revenue dashboard status and last refresh time.
  tags:
  - analytics
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: powerbi-revenue
    port: 8080
    tools:
    - name: get-data
      description: Retrieves the Power BI advertising revenue dashboard status and last refresh time.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: powerbi-revenue.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: powerbi-revenue
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → power-bi-revenue-dashboard.yml

Retrieves security event logs from Splunk by event ID for Hearst infrastructure.

naftiko: '0.5'
info:
  label: Splunk Security Event Lookup
  description: Retrieves security event logs from Splunk by event ID for Hearst infrastructure.
  tags:
  - security
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: splunk-events
    port: 8080
    tools:
    - name: get-data
      description: Retrieves security event logs from Splunk by event ID for Hearst infrastructure.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: splunk-events.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: splunk-events
    baseUri: https://hearst.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → splunk-security-event-lookup.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:
  - devops
  - ci-cd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: cicd-status
    port: 8080
    tools:
    - name: get-build-status
      description: Get the latest build status for an Azure DevOps pipeline.
      inputParameters:
      - name: project_name
        in: body
        type: string
        description: The Azure DevOps project name.
      - name: pipeline_id
        in: body
        type: string
        description: The pipeline definition ID.
      call: azdo.get-builds
      with:
        project: '{{project_name}}'
        definition_id: '{{pipeline_id}}'
      outputParameters:
      - name: build_number
        type: string
        mapping: $.value[0].buildNumber
      - name: result
        type: string
        mapping: $.value[0].result
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/hearst
    authentication:
      type: basic
      username: ''
      password: $secrets.azdo_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: definition_id
        in: query
      operations:
      - name: get-builds
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status.yml

Creates a Zoom meeting and sends calendar invites via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Zoom Meeting Scheduler
  description: Creates a Zoom meeting and sends calendar invites via Microsoft Outlook.
  tags:
  - communications
  - meetings
  - zoom
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: meeting-scheduler
    port: 8080
    tools:
    - name: schedule-meeting
      description: Create a Zoom meeting and send invites.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      - name: start_time
        in: body
        type: string
        description: Start time in ISO 8601.
      - name: attendee_emails
        in: body
        type: array
        description: Attendee email list.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}}'
          start_time: '{{start_time}}'
      - name: send-invite
        type: call
        call: outlook.send-email
        with:
          to: '{{attendee_emails}}'
          subject: 'Meeting: {{topic}}'
          body: 'Join Zoom: {{create-meeting.join_url}}'
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /users/me/meetings
      operations:
      - name: create-meeting
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0/me
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → zoom-meeting-scheduler.yml

Retrieves a travel expense report from SAP Concur and creates a Jira approval task.

naftiko: '0.5'
info:
  label: SAP Concur Travel Expense Processor
  description: Retrieves a travel expense report from SAP Concur and creates a Jira approval task.
  tags:
  - finance
  - travel
  - sap-concur
  - jira
capability:
  exposes:
  - type: mcp
    namespace: travel-expenses
    port: 8080
    tools:
    - name: process-expense-report
      description: Validate a Concur expense report and route for approval.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: create-approval
        type: call
        call: jira.create-issue
        with:
          project_key: FIN
          summary: 'Expense review: {{get-report.employee_name}} - {{get-report.total_amount}} {{get-report.currency}}'
          issue_type: Task
  consumes:
  - type: http
    namespace: concur
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: reports
      path: /expense/reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-expense-report
        method: GET
  - type: http
    namespace: jira
    baseUri: https://hearst.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-expense-processor.yml

On critical alert from Datadog, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.

naftiko: '0.5'
info:
  label: IT Incident Response Pipeline
  description: On critical alert from Datadog, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.
  tags:
  - incident
  - datadog
  - servicenow
  - slack
  - zoom
capability:
  exposes:
  - type: mcp
    namespace: it-incident-response-pipeline
    port: 8080
    tools:
    - name: execute
      description: On critical alert from Datadog, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: servicenow.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: slack.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: zoom.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadog.com/v1
    authentication:
      type: bearer
      token: $secrets.datadog_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://api.servicenow.com/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.com/v1
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → it-incident-response-pipeline.yml

Checks Cloudflare CDN performance metrics for Hearst digital properties.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Monitor
  description: Checks Cloudflare CDN performance metrics for Hearst digital properties.
  tags:
  - performance
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cdn-monitoring
    port: 8080
    tools:
    - name: check-cdn-performance
      description: Check CDN performance for a Cloudflare zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone ID.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: cache_hit_rate
        type: string
        mapping: $.result.totals.requests.cached
      - name: bandwidth_saved
        type: string
        mapping: $.result.totals.bandwidth.cached
      - name: total_requests
        type: integer
        mapping: $.result.totals.requests.all
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: analytics
      path: /zones/{{zone_id}}/analytics/dashboard
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-performance-monitor.yml

Uploads episode to Amazon S3, updates RSS feed, promotes on Instagram, and tracks downloads in Google Analytics.

naftiko: '0.5'
info:
  label: Podcast Episode Publishing Pipeline
  description: Uploads episode to Amazon S3, updates RSS feed, promotes on Instagram, and tracks downloads in Google Analytics.
  tags:
  - content
  - amazon-s3
  - instagram
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: podcast-episode-publishing-pipeline
    port: 8080
    tools:
    - name: execute
      description: Uploads episode to Amazon S3, updates RSS feed, promotes on Instagram, and tracks downloads in Google Analytics.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: amazon-s3.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: instagram.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-analytics.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: google-analytics.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: amazon-s3
    baseUri: https://api.amazons3.com/v1
    authentication:
      type: bearer
      token: $secrets.amazon_s3_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://api.instagram.com/v1
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://api.googleanalytics.com/v1
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → podcast-episode-publishing-pipeline.yml

Pulls revenue data from SAP and writes to a Google Sheets dashboard.

naftiko: '0.5'
info:
  label: Google Sheets Revenue Dashboard Sync
  description: Pulls revenue data from SAP and writes to a Google Sheets dashboard.
  tags:
  - reporting
  - google-sheets
  - sap
capability:
  exposes:
  - type: mcp
    namespace: sheets-revenue
    port: 8080
    tools:
    - name: sync-revenue-dashboard
      description: Sync SAP revenue data to Google Sheets.
      inputParameters:
      - name: spreadsheet_id
        in: body
        type: string
        description: The Google Sheets ID.
      - name: period
        in: body
        type: string
        description: The revenue period.
      steps:
      - name: get-revenue
        type: call
        call: sap.get-revenue-summary
        with:
          period: '{{period}}'
      - name: update-sheet
        type: call
        call: gsheets.update-values
        with:
          spreadsheet_id: '{{spreadsheet_id}}'
          range: Revenue!A2:D2
          values:
          - - '{{period}}'
            - '{{get-revenue.ad_revenue}}'
            - '{{get-revenue.subscription_revenue}}'
            - '{{get-revenue.total_revenue}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hearst-s4.sap.com/sap/opu/odata/sap/ZFI_REVENUE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: revenue
      path: /RevenueSummarySet('{{period}}')
      inputParameters:
      - name: period
        in: path
      operations:
      - name: get-revenue-summary
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4/spreadsheets
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /{{spreadsheet_id}}/values/{{range}}
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: update-values
        method: PUT
Open in Framework → View in Fleet → google-sheets-revenue-dashboard-sync.yml

Creates partnership record in Salesforce, generates contract in DocuSign, sets up tracking in Google Sheets, and notifies via Microsoft Teams.

naftiko: '0.5'
info:
  label: Brand Partnership Pipeline
  description: Creates partnership record in Salesforce, generates contract in DocuSign, sets up tracking in Google Sheets, and notifies via Microsoft Teams.
  tags:
  - partnerships
  - salesforce
  - docusign
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: brand-partnership-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates partnership record in Salesforce, generates contract in DocuSign, sets up tracking in Google Sheets, and notifies via Microsoft Teams.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: salesforce.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: docusign.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-teams.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: docusign
    baseUri: https://api.docusign.com/v1
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-teams
    baseUri: https://api.microsoftteams.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_teams_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → brand-partnership-pipeline.yml

Retrieves digital platform performance metrics from New Relic by application ID, returning response time and error rate.

naftiko: '0.5'
info:
  label: New Relic Platform Health Lookup
  description: Retrieves digital platform performance metrics from New Relic by application ID, returning response time and error rate.
  tags:
  - monitoring
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: newrelic-health
    port: 8080
    tools:
    - name: get-platform-health
      description: Look up platform health metrics in New Relic.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic application ID.
      call: newrelic.get-app
      with:
        id: '{{app_id}}'
      outputParameters:
      - name: response_time
        type: string
        mapping: $.application.application_summary.response_time
      - name: error_rate
        type: string
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{id}}.json
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-app
        method: GET
Open in Framework → View in Fleet → new-relic-platform-health-lookup.yml

When a new article is approved in the CMS, publishes to WordPress, pushes to Google Analytics for tracking, distributes via MailChimp to subscribers, and posts a teaser to LinkedIn.

naftiko: '0.5'
info:
  label: Article Publishing Orchestrator
  description: When a new article is approved in the CMS, publishes to WordPress, pushes to Google Analytics for tracking, distributes via MailChimp to subscribers, and posts a teaser to LinkedIn.
  tags:
  - publishing
  - content
  - wordpress
  - google-analytics
  - mailchimp
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: article-publishing
    port: 8080
    tools:
    - name: publish-article
      description: Publish an article across website, email, and social channels.
      inputParameters:
      - name: article_id
        in: body
        type: string
        description: The CMS article ID.
      - name: subscriber_list_id
        in: body
        type: string
        description: The MailChimp subscriber list ID.
      steps:
      - name: get-article
        type: call
        call: wordpress.get-post
        with:
          post_id: '{{article_id}}'
      - name: send-newsletter
        type: call
        call: mailchimp.create-campaign
        with:
          list_id: '{{subscriber_list_id}}'
          subject: '{{get-article.title}}'
          body: '{{get-article.excerpt}} Read more: {{get-article.url}}'
      - name: send-campaign
        type: call
        call: mailchimp.send-campaign
        with:
          campaign_id: '{{send-newsletter.id}}'
      - name: post-social
        type: call
        call: linkedin.create-post
        with:
          author: urn:li:organization:hearst
          text: '{{get-article.title}} - {{get-article.excerpt}} Read more: {{get-article.url}} #Hearst #Media'
  consumes:
  - type: http
    namespace: wordpress
    baseUri: https://hearst.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-post
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: create-campaign
        method: POST
    - name: campaign-actions
      path: /campaigns/{{campaign_id}}/actions/send
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: posts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → article-publishing-orchestrator.yml

Retrieves payroll summary from ADP for a given pay period.

naftiko: '0.5'
info:
  label: ADP Payroll Summary
  description: Retrieves payroll summary from ADP for a given pay period.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: hr-payroll
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Get payroll summary from ADP.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: The pay period identifier.
      call: adp.get-payroll
      with:
        pay_period: '{{pay_period}}'
      outputParameters:
      - name: total_gross
        type: string
        mapping: $.payrollSummary.totalGross
      - name: total_net
        type: string
        mapping: $.payrollSummary.totalNet
      - name: employee_count
        type: integer
        mapping: $.payrollSummary.headcount
  consumes:
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /payroll-outputs?payPeriod={{pay_period}}
      inputParameters:
      - name: pay_period
        in: query
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-payroll-summary.yml

Identifies expiring subscriptions in Stripe, creates renewal campaigns in MailChimp, tracks in Salesforce, and logs in Snowflake.

naftiko: '0.5'
info:
  label: Subscription Renewal Campaign Pipeline
  description: Identifies expiring subscriptions in Stripe, creates renewal campaigns in MailChimp, tracks in Salesforce, and logs in Snowflake.
  tags:
  - subscriptions
  - stripe
  - mailchimp
  - salesforce
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: subscription-renewal-campaign-pipeline
    port: 8080
    tools:
    - name: execute
      description: Identifies expiring subscriptions in Stripe, creates renewal campaigns in MailChimp, tracks in Salesforce, and logs in Snowflake.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: stripe.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: mailchimp.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: salesforce.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: snowflake.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://api.mailchimp.com/v1
    authentication:
      type: bearer
      token: $secrets.mailchimp_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → subscription-renewal-campaign-pipeline.yml

Retrieves an advertiser account from Salesforce by ID, returning company name, industry, annual spend, and account manager.

naftiko: '0.5'
info:
  label: Salesforce Advertiser Account Lookup
  description: Retrieves an advertiser account from Salesforce by ID, returning company name, industry, annual spend, and account manager.
  tags:
  - advertising
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: advertiser-accounts
    port: 8080
    tools:
    - name: get-advertiser-account
      description: Look up a Salesforce advertiser account.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID.
      call: salesforce.get-account
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: company_name
        type: string
        mapping: $.Name
      - name: industry
        type: string
        mapping: $.Industry
      - name: annual_spend
        type: string
        mapping: $.Annual_Ad_Spend__c
      - name: account_manager
        type: string
        mapping: $.Owner.Name
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://hearst.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-advertiser-account-lookup.yml

Posts article teasers and breaking news alerts to the Hearst Twitter account.

naftiko: '0.5'
info:
  label: Twitter Content Amplifier
  description: Posts article teasers and breaking news alerts to the Hearst Twitter account.
  tags:
  - social-media
  - content
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: twitter-publishing
    port: 8080
    tools:
    - name: post-tweet
      description: Post a tweet to the Hearst Twitter account.
      inputParameters:
      - name: tweet_text
        in: body
        type: string
        description: The tweet content.
      call: twitter.create-tweet
      with:
        text: '{{tweet_text}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
Open in Framework → View in Fleet → twitter-content-amplifier.yml

Archives completed editorial content from SharePoint to Box for long-term storage.

naftiko: '0.5'
info:
  label: Box Editorial Archive
  description: Archives completed editorial content from SharePoint to Box for long-term storage.
  tags:
  - document-management
  - archival
  - sharepoint
  - box
capability:
  exposes:
  - type: mcp
    namespace: editorial-archive
    port: 8080
    tools:
    - name: archive-to-box
      description: Archive editorial content to Box.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: SharePoint site ID.
      - name: file_path
        in: body
        type: string
        description: File path.
      - name: box_folder_id
        in: body
        type: string
        description: Box folder ID.
      steps:
      - name: get-file
        type: call
        call: sharepoint.get-file-content
        with:
          site_id: '{{site_id}}'
          file_path: '{{file_path}}'
      - name: upload-to-box
        type: call
        call: box.upload-file
        with:
          folder_id: '{{box_folder_id}}'
          file_name: '{{file_path}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file-content
        method: GET
  - type: http
    namespace: box
    baseUri: https://upload.box.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/content
      operations:
      - name: upload-file
        method: POST
Open in Framework → View in Fleet → box-editorial-archive.yml

Detects negative sentiment via Snowflake, pauses campaigns in Facebook, alerts PR team via Slack, and creates Jira incident.

naftiko: '0.5'
info:
  label: Social Media Crisis Response Pipeline
  description: Detects negative sentiment via Snowflake, pauses campaigns in Facebook, alerts PR team via Slack, and creates Jira incident.
  tags:
  - crisis
  - snowflake
  - facebook
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: social-media-crisis-response-pipeline
    port: 8080
    tools:
    - name: execute
      description: Detects negative sentiment via Snowflake, pauses campaigns in Facebook, alerts PR team via Slack, and creates Jira incident.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: facebook.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: slack.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: jira.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://api.facebook.com/v1
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → social-media-crisis-response-pipeline.yml

Detects vulnerabilities via Splunk, creates Jira tickets, notifies security team via Slack, and triggers patches in Azure DevOps.

naftiko: '0.5'
info:
  label: Security Vulnerability Pipeline
  description: Detects vulnerabilities via Splunk, creates Jira tickets, notifies security team via Slack, and triggers patches in Azure DevOps.
  tags:
  - security
  - splunk
  - jira
  - slack
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: security-vulnerability-pipeline
    port: 8080
    tools:
    - name: execute
      description: Detects vulnerabilities via Splunk, creates Jira tickets, notifies security team via Slack, and triggers patches in Azure DevOps.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: splunk.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: jira.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: slack.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: azure-devops.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://api.splunk.com/v1
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: azure-devops
    baseUri: https://api.azuredevops.com/v1
    authentication:
      type: bearer
      token: $secrets.azure_devops_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → security-vulnerability-pipeline.yml

Retrieves a Figma editorial layout design file by key, returning file name, last modified date, and thumbnail URL.

naftiko: '0.5'
info:
  label: Figma Editorial Design Lookup
  description: Retrieves a Figma editorial layout design file by key, returning file name, last modified date, and thumbnail URL.
  tags:
  - design
  - figma
capability:
  exposes:
  - type: mcp
    namespace: figma-editorial
    port: 8080
    tools:
    - name: get-design
      description: Look up a Figma editorial design file by key.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: The Figma file key.
      call: figma.get-file
      with:
        key: '{{file_key}}'
      outputParameters:
      - name: file_name
        type: string
        mapping: $.name
      - name: last_modified
        type: string
        mapping: $.lastModified
  consumes:
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: files
      path: /files/{{key}}
      inputParameters:
      - name: key
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → figma-editorial-design-lookup.yml

Retrieves vendor master data from SAP by vendor number for Hearst procurement.

naftiko: '0.5'
info:
  label: SAP Vendor Master Lookup
  description: Retrieves vendor master data from SAP by vendor number for Hearst procurement.
  tags:
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: sap-vendors
    port: 8080
    tools:
    - name: get-data
      description: Retrieves vendor master data from SAP by vendor number for Hearst procurement.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: sap-vendors.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: sap-vendors
    baseUri: https://hearst-s4.sap.com/sap/opu/odata/sap/ZVENDOR_SRV
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → sap-vendor-master-lookup.yml

When a video is uploaded to YouTube, creates a content record in Salesforce, embeds in WordPress, and shares via Microsoft Teams.

naftiko: '0.5'
info:
  label: Video Content Workflow
  description: When a video is uploaded to YouTube, creates a content record in Salesforce, embeds in WordPress, and shares via Microsoft Teams.
  tags:
  - video
  - publishing
  - youtube
  - salesforce
  - wordpress
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: video-workflow
    port: 8080
    tools:
    - name: process-video-upload
      description: Process a new video by linking to CMS, CRM, and notifying teams.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: The YouTube video ID.
      - name: article_id
        in: body
        type: string
        description: The WordPress article to embed in.
      steps:
      - name: get-video
        type: call
        call: youtube.get-video
        with:
          video_id: '{{video_id}}'
      - name: create-content-record
        type: call
        call: salesforce.create-content
        with:
          title: '{{get-video.title}}'
          type: Video
          url: https://www.youtube.com/watch?v={{video_id}}
      - name: update-article
        type: call
        call: wordpress.update-post
        with:
          post_id: '{{article_id}}'
          video_embed: '{{video_id}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: content-team
          text: 'New video published: {{get-video.title}}. Embedded in article {{article_id}}. Watch: https://www.youtube.com/watch?v={{video_id}}'
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?id={{video_id}}&part=snippet
      inputParameters:
      - name: video_id
        in: query
      operations:
      - name: get-video
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: content
      path: /sobjects/Content__c
      operations:
      - name: create-content
        method: POST
  - type: http
    namespace: wordpress
    baseUri: https://hearst.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: update-post
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → video-content-workflow.yml

Retrieves content performance metrics from Google Analytics for a page, returning page views, time on page, and bounce rate.

naftiko: '0.5'
info:
  label: Google Analytics Content Performance
  description: Retrieves content performance metrics from Google Analytics for a page, returning page views, time on page, and bounce rate.
  tags:
  - analytics
  - content
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: content-analytics
    port: 8080
    tools:
    - name: get-content-performance
      description: Get Google Analytics metrics for a content page.
      inputParameters:
      - name: page_path
        in: body
        type: string
        description: The page URL path.
      call: ga.get-page-metrics
      with:
        page_path: '{{page_path}}'
      outputParameters:
      - name: page_views
        type: integer
        mapping: $.rows[0].metricValues[0].value
      - name: avg_time_on_page
        type: string
        mapping: $.rows[0].metricValues[1].value
      - name: bounce_rate
        type: string
        mapping: $.rows[0].metricValues[2].value
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-page-metrics
        method: POST
Open in Framework → View in Fleet → google-analytics-content-performance.yml

Combines paywall conversion data from Adobe Analytics with subscriber data from Salesforce, and pushes to Power BI for paywall optimization insights.

naftiko: '0.5'
info:
  label: Paywall Analytics Pipeline
  description: Combines paywall conversion data from Adobe Analytics with subscriber data from Salesforce, and pushes to Power BI for paywall optimization insights.
  tags:
  - subscriptions
  - analytics
  - adobe-analytics
  - salesforce
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: paywall-analytics
    port: 8080
    tools:
    - name: analyze-paywall
      description: Analyze paywall performance and push insights to Power BI.
      inputParameters:
      - name: publication
        in: body
        type: string
        description: The publication name.
      - name: period
        in: body
        type: string
        description: The analysis period.
      steps:
      - name: get-paywall-data
        type: call
        call: adobe-analytics.get-paywall-metrics
        with:
          publication: '{{publication}}'
          period: '{{period}}'
      - name: get-subscriber-data
        type: call
        call: salesforce.get-subscriber-metrics
        with:
          publication: '{{publication}}'
      - name: push-to-bi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: paywall_analytics_ds
          table_name: Paywall
          rows:
          - publication: '{{publication}}'
            period: '{{period}}'
            paywall_hits: '{{get-paywall-data.paywall_hits}}'
            conversion_rate: '{{get-paywall-data.conversion_rate}}'
            new_subscribers: '{{get-subscriber-data.new_count}}'
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /hearst/reports
      operations:
      - name: get-paywall-metrics
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: subscribers
      path: /sobjects/Subscriber_Metrics__c
      operations:
      - name: get-subscriber-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}}/tables/{{table_name}}/rows
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_name
        in: path
      operations:
      - name: push-rows
        method: POST
Open in Framework → View in Fleet → paywall-analytics-pipeline.yml

Sends a message to a specified Slack editorial channel, returning the message timestamp and confirmation.

naftiko: '0.5'
info:
  label: Slack Editorial Channel Sender
  description: Sends a message to a specified Slack editorial channel, returning the message timestamp and confirmation.
  tags:
  - communications
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack-editorial
    port: 8080
    tools:
    - name: send-message
      description: Send a message to a Slack editorial channel.
      inputParameters:
      - name: channel_name
        in: body
        type: string
        description: The Slack channel name.
      - name: message_text
        in: body
        type: string
        description: The message content.
      call: slack.post-message
      with:
        channel: '{{channel_name}}'
        text: '{{message_text}}'
      outputParameters:
      - name: timestamp
        type: string
        mapping: $.ts
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-editorial-channel-sender.yml

Collects public records data, stores in Snowflake, creates research project in Confluence, and assigns tasks in Jira.

naftiko: '0.5'
info:
  label: Investigative Story Research Pipeline
  description: Collects public records data, stores in Snowflake, creates research project in Confluence, and assigns tasks in Jira.
  tags:
  - editorial
  - snowflake
  - confluence
  - jira
capability:
  exposes:
  - type: mcp
    namespace: investigative-story-research-pipeline
    port: 8080
    tools:
    - name: execute
      description: Collects public records data, stores in Snowflake, creates research project in Confluence, and assigns tasks in Jira.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: confluence.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: jira.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: jira
    baseUri: https://api.jira.com/v1
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → investigative-story-research-pipeline.yml

Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.

naftiko: '0.5'
info:
  label: Financial Close Pipeline
  description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
  tags:
  - finance
  - sap
  - power-bi
  - box
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: financial-close-pipeline
    port: 8080
    tools:
    - name: execute
      description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: sap.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: power-bi.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: box.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: microsoft-teams.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://api.sap.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/v1
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: microsoft-teams
    baseUri: https://api.microsoftteams.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_teams_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → financial-close-pipeline.yml

Retrieves a Canva brand template by ID for Hearst editorial design teams.

naftiko: '0.5'
info:
  label: Canva Brand Template Lookup
  description: Retrieves a Canva brand template by ID for Hearst editorial design teams.
  tags:
  - design
  - canva
capability:
  exposes:
  - type: mcp
    namespace: canva-templates
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Canva brand template by ID for Hearst editorial design teams.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: canva-templates.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: canva-templates
    baseUri: https://api.canva.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.canva_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → canva-brand-template-lookup.yml

Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.

naftiko: '0.5'
info:
  label: ServiceNow IT Ticket Status
  description: Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.
  tags:
  - it-service
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: itsm-tickets
    port: 8080
    tools:
    - name: get-ticket-status
      description: Look up a ServiceNow incident by number.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number.
      call: servicenow.get-incident
      with:
        incident_number: '{{incident_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result[0].state
      - name: priority
        type: string
        mapping: $.result[0].priority
      - name: assigned_group
        type: string
        mapping: $.result[0].assignment_group.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://hearst.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident?sysparm_query=number={{incident_number}}
      inputParameters:
      - name: incident_number
        in: path
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-it-ticket-status.yml

Aggregates reader behavior from Snowflake, scores engagement via Azure ML, syncs to Salesforce, and reports in Tableau.

naftiko: '0.5'
info:
  label: Reader Engagement Scoring Pipeline
  description: Aggregates reader behavior from Snowflake, scores engagement via Azure ML, syncs to Salesforce, and reports in Tableau.
  tags:
  - engagement
  - snowflake
  - azure-machine-learning
  - salesforce
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: reader-engagement-scoring-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates reader behavior from Snowflake, scores engagement via Azure ML, syncs to Salesforce, and reports in Tableau.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: azure-machine-learning.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: salesforce.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: tableau.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: azure-machine-learning
    baseUri: https://api.azuremachinelearning.com/v1
    authentication:
      type: bearer
      token: $secrets.azure_machine_learning_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://api.salesforce.com/v1
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://api.tableau.com/v1
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → reader-engagement-scoring-pipeline.yml

Retrieves an employee benefits enrollment summary from Workday by employee ID, returning plan name and coverage level.

naftiko: '0.5'
info:
  label: Workday Employee Benefits Lookup
  description: Retrieves an employee benefits enrollment summary from Workday by employee ID, returning plan name and coverage level.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: workday-benefits
    port: 8080
    tools:
    - name: get-benefits
      description: Look up employee benefits in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      call: workday.get-benefits
      with:
        id: '{{employee_id}}'
      outputParameters:
      - name: plan_name
        type: string
        mapping: $.Benefit_Plan
      - name: coverage_level
        type: string
        mapping: $.Coverage_Level
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/hearst
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: benefits
      path: /Benefits/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-benefits
        method: GET
Open in Framework → View in Fleet → workday-employee-benefits-lookup.yml

Coordinates magazine production by syncing editorial calendar from Airtable, tracking layouts in Figma, uploading to SharePoint, and notifying editors via Slack.

naftiko: '0.5'
info:
  label: Magazine Issue Production Pipeline
  description: Coordinates magazine production by syncing editorial calendar from Airtable, tracking layouts in Figma, uploading to SharePoint, and notifying editors via Slack.
  tags:
  - editorial
  - airtable
  - figma
  - sharepoint
  - slack
capability:
  exposes:
  - type: mcp
    namespace: magazine-issue-production-pipeline
    port: 8080
    tools:
    - name: execute
      description: Coordinates magazine production by syncing editorial calendar from Airtable, tracking layouts in Figma, uploading to SharePoint, and notifying editors via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: airtable.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: figma.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: sharepoint.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v1
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://api.sharepoint.com/v1
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → magazine-issue-production-pipeline.yml

Retrieves a Salesforce advertising opportunity by ID, returning deal stage, amount, close date, and account name.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Lookup
  description: Retrieves a Salesforce advertising opportunity by ID, returning deal stage, amount, close date, and account name.
  tags:
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: salesforce-opps
    port: 8080
    tools:
    - name: get-opportunity
      description: Look up a Salesforce advertising opportunity by ID.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID.
      call: salesforce.get-opportunity
      with:
        id: '{{opportunity_id}}'
      outputParameters:
      - name: stage
        type: string
        mapping: $.StageName
      - name: amount
        type: string
        mapping: $.Amount
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-opportunity
        method: GET
Open in Framework → View in Fleet → salesforce-opportunity-lookup.yml

Collects environmental data from SAP, aggregates in Snowflake, generates reports in Google Sheets, and publishes to Confluence.

naftiko: '0.5'
info:
  label: Sustainability Reporting Pipeline
  description: Collects environmental data from SAP, aggregates in Snowflake, generates reports in Google Sheets, and publishes to Confluence.
  tags:
  - sustainability
  - sap
  - snowflake
  - google-sheets
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: sustainability-reporting-pipeline
    port: 8080
    tools:
    - name: execute
      description: Collects environmental data from SAP, aggregates in Snowflake, generates reports in Google Sheets, and publishes to Confluence.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: sap.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-sheets.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: confluence.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://api.sap.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: google-sheets
    baseUri: https://api.googlesheets.com/v1
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → sustainability-reporting-pipeline.yml

Retrieves a document from SharePoint by path.

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

Pulls email metrics from MailChimp, stores in Snowflake, refreshes Tableau dashboards, and shares insights via Slack.

naftiko: '0.5'
info:
  label: Newsletter Performance Pipeline
  description: Pulls email metrics from MailChimp, stores in Snowflake, refreshes Tableau dashboards, and shares insights via Slack.
  tags:
  - email
  - mailchimp
  - snowflake
  - tableau
  - slack
capability:
  exposes:
  - type: mcp
    namespace: newsletter-performance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls email metrics from MailChimp, stores in Snowflake, refreshes Tableau dashboards, and shares insights via Slack.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: mailchimp.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: snowflake.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: tableau.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: slack.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: mailchimp
    baseUri: https://api.mailchimp.com/v1
    authentication:
      type: bearer
      token: $secrets.mailchimp_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://api.snowflake.com/v1
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://api.tableau.com/v1
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → newsletter-performance-pipeline.yml

Captures a new advertising lead in HubSpot, enriches with Salesforce account data, and notifies the ad sales team in Microsoft Teams.

naftiko: '0.5'
info:
  label: HubSpot Lead Capture for Advertising
  description: Captures a new advertising lead in HubSpot, enriches with Salesforce account data, and notifies the ad sales team in Microsoft Teams.
  tags:
  - advertising
  - lead-management
  - hubspot
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ad-leads
    port: 8080
    tools:
    - name: capture-ad-lead
      description: Capture and enrich an advertising lead.
      inputParameters:
      - name: lead_email
        in: body
        type: string
        description: The lead email address.
      - name: company_name
        in: body
        type: string
        description: The lead company name.
      steps:
      - name: create-contact
        type: call
        call: hubspot.create-contact
        with:
          email: '{{lead_email}}'
          company: '{{company_name}}'
          lead_source: Advertising Inquiry
      - name: search-sf
        type: call
        call: salesforce.search-account
        with:
          company_name: '{{company_name}}'
      - name: notify-sales
        type: call
        call: msteams.send-message
        with:
          channel_id: ad-sales
          text: 'New ad lead: {{company_name}} ({{lead_email}}). HubSpot: {{create-contact.id}}. SF Account: {{search-sf.Name}}.'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts
      operations:
      - name: create-contact
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /parameterizedSearch/?q={{company_name}}&sobject=Account
      inputParameters:
      - name: company_name
        in: query
      operations:
      - name: search-account
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → hubspot-lead-capture-for-advertising.yml

Builds audience segments from Adobe Analytics behavior data, pushes to Salesforce for targeted campaigns, and syncs to MailChimp for email targeting.

naftiko: '0.5'
info:
  label: Audience Segmentation Builder
  description: Builds audience segments from Adobe Analytics behavior data, pushes to Salesforce for targeted campaigns, and syncs to MailChimp for email targeting.
  tags:
  - marketing
  - audience
  - adobe-analytics
  - salesforce
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: audience-segments
    port: 8080
    tools:
    - name: build-audience-segment
      description: Build and distribute an audience segment across CRM and email platforms.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: The audience segment name.
      - name: behavior_criteria
        in: body
        type: string
        description: The behavioral criteria for segmentation.
      steps:
      - name: get-segment
        type: call
        call: adobe-analytics.get-segment
        with:
          criteria: '{{behavior_criteria}}'
      - name: update-sf
        type: call
        call: salesforce.create-campaign
        with:
          name: 'Segment: {{segment_name}}'
          type: Audience Segment
          member_count: '{{get-segment.member_count}}'
      - name: sync-mailchimp
        type: call
        call: mailchimp.create-segment
        with:
          list_id: main_subscriber_list
          segment_name: '{{segment_name}}'
          member_count: '{{get-segment.member_count}}'
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: segments
      path: /hearst/segments
      operations:
      - name: get-segment
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://hearst.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: segments
      path: /lists/{{list_id}}/segments
      inputParameters:
      - name: list_id
        in: path
      operations:
      - name: create-segment
        method: POST
Open in Framework → View in Fleet → audience-segmentation-builder.yml

Deploys an Adobe Launch tag library update and notifies the analytics team.

naftiko: '0.5'
info:
  label: Adobe Launch Tag Deployment
  description: Deploys an Adobe Launch tag library update and notifies the analytics team.
  tags:
  - analytics
  - tag-management
  - adobe-launch
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: tag-deployment
    port: 8080
    tools:
    - name: deploy-adobe-launch
      description: Deploy an Adobe Launch library and notify the team.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The Adobe Launch property ID.
      - name: environment
        in: body
        type: string
        description: The target environment (dev, staging, production).
      steps:
      - name: trigger-build
        type: call
        call: adobe-launch.create-build
        with:
          property_id: '{{property_id}}'
          environment: '{{environment}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: analytics-ops
          text: 'Adobe Launch deployed to {{environment}} for property {{property_id}}. Build ID: {{trigger-build.build_id}}.'
  consumes:
  - type: http
    namespace: adobe-launch
    baseUri: https://reactor.adobe.io
    authentication:
      type: bearer
      token: $secrets.adobe_launch_token
    resources:
    - name: builds
      path: /properties/{{property_id}}/builds
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: create-build
        method: POST
  - 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 → adobe-launch-tag-deployment.yml

Deactivates Workday profile, revokes Azure AD access, creates ServiceNow IT ticket, and archives documents in Box.

naftiko: '0.5'
info:
  label: Employee Offboarding Pipeline
  description: Deactivates Workday profile, revokes Azure AD access, creates ServiceNow IT ticket, and archives documents in Box.
  tags:
  - hr
  - workday
  - azure-active-directory
  - servicenow
  - box
capability:
  exposes:
  - type: mcp
    namespace: employee-offboarding-pipeline
    port: 8080
    tools:
    - name: execute
      description: Deactivates Workday profile, revokes Azure AD access, creates ServiceNow IT ticket, and archives documents in Box.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      - name: context
        in: body
        type: string
        description: Additional context parameter.
      steps:
      - name: step-1
        type: call
        call: workday.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: azure-active-directory.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.execute-step-3
        with:
          data: '{{step-2.result}}'
      - name: step-4
        type: call
        call: box.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://api.workday.com/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: azure-active-directory
    baseUri: https://api.azureactivedirectory.com/v1
    authentication:
      type: bearer
      token: $secrets.azure_active_directory_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://api.servicenow.com/v1
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
  - type: http
    namespace: box
    baseUri: https://api.box.com/v1
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → employee-offboarding-pipeline.yml

Retrieves engagement metrics for a Hearst Instagram post by media ID.

naftiko: '0.5'
info:
  label: Instagram Content Metrics Lookup
  description: Retrieves engagement metrics for a Hearst Instagram post by media ID.
  tags:
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: instagram-metrics
    port: 8080
    tools:
    - name: get-data
      description: Retrieves engagement metrics for a Hearst Instagram post by media ID.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: instagram-metrics.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: instagram-metrics
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → instagram-content-metrics-lookup.yml

Retrieves the status of a DocuSign media contract envelope by ID, returning signing status, sender, and completion date.

naftiko: '0.5'
info:
  label: DocuSign Media Contract Lookup
  description: Retrieves the status of a DocuSign media contract envelope by ID, returning signing status, sender, and completion date.
  tags:
  - legal
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: docusign-contracts
    port: 8080
    tools:
    - name: get-contract-status
      description: Look up a DocuSign media contract envelope by ID.
      inputParameters:
      - name: envelope_id
        in: body
        type: string
        description: The DocuSign envelope ID.
      call: docusign.get-envelope
      with:
        id: '{{envelope_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: sender
        type: string
        mapping: $.sender.userName
  consumes:
  - type: http
    namespace: docusign
    baseUri: https://na4.docusign.net/restapi/v2.1/accounts/hearst
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /envelopes/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-envelope
        method: GET
Open in Framework → View in Fleet → docusign-media-contract-lookup.yml

Retrieves a Tableau audience analytics dashboard view for Hearst digital properties.

naftiko: '0.5'
info:
  label: Tableau Audience Report
  description: Retrieves a Tableau audience analytics dashboard view for Hearst digital properties.
  tags:
  - analytics
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: tableau-audience
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Tableau audience analytics dashboard view for Hearst digital properties.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: tableau-audience.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: tableau-audience
    baseUri: https://tableau.hearst.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → tableau-audience-report.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 34
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-34
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-34.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 20
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-20
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://majorleaguebaseball-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 → major-league-baseball-workflow-20.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 1
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-1.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 21
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-21
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-21.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 35
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-35
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-35.yml

Monitors MLB infrastructure health via Datadog, tracking server metrics, container health, and API latency for digital platforms.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Monitor
  description: Monitors MLB infrastructure health via Datadog, tracking server metrics, container health, and API latency for digital platforms.
  tags:
  - monitoring
  - datadog
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infra-monitor
    port: 8080
    tools:
    - name: get-infra-metrics
      description: Retrieve infrastructure metrics from Datadog for a specified service.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The service name to monitor.
      - name: timeframe
        in: body
        type: string
        description: Time range (e.g., last_1h, last_24h).
      call: datadog.get-metrics
      with:
        service: '{{service_name}}'
        from: '{{timeframe}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-monitor.yml

Generates Microsoft Excel financial reports for team revenue sharing, pulling data from Salesforce and distributing via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Microsoft Excel Financial Report Generator
  description: Generates Microsoft Excel financial reports for team revenue sharing, pulling data from Salesforce and distributing via Microsoft Outlook.
  tags:
  - finance
  - microsoft-excel
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: financial-reports
    port: 8080
    tools:
    - name: generate-revenue-sharing-report
      description: Generate a revenue sharing report from Salesforce data and email to finance team.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period (e.g., 2026-Q1).
      - name: recipient_email
        in: body
        type: string
        description: Finance team email address.
      steps:
      - name: get-revenue-data
        type: call
        call: salesforce.get-revenue-data
        with:
          period: '{{fiscal_period}}'
      - name: send-report
        type: call
        call: outlook.send-email
        with:
          to: '{{recipient_email}}'
          subject: Revenue Sharing Report - {{fiscal_period}}
          body: 'Revenue sharing report for {{fiscal_period}}. Total league revenue: {{get-revenue-data.total_revenue}}. Per-team share: {{get-revenue-data.per_team_share}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: revenue
      path: /sobjects/Revenue_Record__c
      operations:
      - name: get-revenue-data
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → microsoft-excel-financial-report-generator.yml

Uploads game recap clips and highlight reels to the MLB YouTube channel with metadata, tags, and scheduled publish times.

naftiko: '0.5'
info:
  label: YouTube Broadcast Clip Uploader
  description: Uploads game recap clips and highlight reels to the MLB YouTube channel with metadata, tags, and scheduled publish times.
  tags:
  - broadcast
  - youtube
  - video
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: youtube-uploads
    port: 8080
    tools:
    - name: upload-clip
      description: Upload a video clip to YouTube with title, description, and schedule.
      inputParameters:
      - name: video_url
        in: body
        type: string
        description: URL of the video file to upload.
      - name: title
        in: body
        type: string
        description: YouTube video title.
      - name: description
        in: body
        type: string
        description: Video description.
      - name: publish_at
        in: body
        type: string
        description: Scheduled publish time in ISO 8601 format.
      call: youtube.upload-video
      with:
        video_url: '{{video_url}}'
        title: '{{title}}'
        description: '{{description}}'
        publish_at: '{{publish_at}}'
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/upload/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?part=snippet,status
      operations:
      - name: upload-video
        method: POST
Open in Framework → View in Fleet → youtube-broadcast-clip-uploader.yml

Refreshes the Power BI attendance analytics dashboard with latest ticketing and turnstile data from the data warehouse.

naftiko: '0.5'
info:
  label: Power BI Attendance Dashboard
  description: Refreshes the Power BI attendance analytics dashboard with latest ticketing and turnstile data from the data warehouse.
  tags:
  - reporting
  - power-bi
  - attendance
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: attendance-bi
    port: 8080
    tools:
    - name: refresh-attendance-dashboard
      description: Trigger a Power BI dataset refresh for attendance 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-attendance-dashboard.yml

Fetches the current active roster for an MLB team, including player names, positions, jersey numbers, and status.

naftiko: '0.5'
info:
  label: Team Roster Retrieval
  description: Fetches the current active roster for an MLB team, including player names, positions, jersey numbers, and status.
  tags:
  - team-management
  - roster
  - mlb-stats
capability:
  exposes:
  - type: mcp
    namespace: team-roster
    port: 8080
    tools:
    - name: get-roster
      description: Retrieve the active roster for an MLB team by team ID.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: The MLB team ID.
      call: mlb-stats.get-roster
      with:
        team_id: '{{team_id}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: rosters
      path: /teams/{{team_id}}/roster/active
      inputParameters:
      - name: team_id
        in: path
      operations:
      - name: get-roster
        method: GET
Open in Framework → View in Fleet → team-roster-retrieval.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 23
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-23
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-23.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 2
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-2.yml

Posts real-time game updates and operational alerts to dedicated Slack channels during live games for operations coordination.

naftiko: '0.5'
info:
  label: Slack Game Day Alert Channel
  description: Posts real-time game updates and operational alerts to dedicated Slack channels during live games for operations coordination.
  tags:
  - operations
  - slack
  - gameday
  - real-time
capability:
  exposes:
  - type: mcp
    namespace: gameday-alerts
    port: 8080
    tools:
    - name: post-game-alert
      description: Post a real-time game operations alert to the appropriate Slack channel.
      inputParameters:
      - name: alert_type
        in: body
        type: string
        description: Alert type (weather, security, operations, broadcast).
      - name: message
        in: body
        type: string
        description: Alert message content.
      - name: venue
        in: body
        type: string
        description: Venue name for channel routing.
      call: slack.post-message
      with:
        channel: gameday-{{venue}}-{{alert_type}}
        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-game-day-alert-channel.yml

Archives league compliance documents from SharePoint to Box with retention policies for regulatory and legal requirements.

naftiko: '0.5'
info:
  label: Box Document Compliance Archive
  description: Archives league compliance documents from SharePoint to Box with retention policies for regulatory and legal requirements.
  tags:
  - compliance
  - box
  - sharepoint
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: compliance-archive
    port: 8080
    tools:
    - name: archive-compliance-docs
      description: Move compliance documents from SharePoint to Box long-term archive.
      inputParameters:
      - name: document_category
        in: body
        type: string
        description: Document category (drug-testing, financial, labor-relations).
      - name: year
        in: body
        type: string
        description: Document year.
      steps:
      - name: get-docs
        type: call
        call: sharepoint.list-files
        with:
          site_id: compliance_docs
          folder_path: '{{document_category}}/{{year}}'
      - name: upload-to-box
        type: call
        call: box.upload-file
        with:
          folder_id: compliance_archive
          file_name: '{{document_category}}_{{year}}_archive.zip'
          metadata: category:{{document_category}},year:{{year}},retention: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-document-compliance-archive.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 3
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-3.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 22
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-22
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-22.yml

Configures and runs Looker analytics queries for MLB business intelligence, generating custom dashboards for league operations.

naftiko: '0.5'
info:
  label: Looker Analytics Dashboard Builder
  description: Configures and runs Looker analytics queries for MLB business intelligence, generating custom dashboards for league operations.
  tags:
  - analytics
  - looker
  - business-intelligence
capability:
  exposes:
  - type: mcp
    namespace: looker-analytics
    port: 8080
    tools:
    - name: run-looker-query
      description: Execute a Looker analytics query and return results.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: The Looker model name.
      - name: explore_name
        in: body
        type: string
        description: The Looker explore name.
      - name: fields
        in: body
        type: string
        description: Comma-separated list of fields to query.
      call: looker.run-query
      with:
        model: '{{model_name}}'
        explore: '{{explore_name}}'
        fields: '{{fields}}'
  consumes:
  - type: http
    namespace: looker
    baseUri: https://mlb.cloud.looker.com/api/4.0
    authentication:
      type: bearer
      token: $secrets.looker_token
    resources:
    - name: queries
      path: /queries/run/json
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → looker-analytics-dashboard-builder.yml

Retrieves approved brand design assets from Canva for use in MLB marketing materials and social media content.

naftiko: '0.5'
info:
  label: Canva Brand Asset Manager
  description: Retrieves approved brand design assets from Canva for use in MLB marketing materials and social media content.
  tags:
  - brand-management
  - canva
  - design
capability:
  exposes:
  - type: mcp
    namespace: brand-assets
    port: 8080
    tools:
    - name: get-brand-asset
      description: Retrieve an approved brand asset from Canva by design ID.
      inputParameters:
      - name: design_id
        in: body
        type: string
        description: The Canva design ID.
      call: canva.get-design
      with:
        design_id: '{{design_id}}'
  consumes:
  - type: http
    namespace: canva
    baseUri: https://api.canva.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.canva_token
    resources:
    - name: designs
      path: /designs/{{design_id}}
      inputParameters:
      - name: design_id
        in: path
      operations:
      - name: get-design
        method: GET
Open in Framework → View in Fleet → canva-brand-asset-manager.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 26
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-26
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-26.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 32
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-32
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://majorleaguebaseball-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 → major-league-baseball-workflow-32.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 7
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-7.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 6
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-6.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 33
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-33
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-33.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 27
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-27
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#baseball'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-27.yml

Queries New Relic for application performance metrics for MLB digital platforms, including response times, throughput, and error rates.

naftiko: '0.5'
info:
  label: New Relic Application Performance Monitor
  description: Queries New Relic for application performance metrics for MLB digital platforms, including response times, throughput, and error rates.
  tags:
  - monitoring
  - new-relic
  - application-performance
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Retrieve New Relic APM metrics for an MLB application.
      inputParameters:
      - name: app_name
        in: body
        type: string
        description: The New Relic application name.
      call: newrelic.get-app-metrics
      with:
        app_name: '{{app_name}}'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications.json
      inputParameters:
      - name: app_name
        in: query
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance-monitor.yml

Manages fan support tickets in Zendesk for ticket refunds, account issues, and streaming problems.

naftiko: '0.5'
info:
  label: Zendesk Fan Support Ticket Manager
  description: Manages fan support tickets in Zendesk for ticket refunds, account issues, and streaming problems.
  tags:
  - fan-support
  - zendesk
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: fan-support
    port: 8080
    tools:
    - name: create-fan-ticket
      description: Create a Zendesk support ticket for a fan issue.
      inputParameters:
      - name: fan_email
        in: body
        type: string
        description: Fan email address.
      - name: issue_type
        in: body
        type: string
        description: Issue type (refund, account, streaming, merchandise).
      - name: description
        in: body
        type: string
        description: Issue description.
      call: zendesk.create-ticket
      with:
        requester_email: '{{fan_email}}'
        subject: 'Fan support: {{issue_type}}'
        description: '{{description}}'
        tags: fan-support,{{issue_type}}
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://mlb.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-fan-support-ticket-manager.yml

Generates driving and transit directions to MLB ballparks using Google Maps API for fan-facing applications.

naftiko: '0.5'
info:
  label: Google Maps Venue Directions Generator
  description: Generates driving and transit directions to MLB ballparks using Google Maps API for fan-facing applications.
  tags:
  - fan-experience
  - google-maps
  - venues
capability:
  exposes:
  - type: mcp
    namespace: venue-directions
    port: 8080
    tools:
    - name: get-directions
      description: Get driving and transit directions to an MLB ballpark.
      inputParameters:
      - name: origin_address
        in: body
        type: string
        description: Starting address.
      - name: venue_id
        in: body
        type: string
        description: MLB venue ID.
      call: google-maps.get-directions
      with:
        origin: '{{origin_address}}'
        venue_id: '{{venue_id}}'
  consumes:
  - type: http
    namespace: google-maps
    baseUri: https://maps.googleapis.com/maps/api
    authentication:
      type: apiKey
      key: $secrets.google_maps_key
    resources:
    - name: directions
      path: /directions/json
      inputParameters:
      - name: origin
        in: query
      - name: venue_id
        in: query
      operations:
      - name: get-directions
        method: GET
Open in Framework → View in Fleet → google-maps-venue-directions-generator.yml

Monitors Jira sprint progress for MLB digital product development teams, tracking story points, velocity, and blockers.

naftiko: '0.5'
info:
  label: Jira Development Sprint Tracker
  description: Monitors Jira sprint progress for MLB digital product development teams, tracking story points, velocity, and blockers.
  tags:
  - development
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: sprint-tracking
    port: 8080
    tools:
    - name: get-sprint-status
      description: Retrieve Jira sprint status and metrics.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID.
      - name: sprint_id
        in: body
        type: string
        description: Sprint ID.
      call: jira.get-sprint
      with:
        board_id: '{{board_id}}'
        sprint_id: '{{sprint_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mlb.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint/{{sprint_id}}
      inputParameters:
      - name: board_id
        in: path
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint
        method: GET
Open in Framework → View in Fleet → jira-development-sprint-tracker.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 31
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-31
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: baseball
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-31.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 25
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-25
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-25.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 19
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-19
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: baseball
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-19.yml

Manages MLB event and production projects in Asana, creating tasks for game production, marketing campaigns, and operational initiatives.

naftiko: '0.5'
info:
  label: Asana Project Tracker
  description: Manages MLB event and production projects in Asana, creating tasks for game production, marketing campaigns, and operational initiatives.
  tags:
  - project-management
  - asana
  - operations
capability:
  exposes:
  - type: mcp
    namespace: project-tracking
    port: 8080
    tools:
    - name: create-project-task
      description: Create a task in Asana for an MLB project.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: Asana project ID.
      - name: task_name
        in: body
        type: string
        description: Task name.
      - name: due_date
        in: body
        type: string
        description: Due date.
      call: asana.create-task
      with:
        project_id: '{{project_id}}'
        name: '{{task_name}}'
        due_on: '{{due_date}}'
  consumes:
  - type: http
    namespace: asana
    baseUri: https://app.asana.com/api/1.0
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: tasks
      path: /tasks
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → asana-project-tracker.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 4
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-4.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 5
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-5.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 18
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-18
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASE
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-18.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 24
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-24
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: baseball.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-24.yml

Retrieves player performance statistics from the MLB Stats API by player ID, returning batting average, home runs, ERA, and other key metrics.

naftiko: '0.5'
info:
  label: Player Stats Lookup
  description: Retrieves player performance statistics from the MLB Stats API by player ID, returning batting average, home runs, ERA, and other key metrics.
  tags:
  - player-analytics
  - statistics
  - mlb-stats
capability:
  exposes:
  - type: mcp
    namespace: player-stats
    port: 8080
    tools:
    - name: get-player-stats
      description: Look up a player's season statistics by player ID and season year.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The MLB player ID.
      - name: season
        in: body
        type: string
        description: The season year (e.g., 2026).
      call: mlb-stats.get-player-stats
      with:
        player_id: '{{player_id}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: player-stats
      path: /people/{{player_id}}/stats?stats=season&season={{season}}
      inputParameters:
      - name: player_id
        in: path
      - name: season
        in: query
      operations:
      - name: get-player-stats
        method: GET
Open in Framework → View in Fleet → player-stats-lookup.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 30
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-30
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASE
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-30.yml

Pulls game highlight clips from the MLB media system, generates social media posts, and publishes to Twitter, Instagram, and Facebook simultaneously.

naftiko: '0.5'
info:
  label: Social Media Game Highlights Publisher
  description: Pulls game highlight clips from the MLB media system, generates social media posts, and publishes to Twitter, Instagram, and Facebook simultaneously.
  tags:
  - social-media
  - twitter
  - instagram
  - facebook
  - highlights
capability:
  exposes:
  - type: mcp
    namespace: social-highlights
    port: 8080
    tools:
    - name: publish-highlight
      description: Publish a game highlight clip across Twitter, Instagram, and Facebook.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The MLB game PK ID.
      - name: highlight_id
        in: body
        type: string
        description: The highlight clip ID.
      - name: caption
        in: body
        type: string
        description: Social media caption text.
      steps:
      - name: get-highlight
        type: call
        call: mlb-media.get-highlight
        with:
          game_id: '{{game_id}}'
          highlight_id: '{{highlight_id}}'
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: '{{caption}}'
          media_url: '{{get-highlight.video_url}}'
      - name: post-instagram
        type: call
        call: instagram.create-media
        with:
          video_url: '{{get-highlight.video_url}}'
          caption: '{{caption}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{caption}}'
          video_url: '{{get-highlight.video_url}}'
  consumes:
  - type: http
    namespace: mlb-media
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: highlights
      path: /game/{{game_id}}/content
      inputParameters:
      - name: game_id
        in: path
      operations:
      - name: get-highlight
        method: GET
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      operations:
      - name: create-media
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: posts
      path: /{{page_id}}/feed
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → social-media-game-highlights-publisher.yml

Retrieves Google Tag Manager configurations for MLB digital properties to validate tracking tags for fan engagement events.

naftiko: '0.5'
info:
  label: Google Tag Manager Event Setup
  description: Retrieves Google Tag Manager configurations for MLB digital properties to validate tracking tags for fan engagement events.
  tags:
  - analytics
  - google-tag-manager
  - tracking
capability:
  exposes:
  - type: mcp
    namespace: gtm-config
    port: 8080
    tools:
    - name: get-tag-config
      description: Retrieve GTM container tag configurations for validation.
      inputParameters:
      - name: container_id
        in: body
        type: string
        description: The GTM container ID.
      call: gtm.get-tags
      with:
        container_id: '{{container_id}}'
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_gtm_token
    resources:
    - name: tags
      path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags
      inputParameters:
      - name: container_id
        in: path
      operations:
      - name: get-tags
        method: GET
Open in Framework → View in Fleet → google-tag-manager-event-setup.yml

Logs security incidents at ballparks via ServiceNow, attaches camera footage references, and alerts venue security management through Microsoft Teams.

naftiko: '0.5'
info:
  label: Ballpark Security Incident Logger
  description: Logs security incidents at ballparks via ServiceNow, attaches camera footage references, and alerts venue security management through Microsoft Teams.
  tags:
  - security
  - servicenow
  - microsoft-teams
  - venue-operations
capability:
  exposes:
  - type: mcp
    namespace: security-incidents
    port: 8080
    tools:
    - name: log-security-incident
      description: Log a ballpark security incident in ServiceNow and alert security management.
      inputParameters:
      - name: venue_name
        in: body
        type: string
        description: Ballpark venue name.
      - name: incident_type
        in: body
        type: string
        description: Incident type (fan-altercation, trespassing, medical, suspicious-activity).
      - name: location_detail
        in: body
        type: string
        description: Specific location within the venue.
      - name: description
        in: body
        type: string
        description: Description of the incident.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Security: {{incident_type}} at {{venue_name}}'
          category: security
          priority: '2'
          description: 'Location: {{location_detail}}. Details: {{description}}'
      - name: alert-security
        type: call
        call: msteams.send-message
        with:
          channel_id: venue-security-{{venue_name}}
          text: 'Security incident at {{venue_name}} ({{location_detail}}): {{incident_type}}. Ticket: {{create-incident.number}}. {{description}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mlb.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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 → ballpark-security-incident-logger.yml

Pulls fan engagement metrics from Google Analytics for MLB.com, including page views, session duration, and top content sections.

naftiko: '0.5'
info:
  label: Google Analytics Fan Engagement Reporter
  description: Pulls fan engagement metrics from Google Analytics for MLB.com, including page views, session duration, and top content sections.
  tags:
  - fan-engagement
  - google-analytics
  - web-analytics
capability:
  exposes:
  - type: mcp
    namespace: fan-analytics
    port: 8080
    tools:
    - name: get-fan-engagement
      description: Retrieve fan engagement metrics from Google Analytics for a date range.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: 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-fan-engagement-reporter.yml

Runs player performance prediction models in Azure Machine Learning for scouting and roster optimization.

naftiko: '0.5'
info:
  label: Azure Machine Learning Player Prediction
  description: Runs player performance prediction models in Azure Machine Learning for scouting and roster optimization.
  tags:
  - player-analytics
  - azure-machine-learning
  - predictions
capability:
  exposes:
  - type: mcp
    namespace: player-predictions
    port: 8080
    tools:
    - name: predict-player-performance
      description: Run an Azure ML prediction model for player performance forecasting.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: MLB player ID.
      - name: model_name
        in: body
        type: string
        description: Prediction model (batting, pitching, WAR).
      call: azureml.score-model
      with:
        player_id: '{{player_id}}'
        model: '{{model_name}}'
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://mlb-ml.eastus2.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: score-model
        method: POST
Open in Framework → View in Fleet → azure-machine-learning-player-prediction.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 9
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-9
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-9.yml

Monitors the performance of MLB live game streaming infrastructure via Dynatrace during active broadcasts.

naftiko: '0.5'
info:
  label: Dynatrace Live Game Performance Monitor
  description: Monitors the performance of MLB live game streaming infrastructure via Dynatrace during active broadcasts.
  tags:
  - monitoring
  - dynatrace
  - broadcast
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: stream-performance
    port: 8080
    tools:
    - name: check-stream-health
      description: Check Dynatrace metrics for live game streaming performance.
      inputParameters:
      - name: stream_service_id
        in: body
        type: string
        description: The Dynatrace entity ID for the streaming service.
      call: dynatrace.get-metrics
      with:
        entity_id: '{{stream_service_id}}'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://mlb.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-live-game-performance-monitor.yml

Monitors ballpark Wi-Fi network performance via Cisco infrastructure, checking access point health and fan connectivity metrics.

naftiko: '0.5'
info:
  label: Venue Wi-Fi Network Monitor
  description: Monitors ballpark Wi-Fi network performance via Cisco infrastructure, checking access point health and fan connectivity metrics.
  tags:
  - network
  - cisco
  - venue-technology
  - wi-fi
capability:
  exposes:
  - type: mcp
    namespace: venue-wifi
    port: 8080
    tools:
    - name: check-wifi-health
      description: Check Wi-Fi network health at a ballpark venue.
      inputParameters:
      - name: venue_name
        in: body
        type: string
        description: The ballpark venue name.
      call: cisco.get-wifi-status
      with:
        venue: '{{venue_name}}'
  consumes:
  - type: http
    namespace: cisco
    baseUri: https://mlb-cisco-dnac.com/dna/intent/api/v1
    authentication:
      type: bearer
      token: $secrets.cisco_token
    resources:
    - name: wifi
      path: /site-health
      inputParameters:
      - name: venue
        in: query
      operations:
      - name: get-wifi-status
        method: GET
Open in Framework → View in Fleet → venue-wi-fi-network-monitor.yml

Retrieves current MLB standings by league and division, returning win-loss records, games back, and winning percentages.

naftiko: '0.5'
info:
  label: Standings Lookup
  description: Retrieves current MLB standings by league and division, returning win-loss records, games back, and winning percentages.
  tags:
  - standings
  - league-data
  - mlb-stats
capability:
  exposes:
  - type: mcp
    namespace: standings
    port: 8080
    tools:
    - name: get-standings
      description: Retrieve current MLB standings for a specified season.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The season year.
      - name: league_id
        in: body
        type: string
        description: League ID (103 for AL, 104 for NL).
      call: mlb-stats.get-standings
      with:
        season: '{{season}}'
        league_id: '{{league_id}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: standings
      path: /standings?leagueId={{league_id}}&season={{season}}
      inputParameters:
      - name: league_id
        in: query
      - name: season
        in: query
      operations:
      - name: get-standings
        method: GET
Open in Framework → View in Fleet → standings-lookup.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 8
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-8
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://majorleaguebaseball-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 → major-league-baseball-workflow-8.yml

Aggregates scouting reports from SharePoint, enriches with Statcast prospect data, and compiles a summary in Confluence for draft preparation.

naftiko: '0.5'
info:
  label: Draft Scouting Report Aggregator
  description: Aggregates scouting reports from SharePoint, enriches with Statcast prospect data, and compiles a summary in Confluence for draft preparation.
  tags:
  - scouting
  - draft
  - sharepoint
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: scouting-reports
    port: 8080
    tools:
    - name: compile-scouting-report
      description: Aggregate scouting reports from SharePoint and Statcast data, then publish to Confluence.
      inputParameters:
      - name: prospect_name
        in: body
        type: string
        description: Name of the prospect.
      - name: prospect_id
        in: body
        type: string
        description: MLB prospect ID.
      steps:
      - name: get-reports
        type: call
        call: sharepoint.list-files
        with:
          site_id: scouting_reports
          folder_path: Prospects/{{prospect_name}}
      - name: get-statcast
        type: call
        call: mlb-statcast.get-prospect-data
        with:
          prospect_id: '{{prospect_id}}'
      - name: publish-to-confluence
        type: call
        call: confluence.create-page
        with:
          space_key: SCOUTING
          title: 'Draft Report: {{prospect_name}}'
          content: 'Scouting files: {{get-reports.count}}. Statcast grades: {{get-statcast.overall_grade}}. Hit: {{get-statcast.hit_grade}}. Power: {{get-statcast.power_grade}}. Speed: {{get-statcast.speed_grade}}.'
  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: mlb-statcast
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: prospects
      path: /draft/prospects/{{prospect_id}}
      inputParameters:
      - name: prospect_id
        in: path
      operations:
      - name: get-prospect-data
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://mlb.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 → draft-scouting-report-aggregator.yml

Queries MLB Statcast data for advanced metrics like exit velocity, launch angle, spin rate, and expected batting average for player evaluation.

naftiko: '0.5'
info:
  label: Statcast Advanced Analytics Query
  description: Queries MLB Statcast data for advanced metrics like exit velocity, launch angle, spin rate, and expected batting average for player evaluation.
  tags:
  - player-analytics
  - statcast
  - advanced-metrics
capability:
  exposes:
  - type: mcp
    namespace: statcast-analytics
    port: 8080
    tools:
    - name: get-statcast-metrics
      description: Retrieve Statcast advanced metrics for a player.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The MLB player ID.
      - name: metric_type
        in: body
        type: string
        description: Metric category (hitting, pitching, fielding).
      - name: season
        in: body
        type: string
        description: Season year.
      call: mlb-statcast.get-metrics
      with:
        player_id: '{{player_id}}'
        metric_type: '{{metric_type}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: mlb-statcast
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: statcast
      path: /people/{{player_id}}/stats?stats=statcast&season={{season}}&group={{metric_type}}
      inputParameters:
      - name: player_id
        in: path
      - name: season
        in: query
      - name: metric_type
        in: query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → statcast-advanced-analytics-query.yml

Retrieves the MLB game schedule for a given date range, returning teams, venues, start times, and broadcast information.

naftiko: '0.5'
info:
  label: Game Schedule Lookup
  description: Retrieves the MLB game schedule for a given date range, returning teams, venues, start times, and broadcast information.
  tags:
  - scheduling
  - game-schedule
  - mlb-stats
capability:
  exposes:
  - type: mcp
    namespace: game-schedule
    port: 8080
    tools:
    - name: get-schedule
      description: Retrieve MLB game schedule for a date range.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: mlb-stats.get-schedule
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: schedule
      path: /schedule?startDate={{start_date}}&endDate={{end_date}}&sportId=1
      inputParameters:
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → game-schedule-lookup.yml

Retrieves MLB employee details from Workday including department, role, and reporting structure.

naftiko: '0.5'
info:
  label: Workday Employee Lookup
  description: Retrieves MLB employee details from Workday including department, role, and reporting structure.
  tags:
  - hr
  - workday
  - employee-directory
capability:
  exposes:
  - type: mcp
    namespace: hr-directory
    port: 8080
    tools:
    - name: get-employee
      description: Look up an MLB employee in Workday by worker ID.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-worker
      with:
        worker_id: '{{worker_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-employee-lookup.yml

Creates event plans in Microsoft Planner for gameday operations including pre-game ceremonies, entertainment, and promotional activities.

naftiko: '0.5'
info:
  label: Gameday Experience Event Planner
  description: Creates event plans in Microsoft Planner for gameday operations including pre-game ceremonies, entertainment, and promotional activities.
  tags:
  - event-management
  - microsoft-planner
  - gameday
capability:
  exposes:
  - type: mcp
    namespace: gameday-planning
    port: 8080
    tools:
    - name: create-gameday-plan
      description: Create Microsoft Planner tasks for gameday event operations.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The MLB game PK ID.
      - name: event_type
        in: body
        type: string
        description: Event type (pre-game-ceremony, promotion, entertainment).
      - name: plan_id
        in: body
        type: string
        description: Microsoft Planner plan ID.
      - name: description
        in: body
        type: string
        description: Event description and requirements.
      call: planner.create-task
      with:
        plan_id: '{{plan_id}}'
        title: 'Gameday {{event_type}}: Game {{game_id}}'
        description: '{{description}}'
  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 → gameday-experience-event-planner.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 3
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-3
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#baseball'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-3.yml

Posts open MLB positions to LinkedIn and syncs candidate applications back to Workday for the recruiting team.

naftiko: '0.5'
info:
  label: LinkedIn Recruiting Pipeline
  description: Posts open MLB positions to LinkedIn and syncs candidate applications back to Workday for the recruiting team.
  tags:
  - recruiting
  - linkedin
  - workday
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: publish-job-and-sync
      description: Publish a Workday job requisition to LinkedIn and set up candidate sync.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition ID.
      steps:
      - name: get-requisition
        type: call
        call: workday.get-requisition
        with:
          req_id: '{{requisition_id}}'
      - name: post-to-linkedin
        type: call
        call: linkedin.create-job-post
        with:
          title: '{{get-requisition.title}}'
          description: '{{get-requisition.description}}'
          location: '{{get-requisition.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-recruiting-pipeline.yml

Retrieves venue details for an MLB ballpark including capacity, location, dimensions, and surface type.

naftiko: '0.5'
info:
  label: Venue Information Lookup
  description: Retrieves venue details for an MLB ballpark including capacity, location, dimensions, and surface type.
  tags:
  - venues
  - ballpark
  - mlb-stats
capability:
  exposes:
  - type: mcp
    namespace: venue-info
    port: 8080
    tools:
    - name: get-venue
      description: Look up venue details by venue ID.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The MLB venue ID.
      call: mlb-stats.get-venue
      with:
        venue_id: '{{venue_id}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: venues
      path: /venues/{{venue_id}}
      inputParameters:
      - name: venue_id
        in: path
      operations:
      - name: get-venue
        method: GET
Open in Framework → View in Fleet → venue-information-lookup.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 2
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-2
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-2.yml

Retrieves umpire assignments from the scheduling system, publishes to SharePoint, and notifies crew chiefs via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Umpire Assignment Manager
  description: Retrieves umpire assignments from the scheduling system, publishes to SharePoint, and notifies crew chiefs via Microsoft Outlook.
  tags:
  - scheduling
  - umpire-management
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: umpire-assignments
    port: 8080
    tools:
    - name: publish-umpire-assignments
      description: Publish umpire crew assignments to SharePoint and email crew chiefs.
      inputParameters:
      - name: series_id
        in: body
        type: string
        description: The series identifier.
      - name: crew_chief_email
        in: body
        type: string
        description: Crew chief email address.
      - name: assignment_details
        in: body
        type: string
        description: Assignment details including games and positions.
      steps:
      - name: store-assignment
        type: call
        call: sharepoint.upload-file
        with:
          site_id: umpire_ops
          folder_path: Assignments/{{series_id}}
          content: '{{assignment_details}}'
      - name: notify-chief
        type: call
        call: outlook.send-email
        with:
          to: '{{crew_chief_email}}'
          subject: 'Umpire Assignment: Series {{series_id}}'
          body: 'Your crew assignment has been posted. Details: {{assignment_details}}. Full schedule available on SharePoint.'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: 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 → umpire-assignment-manager.yml

Pulls content performance metrics from Adobe Analytics for MLB.com editorial content, identifying top-performing articles and video content.

naftiko: '0.5'
info:
  label: Adobe Analytics Content Performance
  description: Pulls content performance metrics from Adobe Analytics for MLB.com editorial content, identifying top-performing articles and video content.
  tags:
  - content-analytics
  - adobe-analytics
  - editorial
capability:
  exposes:
  - type: mcp
    namespace: content-performance
    port: 8080
    tools:
    - name: get-content-performance
      description: Retrieve content performance metrics from Adobe Analytics.
      inputParameters:
      - name: report_suite_id
        in: body
        type: string
        description: The Adobe Analytics report suite ID.
      - name: date_range
        in: body
        type: string
        description: Date range (e.g., 2026-03-01/2026-03-27).
      call: adobe-analytics.get-report
      with:
        rsid: '{{report_suite_id}}'
        date_range: '{{date_range}}'
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /{{company_id}}/reports
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-content-performance.yml

Monitors Azure DevOps release pipelines for MLB digital applications, alerting the team on deployment failures via Slack.

naftiko: '0.5'
info:
  label: Azure DevOps Release Pipeline Monitor
  description: Monitors Azure DevOps release pipelines for MLB digital applications, alerting the team on deployment failures via Slack.
  tags:
  - devops
  - azure-devops
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: release-monitor
    port: 8080
    tools:
    - name: check-release-status
      description: Check Azure DevOps release pipeline status and alert Slack on failures.
      inputParameters:
      - name: project_name
        in: body
        type: string
        description: Azure DevOps project name.
      - name: release_id
        in: body
        type: string
        description: Release definition ID.
      steps:
      - name: get-release
        type: call
        call: azuredevops.get-release
        with:
          project: '{{project_name}}'
          release_id: '{{release_id}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: mlb-deployments
          text: 'Release {{release_id}} in {{project_name}}: {{get-release.status}}. Environment: {{get-release.environment}}.'
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://vsrm.dev.azure.com/mlb
    authentication:
      type: basic
      username: ''
      password: $secrets.azuredevops_pat
    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: slack
    baseUri: 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-release-pipeline-monitor.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 1
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-1
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-1.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 5
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-5
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-5.yml

Monitors SolarWinds network infrastructure health at MLB ballparks and league offices, tracking device uptime and bandwidth utilization.

naftiko: '0.5'
info:
  label: SolarWinds Venue Network Monitor
  description: Monitors SolarWinds network infrastructure health at MLB ballparks and league offices, tracking device uptime and bandwidth utilization.
  tags:
  - network
  - solarwinds
  - venue-infrastructure
capability:
  exposes:
  - type: mcp
    namespace: network-health
    port: 8080
    tools:
    - name: get-network-status
      description: Check SolarWinds network health at a venue or office.
      inputParameters:
      - name: location
        in: body
        type: string
        description: Venue or office location.
      call: solarwinds.get-nodes
      with:
        location: '{{location}}'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://mlb-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-venue-network-monitor.yml

Synchronizes fan contact data between HubSpot and Salesforce to maintain a unified fan engagement profile across marketing platforms.

naftiko: '0.5'
info:
  label: HubSpot Fan CRM Sync
  description: Synchronizes fan contact data between HubSpot and Salesforce to maintain a unified fan engagement profile across marketing platforms.
  tags:
  - fan-engagement
  - hubspot
  - salesforce
  - crm-sync
capability:
  exposes:
  - type: mcp
    namespace: crm-sync
    port: 8080
    tools:
    - name: sync-fan-contacts
      description: Sync fan contact records between HubSpot and Salesforce.
      inputParameters:
      - name: sync_direction
        in: body
        type: string
        description: Sync direction (hubspot-to-sfdc, sfdc-to-hubspot).
      - name: segment
        in: body
        type: string
        description: Fan segment to sync.
      steps:
      - name: get-hubspot-contacts
        type: call
        call: hubspot.get-contacts
        with:
          list_id: '{{segment}}'
      - name: upsert-salesforce
        type: call
        call: salesforce.upsert-contacts
        with:
          contacts: '{{get-hubspot-contacts.contacts}}'
          external_id_field: HubSpot_ID__c
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /crm/v3/objects/contacts
      operations:
      - name: get-contacts
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /composite/sobjects/Contact
      operations:
      - name: upsert-contacts
        method: PATCH
Open in Framework → View in Fleet → hubspot-fan-crm-sync.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 4
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-4
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASEBA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-4.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 6
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-6
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASE
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-6.yml

Pulls ticket sales data from Salesforce and aggregates revenue by game, section, and price tier into a Tableau dashboard.

naftiko: '0.5'
info:
  label: Ticketing Revenue Reporter
  description: Pulls ticket sales data from Salesforce and aggregates revenue by game, section, and price tier into a Tableau dashboard.
  tags:
  - ticketing
  - revenue
  - salesforce
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: ticket-revenue
    port: 8080
    tools:
    - name: generate-ticket-revenue-report
      description: Pull ticket sales from Salesforce and publish revenue dashboard to Tableau.
      inputParameters:
      - name: game_date
        in: body
        type: string
        description: Game date in YYYY-MM-DD format.
      - name: team_id
        in: body
        type: string
        description: The team identifier.
      steps:
      - name: get-sales-data
        type: call
        call: salesforce.get-ticket-sales
        with:
          game_date: '{{game_date}}'
          team: '{{team_id}}'
      - name: publish-dashboard
        type: call
        call: tableau.publish-datasource
        with:
          project_id: ticket_analytics
          datasource_name: TicketRevenue_{{team_id}}_{{game_date}}
          data: '{{get-sales-data.revenue_by_section}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: ticket-sales
      path: /sobjects/Ticket_Sale__c
      operations:
      - name: get-ticket-sales
        method: GET
  - type: http
    namespace: tableau
    baseUri: https://mlb-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{site_id}}/datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → ticketing-revenue-reporter.yml

Retrieves the game schedule from MLB Stats API, maps broadcast assignments, and publishes the broadcast grid to SharePoint for production teams.

naftiko: '0.5'
info:
  label: Broadcast Schedule Publisher
  description: Retrieves the game schedule from MLB Stats API, maps broadcast assignments, and publishes the broadcast grid to SharePoint for production teams.
  tags:
  - broadcast
  - scheduling
  - sharepoint
  - production
capability:
  exposes:
  - type: mcp
    namespace: broadcast-schedule
    port: 8080
    tools:
    - name: publish-broadcast-grid
      description: Generate and publish the broadcast assignment grid for a week of games.
      inputParameters:
      - name: week_start
        in: body
        type: string
        description: Start of the broadcast week in YYYY-MM-DD format.
      steps:
      - name: get-schedule
        type: call
        call: mlb-stats.get-schedule
        with:
          start_date: '{{week_start}}'
          end_date: '{{week_start}}'
      - name: publish-grid
        type: call
        call: sharepoint.upload-file
        with:
          site_id: broadcast_operations
          folder_path: BroadcastGrids/Week_{{week_start}}
          content: '{{get-schedule.games}}'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: schedule
      path: /schedule
      operations:
      - name: get-schedule
        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 → broadcast-schedule-publisher.yml

Pulls concession point-of-sale data from Square, aggregates by venue and game, and publishes to a Tableau revenue dashboard.

naftiko: '0.5'
info:
  label: Concession Sales Reporting Pipeline
  description: Pulls concession point-of-sale data from Square, aggregates by venue and game, and publishes to a Tableau revenue dashboard.
  tags:
  - concessions
  - square
  - tableau
  - revenue
capability:
  exposes:
  - type: mcp
    namespace: concession-reporting
    port: 8080
    tools:
    - name: report-concession-sales
      description: Pull Square POS data for concessions and publish to Tableau.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The venue/location identifier.
      - name: game_date
        in: body
        type: string
        description: Game date in YYYY-MM-DD format.
      steps:
      - name: get-sales
        type: call
        call: square.get-payments
        with:
          location_id: '{{venue_id}}'
          begin_time: '{{game_date}}T00:00:00Z'
          end_time: '{{game_date}}T23:59:59Z'
      - name: publish-to-tableau
        type: call
        call: tableau.publish-datasource
        with:
          project_id: concession_analytics
          datasource_name: Concessions_{{venue_id}}_{{game_date}}
          data: '{{get-sales.payments}}'
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: get-payments
        method: GET
  - type: http
    namespace: tableau
    baseUri: https://mlb-tableau.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{site_id}}/datasources
      operations:
      - name: publish-datasource
        method: POST
Open in Framework → View in Fleet → concession-sales-reporting-pipeline.yml

Audits Palo Alto Networks firewall rules for MLB data center and venue network security compliance.

naftiko: '0.5'
info:
  label: Palo Alto Network Security Auditor
  description: Audits Palo Alto Networks firewall rules for MLB data center and venue network security compliance.
  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.
      inputParameters:
      - name: device_group
        in: body
        type: string
        description: Palo Alto device group.
      call: paloalto.get-security-rules
      with:
        device_group: '{{device_group}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://mlb-panorama.paloaltonetworks.com/restapi/v10.2
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules
      inputParameters:
      - name: device_group
        in: query
      operations:
      - name: get-security-rules
        method: GET
Open in Framework → View in Fleet → palo-alto-network-security-auditor.yml

Processes media credential requests by creating a Salesforce case, routing for approval via Microsoft Power Automate, and notifying the media relations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Media Credential Request Processor
  description: Processes media credential requests by creating a Salesforce case, routing for approval via Microsoft Power Automate, and notifying the media relations team via Microsoft Teams.
  tags:
  - media-relations
  - credentials
  - salesforce
  - microsoft-power-automate
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media-credentials
    port: 8080
    tools:
    - name: process-credential-request
      description: Process a media credential request through Salesforce, Power Automate approval, and Teams notification.
      inputParameters:
      - name: outlet_name
        in: body
        type: string
        description: Media outlet name.
      - name: reporter_name
        in: body
        type: string
        description: Reporter name.
      - name: event_name
        in: body
        type: string
        description: Event or series name.
      - name: credential_type
        in: body
        type: string
        description: Credential type (photo, press-box, field).
      steps:
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Media credential: {{reporter_name}} - {{outlet_name}}'
          description: 'Event: {{event_name}}. Type: {{credential_type}}.'
      - name: trigger-approval
        type: call
        call: powerautomate.trigger-flow
        with:
          case_id: '{{create-case.id}}'
          credential_type: '{{credential_type}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: media-relations
          text: 'New credential request: {{reporter_name}} ({{outlet_name}}) for {{event_name}}. Type: {{credential_type}}. Case: {{create-case.id}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mlb.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: powerautomate
    baseUri: https://prod-123.westus.logic.azure.com/workflows
    authentication:
      type: apiKey
      key: $secrets.power_automate_key
    resources:
    - name: flows
      path: /credential-approval/triggers/manual/paths/invoke
      operations:
      - name: trigger-flow
        method: POST
  - 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 → media-credential-request-processor.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 7
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-7
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: baseball
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-7.yml

Pulls fan segments from Salesforce and sends targeted email campaigns via MailChimp for ticket promotions, merchandise, and game alerts.

naftiko: '0.5'
info:
  label: Fan Email Campaign Manager
  description: Pulls fan segments from Salesforce and sends targeted email campaigns via MailChimp for ticket promotions, merchandise, and game alerts.
  tags:
  - fan-engagement
  - mailchimp
  - salesforce
  - email-marketing
capability:
  exposes:
  - type: mcp
    namespace: fan-campaigns
    port: 8080
    tools:
    - name: send-fan-campaign
      description: Create a targeted fan email campaign using Salesforce segments and MailChimp.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: Salesforce fan segment name.
      - name: campaign_type
        in: body
        type: string
        description: Campaign type (ticket-promo, merch, game-alert).
      - name: subject_line
        in: body
        type: string
        description: Email subject line.
      steps:
      - name: get-fans
        type: call
        call: salesforce.get-fan-segment
        with:
          segment: '{{segment_name}}'
      - name: send-email
        type: call
        call: mailchimp.send-campaign
        with:
          campaign_type: '{{campaign_type}}'
          subject: '{{subject_line}}'
          recipients: '{{get-fans.emails}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: get-fan-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 → fan-email-campaign-manager.yml

Syncs operational reporting data to Google Sheets for cross-team access to game operations, attendance, and broadcast metrics.

naftiko: '0.5'
info:
  label: Google Sheets Reporting Sync
  description: Syncs operational reporting data to Google Sheets for cross-team access to game operations, attendance, and broadcast metrics.
  tags:
  - reporting
  - google-sheets
  - operations
capability:
  exposes:
  - type: mcp
    namespace: sheets-reporting
    port: 8080
    tools:
    - name: update-report-sheet
      description: Update a Google Sheets report with latest operational data.
      inputParameters:
      - name: spreadsheet_id
        in: body
        type: string
        description: Google Sheets spreadsheet ID.
      - name: sheet_name
        in: body
        type: string
        description: Sheet tab name.
      - name: data
        in: body
        type: string
        description: Data to write to the sheet.
      call: sheets.update-values
      with:
        spreadsheet_id: '{{spreadsheet_id}}'
        range: '{{sheet_name}}!A1'
        values: '{{data}}'
  consumes:
  - type: http
    namespace: sheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: update-values
        method: PUT
Open in Framework → View in Fleet → google-sheets-reporting-sync.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 11
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-11.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 29
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-29
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-29.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 15
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-15
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#baseball'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-15.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 8
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-8.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 9
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-9.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 14
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-14
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-14.yml

Creates ServiceNow incidents for IT issues at MLB offices and ballparks, including network outages, application failures, and hardware problems.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Creator
  description: Creates ServiceNow incidents for IT issues at MLB offices and ballparks, including network outages, application failures, and hardware problems.
  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 MLB IT support.
      inputParameters:
      - name: short_description
        in: body
        type: string
        description: Brief summary of the incident.
      - name: category
        in: body
        type: string
        description: Incident category.
      - name: location
        in: body
        type: string
        description: Venue or office location.
      call: servicenow.create-incident
      with:
        short_description: '{{short_description}}'
        category: '{{category}}'
        location: '{{location}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mlb.service-now.com/api/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

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 28
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-28
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASEBA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-28.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 10
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-10.yml

Manages sponsorship deals in Salesforce, tracking deal stages, partner details, and activation deliverables with Microsoft Teams notifications on stage changes.

naftiko: '0.5'
info:
  label: Sponsorship Deal Tracker
  description: Manages sponsorship deals in Salesforce, tracking deal stages, partner details, and activation deliverables with Microsoft Teams notifications on stage changes.
  tags:
  - sponsorship
  - salesforce
  - microsoft-teams
  - deal-management
capability:
  exposes:
  - type: mcp
    namespace: sponsorship-deals
    port: 8080
    tools:
    - name: update-sponsorship-deal
      description: Update a sponsorship deal stage in Salesforce and notify the partnerships team in Microsoft Teams.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: The Salesforce opportunity ID for the sponsorship deal.
      - name: new_stage
        in: body
        type: string
        description: The new deal stage (e.g., Proposal, Negotiation, Closed Won).
      - name: notes
        in: body
        type: string
        description: Notes about the stage change.
      steps:
      - name: update-deal
        type: call
        call: salesforce.update-opportunity
        with:
          opportunity_id: '{{deal_id}}'
          stage: '{{new_stage}}'
          description: '{{notes}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: partnerships-sponsorship
          text: 'Sponsorship deal {{deal_id}} moved to {{new_stage}}. Notes: {{notes}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sponsorship-deal-tracker.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 12
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-12.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 16
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-16
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASEBA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-16.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 17
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-17
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-17.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 13
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-13.yml

Manages shared documents in Google Drive for MLB cross-team collaboration on league policies, broadcast standards, and operational procedures.

naftiko: '0.5'
info:
  label: Google Drive Document Collaboration
  description: Manages shared documents in Google Drive for MLB cross-team collaboration on league policies, broadcast standards, and operational procedures.
  tags:
  - collaboration
  - google-drive
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: drive-collab
    port: 8080
    tools:
    - name: create-shared-doc
      description: Create a shared document in Google Drive for team 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-document-collaboration.yml

Manages spring training facility scheduling by creating Microsoft Planner tasks, updating SharePoint calendars, and notifying team operations via Slack.

naftiko: '0.5'
info:
  label: Spring Training Facility Scheduler
  description: Manages spring training facility scheduling by creating Microsoft Planner tasks, updating SharePoint calendars, and notifying team operations via Slack.
  tags:
  - spring-training
  - scheduling
  - microsoft-planner
  - sharepoint
  - slack
capability:
  exposes:
  - type: mcp
    namespace: spring-training
    port: 8080
    tools:
    - name: schedule-facility
      description: Schedule a spring training facility session across Planner, SharePoint, and Slack.
      inputParameters:
      - name: facility_name
        in: body
        type: string
        description: Name of the training facility.
      - name: team_name
        in: body
        type: string
        description: Team name.
      - name: date
        in: body
        type: string
        description: Session date in YYYY-MM-DD format.
      - name: session_type
        in: body
        type: string
        description: Session type (batting-practice, pitching, fielding, full-squad).
      steps:
      - name: create-task
        type: call
        call: planner.create-task
        with:
          plan_id: spring_training_ops
          title: '{{team_name}} - {{session_type}} at {{facility_name}}'
          due_date: '{{date}}'
      - name: update-calendar
        type: call
        call: sharepoint.upload-file
        with:
          site_id: spring_training
          folder_path: Schedule/{{date}}
          content: '{{team_name}}: {{session_type}} at {{facility_name}}'
      - name: notify-ops
        type: call
        call: slack.post-message
        with:
          channel: spring-training-ops
          text: 'Facility booked: {{team_name}} - {{session_type}} at {{facility_name}} on {{date}}.'
  consumes:
  - type: http
    namespace: planner
    baseUri: https://graph.microsoft.com/v1.0/planner
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: tasks
      path: /tasks
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → spring-training-facility-scheduler.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 13
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-13
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-13.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 12
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-12
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: baseball.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-12.yml

Pulls merchandise sales data from BigCommerce and syncs revenue figures to Salesforce for cross-channel revenue reporting.

naftiko: '0.5'
info:
  label: Merchandise Sales Tracker
  description: Pulls merchandise sales data from BigCommerce and syncs revenue figures to Salesforce for cross-channel revenue reporting.
  tags:
  - merchandise
  - bigcommerce
  - salesforce
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: merch-sales
    port: 8080
    tools:
    - name: sync-merch-sales
      description: Pull BigCommerce merchandise sales and sync to Salesforce revenue records.
      inputParameters:
      - name: date_from
        in: body
        type: string
        description: Start date for sales data in YYYY-MM-DD format.
      - name: date_to
        in: body
        type: string
        description: End date for sales data.
      steps:
      - name: get-orders
        type: call
        call: bigcommerce.get-orders
        with:
          min_date: '{{date_from}}'
          max_date: '{{date_to}}'
      - name: sync-to-sfdc
        type: call
        call: salesforce.create-revenue-record
        with:
          source: merchandise
          total_revenue: '{{get-orders.total_revenue}}'
          order_count: '{{get-orders.count}}'
          period: '{{date_from}}_{{date_to}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: get-orders
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://mlb.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: revenue
      path: /sobjects/Revenue_Record__c
      operations:
      - name: create-revenue-record
        method: POST
Open in Framework → View in Fleet → merchandise-sales-tracker.yml

When a player injury is reported, updates the roster in MLB Stats, creates a ServiceNow tracking ticket, and notifies team medical staff via Microsoft Teams.

naftiko: '0.5'
info:
  label: Player Injury Report Pipeline
  description: When a player injury is reported, updates the roster in MLB Stats, creates a ServiceNow tracking ticket, and notifies team medical staff via Microsoft Teams.
  tags:
  - player-health
  - injury-management
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: injury-reports
    port: 8080
    tools:
    - name: report-injury
      description: Process a player injury report across systems and notify medical staff.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The MLB player ID.
      - name: injury_type
        in: body
        type: string
        description: Type of injury (e.g., hamstring, elbow, shoulder).
      - name: severity
        in: body
        type: string
        description: Injury severity (minor, moderate, severe).
      - name: team_medical_channel
        in: body
        type: string
        description: Microsoft Teams channel for team medical staff.
      steps:
      - name: get-player
        type: call
        call: mlb-stats.get-player
        with:
          player_id: '{{player_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Player injury: {{get-player.full_name}} - {{injury_type}}'
          category: player_health
          priority: '2'
          description: 'Player: {{get-player.full_name}}, Injury: {{injury_type}}, Severity: {{severity}}'
      - name: notify-medical
        type: call
        call: msteams.send-message
        with:
          channel_id: '{{team_medical_channel}}'
          text: 'Injury report: {{get-player.full_name}} - {{injury_type}} ({{severity}}). Tracking ticket: {{create-ticket.number}}.'
  consumes:
  - type: http
    namespace: mlb-stats
    baseUri: https://statsapi.mlb.com/api/v1
    authentication:
      type: bearer
      token: $secrets.mlb_stats_token
    resources:
    - name: players
      path: /people/{{player_id}}
      inputParameters:
      - name: player_id
        in: path
      operations:
      - name: get-player
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mlb.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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 → player-injury-report-pipeline.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 14
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-14.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 10
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-10
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://majorleaguebaseball.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 → major-league-baseball-workflow-10.yml

Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.

naftiko: '0.5'
info:
  label: Major League Baseball Workflow 11
  description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
  tags:
  - baseball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: baseball
    port: 8080
    tools:
    - name: major-league-baseball-workflow-11
      description: Orchestrates baseball operations including data retrieval, processing, and automated notification for Major League Baseball.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: majorleaguebaseball-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: majorleaguebaseball-ops
    baseUri: https://api.mlb.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-workflow-11.yml

Retrieves operational data for Major League Baseball baseball workflows.

naftiko: '0.5'
info:
  label: Major League Baseball Data Lookup 15
  description: Retrieves operational data for Major League Baseball baseball workflows.
  tags:
  - baseball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: majorleaguebaseball-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for Major League Baseball baseball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: majorleaguebaseball-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: majorleaguebaseball-data
    baseUri: https://api.mlb.com/data/v1
    authentication:
      type: bearer
      token: $secrets.mlb_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 → major-league-baseball-data-lookup-15.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 23
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-23
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-23.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 1
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-1.yml

Retrieves game performance visualization metadata from Tableau by workbook name, returning view names, last refresh time, and embed URLs.

naftiko: '0.5'
info:
  label: Tableau Game Performance Workbook
  description: Retrieves game performance visualization metadata from Tableau by workbook name, returning view names, last refresh time, and embed URLs.
  tags:
  - analytics
  - visualization
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: game-performance-viz
    port: 8080
    tools:
    - name: get-game-performance-workbook
      description: Retrieve Tableau workbook metadata for game performance.
      inputParameters:
      - name: workbook_name
        in: body
        type: string
        description: The Tableau workbook name.
      call: tableau.get-workbook
      with:
        workbook_name: '{{workbook_name}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://nba.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks?filter=name:eq:{{workbook_name}}
      inputParameters:
      - name: workbook_name
        in: query
      operations:
      - name: get-workbook
        method: GET
Open in Framework → View in Fleet → tableau-game-performance-workbook.yml

Compiles draft prospect analytics by querying scouting data from Snowflake, pulling prospect profiles from Salesforce, generating reports in SharePoint, and distributing to the basketball operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Draft Prospect Analytics Pipeline
  description: Compiles draft prospect analytics by querying scouting data from Snowflake, pulling prospect profiles from Salesforce, generating reports in SharePoint, and distributing to the basketball operations team via Microsoft Teams.
  tags:
  - analytics
  - draft
  - snowflake
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: draft-analytics
    port: 8080
    tools:
    - name: compile-draft-analytics
      description: Given a draft year and position, compile prospect analytics.
      inputParameters:
      - name: draft_year
        in: body
        type: string
        description: The draft year.
      - name: position
        in: body
        type: string
        description: Position filter (guard, forward, center, all).
      steps:
      - name: query-scouting-data
        type: call
        call: snowflake.execute-query
        with:
          draft_year: '{{draft_year}}'
          position: '{{position}}'
      - name: get-prospect-profiles
        type: call
        call: salesforce.get-prospects
        with:
          draft_year: '{{draft_year}}'
          position: '{{position}}'
      - name: upload-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: basketball_ops_site
          folder_path: Draft/{{draft_year}}/{{position}}
      - name: notify-basketball-ops
        type: call
        call: msteams.post-message
        with:
          team_id: basketball-ops-team
          channel_id: draft
          message: 'Draft prospect analytics ({{draft_year}}, {{position}}): {{query-scouting-data.rowCount}} prospects analyzed. {{get-prospect-profiles.totalSize}} profiles. Report: {{upload-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: prospects
      path: /query/?q=SELECT+Name,Position__c,School__c,Projected_Pick__c+FROM+Draft_Prospect__c+WHERE+Draft_Year__c='{{draft_year}}'+AND+Position__c='{{position}}'
      inputParameters:
      - name: draft_year
        in: query
      - name: position
        in: query
      operations:
      - name: get-prospects
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → draft-prospect-analytics-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 22
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-22
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-22.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 34
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-34
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-34.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 20
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-20
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalbasketballassociation-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 → national-basketball-association-workflow-20.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 2
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-2.yml

Retrieves concession revenue data from Snowflake by venue and game date, returning total revenue, per-capita spend, and top-selling items.

naftiko: '0.5'
info:
  label: Concession Revenue Lookup
  description: Retrieves concession revenue data from Snowflake by venue and game date, returning total revenue, per-capita spend, and top-selling items.
  tags:
  - operations
  - concessions
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: concession-revenue
    port: 8080
    tools:
    - name: get-concession-revenue
      description: Look up concession revenue by venue and game date.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The arena venue ID.
      - name: game_date
        in: body
        type: string
        description: The game date in YYYY-MM-DD format.
      call: snowflake.get-concession-data
      with:
        venue_id: '{{venue_id}}'
        game_date: '{{game_date}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-concession-data
        method: POST
Open in Framework → View in Fleet → concession-revenue-lookup.yml

Retrieves sponsorship deal details from Salesforce by sponsor account ID, returning deal value, term, activation rights, and renewal date.

naftiko: '0.5'
info:
  label: Sponsorship Deal Lookup
  description: Retrieves sponsorship deal details from Salesforce by sponsor account ID, returning deal value, term, activation rights, and renewal date.
  tags:
  - sponsorship
  - partnerships
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: sponsorship
    port: 8080
    tools:
    - name: get-sponsorship-deal
      description: Look up a sponsorship deal by sponsor account ID.
      inputParameters:
      - name: sponsor_id
        in: body
        type: string
        description: The Salesforce sponsor account ID.
      call: salesforce.get-sponsorship
      with:
        sponsor_id: '{{sponsor_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: sponsorships
      path: /query/?q=SELECT+Deal_Value__c,Term__c,Activation_Rights__c,Renewal_Date__c+FROM+Sponsorship__c+WHERE+Sponsor_ID__c='{{sponsor_id}}'
      inputParameters:
      - name: sponsor_id
        in: query
      operations:
      - name: get-sponsorship
        method: GET
Open in Framework → View in Fleet → sponsorship-deal-lookup.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 3
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-3.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 21
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-21
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-21.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 35
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-35
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-35.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 19
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-19
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: basketball
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-19.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 31
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-31
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: basketball
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-31.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 25
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-25
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-25.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 7
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-7.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 6
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-6.yml

Generates player tracking analytics by querying Second Spectrum data from Snowflake, creating advanced stats visualizations in Tableau, uploading reports to SharePoint, and notifying the analytics team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Player Tracking Analytics Pipeline
  description: Generates player tracking analytics by querying Second Spectrum data from Snowflake, creating advanced stats visualizations in Tableau, uploading reports to SharePoint, and notifying the analytics team via Microsoft Teams.
  tags:
  - analytics
  - player-tracking
  - snowflake
  - tableau
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: player-tracking
    port: 8080
    tools:
    - name: generate-tracking-report
      description: Given a player ID and game range, generate advanced tracking analytics.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The NBA player ID.
      - name: start_date
        in: body
        type: string
        description: Start date for games.
      - name: end_date
        in: body
        type: string
        description: End date for games.
      steps:
      - name: query-tracking-data
        type: call
        call: snowflake.execute-query
        with:
          player_id: '{{player_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: refresh-viz
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: player-tracking-workbook
      - name: upload-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: analytics_site
          folder_path: PlayerTracking/{{player_id}}/{{start_date}}_{{end_date}}
      - name: notify-analytics
        type: call
        call: msteams.post-message
        with:
          team_id: analytics-team
          channel_id: player-tracking
          message: 'Player tracking report for {{player_id}} ({{start_date}} to {{end_date}}): {{query-tracking-data.rowCount}} data points. Report: {{upload-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → player-tracking-analytics-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 24
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-24
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: basketball.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-24.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 30
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-30
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASK
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-30.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 18
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-18
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASK
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-18.yml

Executes a parameterized query against the Snowflake data warehouse for attendance, viewership, social media, and advanced basketball analytics data.

naftiko: '0.5'
info:
  label: Snowflake League Data Query
  description: Executes a parameterized query against the Snowflake data warehouse for attendance, viewership, social media, and advanced basketball analytics data.
  tags:
  - analytics
  - snowflake
  - data
capability:
  exposes:
  - type: mcp
    namespace: league-data
    port: 8080
    tools:
    - name: query-league-data
      description: Query Snowflake for league analytics data.
      inputParameters:
      - name: data_type
        in: body
        type: string
        description: Type of data (attendance, viewership, social, player_tracking).
      - name: season
        in: body
        type: string
        description: The NBA season.
      call: snowflake.execute-query
      with:
        data_type: '{{data_type}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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-league-data-query.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 26
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-26
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-26.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 32
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-32
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalbasketballassociation-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 → national-basketball-association-workflow-32.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 4
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-4.yml

Retrieves NBA app engagement metrics from Google Analytics, returning daily active users, session duration, screen views, and conversion rates.

naftiko: '0.5'
info:
  label: Google Analytics App Engagement Metrics
  description: Retrieves NBA app engagement metrics from Google Analytics, returning daily active users, session duration, screen views, and conversion rates.
  tags:
  - digital
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: app-engagement
    port: 8080
    tools:
    - name: get-app-engagement
      description: Retrieve NBA app engagement metrics by platform and date range.
      inputParameters:
      - name: platform
        in: body
        type: string
        description: The app platform (ios, android, web).
      - name: date_range
        in: body
        type: string
        description: The date range.
      call: ga.get-app-metrics
      with:
        platform: '{{platform}}'
        date_range: '{{date_range}}'
  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-app-metrics
        method: POST
Open in Framework → View in Fleet → google-analytics-app-engagement-metrics.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 5
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-5.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 33
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-33
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-33.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 27
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-27
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#basketball'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-27.yml

Generates league revenue reports by compiling ticket revenue, broadcast revenue, and sponsorship revenue from Snowflake and Salesforce, refreshing Power BI dashboards, and distributing to the executive team.

naftiko: '0.5'
info:
  label: League Revenue Report Pipeline
  description: Generates league revenue reports by compiling ticket revenue, broadcast revenue, and sponsorship revenue from Snowflake and Salesforce, refreshing Power BI dashboards, and distributing to the executive team.
  tags:
  - analytics
  - revenue
  - snowflake
  - salesforce
  - power-bi
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: revenue-reporting
    port: 8080
    tools:
    - name: generate-revenue-report
      description: Given a season and revenue stream, generate the comprehensive revenue report.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The NBA season.
      - name: revenue_stream
        in: body
        type: string
        description: Revenue stream (tickets, broadcast, sponsorship, all).
      steps:
      - name: query-revenue-data
        type: call
        call: snowflake.execute-query
        with:
          season: '{{season}}'
          stream: '{{revenue_stream}}'
      - name: get-deal-values
        type: call
        call: salesforce.get-revenue-summary
        with:
          season: '{{season}}'
          stream: '{{revenue_stream}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: league-revenue-dataset
      - name: upload-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: finance_site
          folder_path: Revenue/{{season}}/{{revenue_stream}}
      - name: notify-executives
        type: call
        call: msteams.post-message
        with:
          team_id: executive-team
          channel_id: revenue
          message: 'Revenue report for {{season}} ({{revenue_stream}}): ${{query-revenue-data.total_revenue}}. Dashboard refreshed. Report: {{upload-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: revenue-summary
      path: /query/?q=SELECT+SUM(Deal_Value__c)+FROM+Revenue__c+WHERE+Season__c='{{season}}'+AND+Stream__c='{{stream}}'
      inputParameters:
      - name: season
        in: query
      - name: stream
        in: query
      operations:
      - name: get-revenue-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}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → league-revenue-report-pipeline.yml

Retrieves referee game assignments from Snowflake by game ID, returning crew chief, referee names, experience level, and historical team matchup stats.

naftiko: '0.5'
info:
  label: Referee Assignment Lookup
  description: Retrieves referee game assignments from Snowflake by game ID, returning crew chief, referee names, experience level, and historical team matchup stats.
  tags:
  - officiating
  - scheduling
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: referee-assignments
    port: 8080
    tools:
    - name: get-referee-assignment
      description: Look up referee assignment by game ID.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The game event ID.
      call: snowflake.get-referee-assignment
      with:
        game_id: '{{game_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-referee-assignment
        method: POST
Open in Framework → View in Fleet → referee-assignment-lookup.yml

Supports international business development by pulling market data from Snowflake, creating opportunity records in Salesforce, uploading market analysis to SharePoint, and notifying the global partnerships team via Microsoft Teams.

naftiko: '0.5'
info:
  label: International Business Development Pipeline
  description: Supports international business development by pulling market data from Snowflake, creating opportunity records in Salesforce, uploading market analysis to SharePoint, and notifying the global partnerships team via Microsoft Teams.
  tags:
  - sponsorship
  - international
  - snowflake
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: intl-development
    port: 8080
    tools:
    - name: assess-international-market
      description: Given a country and business category, assess the international market opportunity.
      inputParameters:
      - name: country
        in: body
        type: string
        description: The target country.
      - name: business_category
        in: body
        type: string
        description: Category (broadcast, sponsorship, merchandise, gaming).
      steps:
      - name: pull-market-data
        type: call
        call: snowflake.execute-query
        with:
          country: '{{country}}'
          category: '{{business_category}}'
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          country: '{{country}}'
          category: '{{business_category}}'
          market_size: '{{pull-market-data.market_size}}'
      - name: upload-analysis
        type: call
        call: sharepoint.create-folder
        with:
          site_id: intl_business_site
          folder_path: Markets/{{country}}/{{business_category}}
      - name: notify-global-team
        type: call
        call: msteams.post-message
        with:
          team_id: global-partnerships-team
          channel_id: international
          message: 'International opportunity: {{business_category}} in {{country}}. Market size: {{pull-market-data.market_size}}. Opportunity: {{create-opportunity.id}}. Analysis: {{upload-analysis.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → international-business-development-pipeline.yml

Manages arena security incidents by logging the incident in Zendesk, creating a report in SharePoint, and escalating to the security operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Arena Security Incident Pipeline
  description: Manages arena security incidents by logging the incident in Zendesk, creating a report in SharePoint, and escalating to the security operations team via Microsoft Teams.
  tags:
  - security
  - operations
  - zendesk
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-incidents
    port: 8080
    tools:
    - name: report-security-incident
      description: Given incident details, log and escalate an arena security incident.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The arena venue ID.
      - name: incident_type
        in: body
        type: string
        description: The incident type.
      - name: description
        in: body
        type: string
        description: Incident description.
      steps:
      - name: create-ticket
        type: call
        call: zendesk.create-ticket
        with:
          subject: 'Security incident: {{incident_type}} at {{venue_id}}'
          description: '{{description}}'
          priority: high
      - name: create-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: security_site
          folder_path: Incidents/{{venue_id}}/{{incident_type}}
      - name: escalate-security
        type: call
        call: msteams.post-message
        with:
          team_id: security-ops
          channel_id: incidents
          message: 'Security incident at {{venue_id}}: {{incident_type}}. Ticket: {{create-ticket.id}}. Report: {{create-report.webUrl}}.'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nba.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets.json
      operations:
      - name: create-ticket
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → arena-security-incident-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 5
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-5
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-5.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 4
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-4
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASKET
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-4.yml

Retrieves payroll report data from ADP for team staff by department and pay period, returning gross pay, deductions, and net pay totals.

naftiko: '0.5'
info:
  label: ADP Team Staff Payroll Report
  description: Retrieves payroll report data from ADP for team staff by department and pay period, returning gross pay, deductions, and net pay totals.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: staff-payroll
    port: 8080
    tools:
    - name: get-staff-payroll
      description: Retrieve staff payroll report by department and pay period.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department name.
      - name: pay_period
        in: body
        type: string
        description: The pay period identifier.
      call: adp.get-payroll
      with:
        department: '{{department}}'
        pay_period: '{{pay_period}}'
  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?department={{department}}&payPeriod={{pay_period}}
      inputParameters:
      - name: department
        in: query
      - name: pay_period
        in: query
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-team-staff-payroll-report.yml

Retrieves arena facility status from Salesforce by venue ID, returning maintenance status, seating capacity, upcoming events, and concession readiness.

naftiko: '0.5'
info:
  label: Arena Facility Status Lookup
  description: Retrieves arena facility status from Salesforce by venue ID, returning maintenance status, seating capacity, upcoming events, and concession readiness.
  tags:
  - operations
  - facilities
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: arena-facilities
    port: 8080
    tools:
    - name: get-arena-status
      description: Look up arena facility status by venue ID.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The arena venue ID.
      call: salesforce.get-venue-status
      with:
        venue_id: '{{venue_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: venues
      path: /query/?q=SELECT+Venue_Name__c,Capacity__c,Maintenance_Status__c,Concession_Ready__c+FROM+Arena__c+WHERE+Venue_ID__c='{{venue_id}}'
      inputParameters:
      - name: venue_id
        in: query
      operations:
      - name: get-venue-status
        method: GET
Open in Framework → View in Fleet → arena-facility-status-lookup.yml

Generates sponsorship ROI reports by pulling activation data from Snowflake, brand exposure from Google Analytics, deal terms from Salesforce, and distributing the report to sponsors via SharePoint and Microsoft Outlook.

naftiko: '0.5'
info:
  label: Sponsorship ROI Report Pipeline
  description: Generates sponsorship ROI reports by pulling activation data from Snowflake, brand exposure from Google Analytics, deal terms from Salesforce, and distributing the report to sponsors via SharePoint and Microsoft Outlook.
  tags:
  - sponsorship
  - analytics
  - snowflake
  - google-analytics
  - salesforce
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: sponsorship-roi
    port: 8080
    tools:
    - name: generate-sponsorship-roi
      description: Given a sponsor ID and period, generate a comprehensive ROI report.
      inputParameters:
      - name: sponsor_id
        in: body
        type: string
        description: The sponsor account ID.
      - name: period
        in: body
        type: string
        description: The evaluation period.
      steps:
      - name: pull-activation-data
        type: call
        call: snowflake.execute-query
        with:
          sponsor_id: '{{sponsor_id}}'
          period: '{{period}}'
      - name: get-digital-exposure
        type: call
        call: ga.get-report
        with:
          campaign_name: sponsor-{{sponsor_id}}
          period: '{{period}}'
      - name: get-deal-terms
        type: call
        call: salesforce.get-sponsorship
        with:
          sponsor_id: '{{sponsor_id}}'
      - name: upload-roi-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: partnerships_site
          folder_path: ROI/{{sponsor_id}}/{{period}}
      - name: send-to-sponsor
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{get-deal-terms.Contact_Email__c}}'
          subject: NBA Sponsorship ROI Report - {{period}}
          body: 'Your NBA sponsorship ROI report is ready. Impressions: {{pull-activation-data.total_impressions}}. Digital engagement: {{get-digital-exposure.sessions}}. Report: {{upload-roi-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: sponsorships
      path: /query/?q=SELECT+Deal_Value__c,Contact_Email__c+FROM+Sponsorship__c+WHERE+Sponsor_ID__c='{{sponsor_id}}'
      inputParameters:
      - name: sponsor_id
        in: query
      operations:
      - name: get-sponsorship
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/partnerships@nba.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → sponsorship-roi-report-pipeline.yml

Queries coach performance analytics from Snowflake by coach ID and season, returning win-loss record, offensive/defensive ratings, and player development metrics.

naftiko: '0.5'
info:
  label: Coach Performance Analytics Query
  description: Queries coach performance analytics from Snowflake by coach ID and season, returning win-loss record, offensive/defensive ratings, and player development metrics.
  tags:
  - analytics
  - coaching
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: coach-analytics
    port: 8080
    tools:
    - name: get-coach-performance
      description: Retrieve coach performance analytics by coach ID and season.
      inputParameters:
      - name: coach_id
        in: body
        type: string
        description: The coach identifier.
      - name: season
        in: body
        type: string
        description: The season (e.g., 2025-26).
      call: snowflake.get-coach-stats
      with:
        coach_id: '{{coach_id}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-coach-stats
        method: POST
Open in Framework → View in Fleet → coach-performance-analytics-query.yml

Retrieves a summary of fan feedback and support tickets from Zendesk by category and date range, returning ticket counts, satisfaction scores, and common themes.

naftiko: '0.5'
info:
  label: Zendesk Fan Feedback Summary
  description: Retrieves a summary of fan feedback and support tickets from Zendesk by category and date range, returning ticket counts, satisfaction scores, and common themes.
  tags:
  - fan-experience
  - support
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: fan-feedback
    port: 8080
    tools:
    - name: get-fan-feedback
      description: Retrieve fan feedback summary by category and date range.
      inputParameters:
      - name: category
        in: body
        type: string
        description: The feedback category (ticketing, merchandise, app, broadcast).
      - name: date_range
        in: body
        type: string
        description: The date range (e.g., 30d, 90d).
      call: zendesk.get-feedback-summary
      with:
        category: '{{category}}'
        date_range: '{{date_range}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nba.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /search.json?query=type:ticket+tags:{{category}}+created>{{date_range}}
      inputParameters:
      - name: category
        in: query
      - name: date_range
        in: query
      operations:
      - name: get-feedback-summary
        method: GET
Open in Framework → View in Fleet → zendesk-fan-feedback-summary.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 6
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-6
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: BASK
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-6.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 7
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-7
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: basketball
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-7.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 3
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-3
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#basketball'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-3.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 2
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-2
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-2.yml

Retrieves NBA 2K League esports statistics from Snowflake by player gamertag and season, returning wins, losses, average score, and tournament placements.

naftiko: '0.5'
info:
  label: NBA 2K Gaming League Stats Lookup
  description: Retrieves NBA 2K League esports statistics from Snowflake by player gamertag and season, returning wins, losses, average score, and tournament placements.
  tags:
  - esports
  - gaming
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: nba2k-stats
    port: 8080
    tools:
    - name: get-2k-league-stats
      description: Look up NBA 2K League player stats by gamertag and season.
      inputParameters:
      - name: gamertag
        in: body
        type: string
        description: The player gamertag.
      - name: season
        in: body
        type: string
        description: The 2K League season.
      call: snowflake.get-2k-stats
      with:
        gamertag: '{{gamertag}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-2k-stats
        method: POST
Open in Framework → View in Fleet → nba-2k-gaming-league-stats-lookup.yml

Escalates fan support issues by pulling ticket details from Zendesk, creating an escalation record in Salesforce, notifying the fan experience team via Microsoft Teams, and sending an update to the fan via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Fan Support Escalation Pipeline
  description: Escalates fan support issues by pulling ticket details from Zendesk, creating an escalation record in Salesforce, notifying the fan experience team via Microsoft Teams, and sending an update to the fan via Microsoft Outlook.
  tags:
  - fan-support
  - escalation
  - zendesk
  - salesforce
  - microsoft-teams
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: fan-escalation
    port: 8080
    tools:
    - name: escalate-fan-issue
      description: Given a Zendesk ticket ID, escalate the fan issue across systems.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket ID.
      - name: escalation_reason
        in: body
        type: string
        description: Reason for escalation.
      steps:
      - name: get-ticket
        type: call
        call: zendesk.get-ticket
        with:
          ticket_id: '{{ticket_id}}'
      - name: create-escalation
        type: call
        call: salesforce.create-escalation
        with:
          ticket_id: '{{ticket_id}}'
          reason: '{{escalation_reason}}'
          description: '{{get-ticket.description}}'
      - name: notify-fan-experience
        type: call
        call: msteams.post-message
        with:
          team_id: fan-experience-team
          channel_id: escalations
          message: 'Fan issue escalated: Zendesk #{{ticket_id}}. Reason: {{escalation_reason}}. Salesforce: {{create-escalation.id}}.'
      - name: update-fan
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{get-ticket.requester.email}}'
          subject: 'NBA Fan Support Update - Ticket #{{ticket_id}}'
          body: 'Your issue has been escalated to our senior team. Escalation: {{create-escalation.id}}. We will follow up within 24 hours.'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nba.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: escalations
      path: /sobjects/Fan_Escalation__c
      operations:
      - name: create-escalation
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/fansupport@nba.com/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → fan-support-escalation-pipeline.yml

Compiles injury reports by pulling player health data from Snowflake, updating injury status in Salesforce, uploading reports to SharePoint, and notifying the basketball operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Injury Report Compilation Pipeline
  description: Compiles injury reports by pulling player health data from Snowflake, updating injury status in Salesforce, uploading reports to SharePoint, and notifying the basketball operations team via Microsoft Teams.
  tags:
  - player-health
  - operations
  - snowflake
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: injury-reports
    port: 8080
    tools:
    - name: compile-injury-report
      description: Given a team code and game date, compile the injury report.
      inputParameters:
      - name: team_code
        in: body
        type: string
        description: The NBA team abbreviation.
      - name: game_date
        in: body
        type: string
        description: The game date in YYYY-MM-DD format.
      steps:
      - name: pull-health-data
        type: call
        call: snowflake.execute-query
        with:
          team_code: '{{team_code}}'
          game_date: '{{game_date}}'
      - name: update-status
        type: call
        call: salesforce.update-injury-status
        with:
          team_code: '{{team_code}}'
          game_date: '{{game_date}}'
          player_count: '{{pull-health-data.injured_count}}'
      - name: upload-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: basketball_ops_site
          folder_path: InjuryReports/{{team_code}}/{{game_date}}
      - name: notify-ops
        type: call
        call: msteams.post-message
        with:
          team_id: basketball-ops
          channel_id: injury-reports
          message: 'Injury report compiled for {{team_code}} ({{game_date}}): {{pull-health-data.injured_count}} players listed. Report: {{upload-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: injury-status
      path: /sobjects/Injury_Report__c
      operations:
      - name: update-injury-status
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → injury-report-compilation-pipeline.yml

Analyzes broadcast ratings by querying viewership data from Snowflake, pulling broadcast assignments from Salesforce, refreshing Power BI dashboards, and distributing the analysis to media partners via Microsoft Teams and SharePoint.

naftiko: '0.5'
info:
  label: Broadcast Ratings Analysis Pipeline
  description: Analyzes broadcast ratings by querying viewership data from Snowflake, pulling broadcast assignments from Salesforce, refreshing Power BI dashboards, and distributing the analysis to media partners via Microsoft Teams and SharePoint.
  tags:
  - broadcast
  - analytics
  - snowflake
  - salesforce
  - power-bi
  - microsoft-teams
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: broadcast-analytics
    port: 8080
    tools:
    - name: analyze-broadcast-ratings
      description: Given a date range and network, analyze broadcast viewership ratings.
      inputParameters:
      - name: network
        in: body
        type: string
        description: The broadcast network.
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      steps:
      - name: pull-viewership
        type: call
        call: snowflake.execute-query
        with:
          network: '{{network}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-broadcast-schedule
        type: call
        call: salesforce.get-broadcast-schedule
        with:
          network: '{{network}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: broadcast-ratings-dataset
      - name: upload-analysis
        type: call
        call: sharepoint.create-folder
        with:
          site_id: media_site
          folder_path: BroadcastRatings/{{network}}/{{start_date}}_{{end_date}}
      - name: notify-media-team
        type: call
        call: msteams.post-message
        with:
          team_id: media-team
          channel_id: broadcast-ratings
          message: 'Broadcast ratings for {{network}} ({{start_date}} to {{end_date}}): {{pull-viewership.total_viewers}} total viewers across {{get-broadcast-schedule.totalSize}} games. Dashboard refreshed. Report: {{upload-analysis.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: broadcast-schedule
      path: /query/?q=SELECT+Game_ID__c,Network__c,Viewers__c+FROM+Broadcast_Right__c+WHERE+Network__c='{{network}}'+AND+Game_Date__c>={{start_date}}+AND+Game_Date__c<={{end_date}}
      inputParameters:
      - name: network
        in: query
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-broadcast-schedule
        method: GET
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → broadcast-ratings-analysis-pipeline.yml

Retrieves player statistics from the analytics data warehouse by player ID and season, returning points, rebounds, assists, and efficiency rating.

naftiko: '0.5'
info:
  label: Player Statistics Lookup
  description: Retrieves player statistics from the analytics data warehouse by player ID and season, returning points, rebounds, assists, and efficiency rating.
  tags:
  - analytics
  - player-stats
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: player-analytics
    port: 8080
    tools:
    - name: get-player-stats
      description: Look up player statistics by player ID and season.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The NBA player ID.
      - name: season
        in: body
        type: string
        description: The season (e.g., 2025-26).
      call: snowflake.get-player-stats
      with:
        player_id: '{{player_id}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-player-stats
        method: POST
Open in Framework → View in Fleet → player-statistics-lookup.yml

Launches a fan engagement campaign by creating a Salesforce campaign, setting up Google Analytics tracking, uploading creative assets to SharePoint, and notifying the marketing team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Fan Engagement Campaign Pipeline
  description: Launches a fan engagement campaign by creating a Salesforce campaign, setting up Google Analytics tracking, uploading creative assets to SharePoint, and notifying the marketing team via Microsoft Teams.
  tags:
  - marketing
  - fan-engagement
  - salesforce
  - google-analytics
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: fan-campaigns
    port: 8080
    tools:
    - name: launch-fan-campaign
      description: Given campaign details, set up the full fan engagement campaign.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The campaign name.
      - name: target_segment
        in: body
        type: string
        description: Target fan segment (casual, avid, fantasy, international).
      - name: start_date
        in: body
        type: string
        description: Campaign start date.
      steps:
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: '{{campaign_name}}'
          segment: '{{target_segment}}'
          start_date: '{{start_date}}'
      - name: setup-tracking
        type: call
        call: ga.create-audience
        with:
          campaign_name: '{{campaign_name}}'
          segment: '{{target_segment}}'
      - name: upload-assets
        type: call
        call: sharepoint.create-folder
        with:
          site_id: marketing_site
          folder_path: Campaigns/{{campaign_name}}
      - name: notify-marketing
        type: call
        call: msteams.post-message
        with:
          team_id: marketing-team
          channel_id: campaigns
          message: 'Fan campaign ''{{campaign_name}}'' launched targeting {{target_segment}} fans. Start: {{start_date}}. Salesforce: {{create-campaign.id}}. Assets: {{upload-assets.webUrl}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: ga
    baseUri: https://analyticsadmin.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: audiences
      path: /properties/{{property_id}}/audiences
      operations:
      - name: create-audience
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → fan-engagement-campaign-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 1
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-1
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-1.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 11
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-11.yml

Triggers a dataset refresh in Power BI for league analytics dashboards covering ratings, attendance, and digital metrics.

naftiko: '0.5'
info:
  label: Power BI Dashboard Refresh
  description: Triggers a dataset refresh in Power BI for league analytics dashboards covering ratings, attendance, and digital metrics.
  tags:
  - analytics
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: bi-refresh
    port: 8080
    tools:
    - name: refresh-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-dashboard-refresh.yml

Manages dynamic ticket pricing by pulling demand signals from Snowflake, checking current sales from Salesforce, updating pricing recommendations, and notifying the ticketing team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Ticket Dynamic Pricing Pipeline
  description: Manages dynamic ticket pricing by pulling demand signals from Snowflake, checking current sales from Salesforce, updating pricing recommendations, and notifying the ticketing team via Microsoft Teams.
  tags:
  - ticketing
  - pricing
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: dynamic-pricing
    port: 8080
    tools:
    - name: update-ticket-pricing
      description: Given a game ID, analyze demand and update pricing recommendations.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The game event ID.
      - name: days_until_game
        in: body
        type: string
        description: Number of days until the game.
      steps:
      - name: analyze-demand
        type: call
        call: snowflake.execute-query
        with:
          game_id: '{{game_id}}'
          days_until: '{{days_until_game}}'
      - name: get-current-sales
        type: call
        call: salesforce.get-ticket-sales
        with:
          game_id: '{{game_id}}'
      - name: update-pricing
        type: call
        call: salesforce.update-pricing
        with:
          game_id: '{{game_id}}'
          demand_score: '{{analyze-demand.demand_score}}'
          current_capacity: '{{get-current-sales.Capacity_Percentage__c}}'
      - name: notify-ticketing
        type: call
        call: msteams.post-message
        with:
          team_id: ticketing-team
          channel_id: pricing
          message: 'Pricing update for game {{game_id}}: {{get-current-sales.Capacity_Percentage__c}}% sold, {{days_until_game}} days out. Demand score: {{analyze-demand.demand_score}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: ticket-sales
      path: /query/?q=SELECT+Capacity_Percentage__c,Tickets_Sold__c+FROM+Ticket_Summary__c+WHERE+Game_ID__c='{{game_id}}'
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: get-ticket-sales
        method: GET
    - name: pricing
      path: /sobjects/Ticket_Pricing__c/{{game_id}}
      inputParameters:
      - name: game_id
        in: path
      operations:
      - name: update-pricing
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ticket-dynamic-pricing-pipeline.yml

Retrieves benefits enrollment status from Workday for NBA league office employees by worker ID, returning current plan selections, dependent coverage, and enrollment window dates.

naftiko: '0.5'
info:
  label: Workday Benefits Enrollment Status
  description: Retrieves benefits enrollment status from Workday for NBA league office employees by worker ID, returning current plan selections, dependent coverage, and enrollment window dates.
  tags:
  - hr
  - benefits
  - workday
capability:
  exposes:
  - type: mcp
    namespace: benefits-enrollment
    port: 8080
    tools:
    - name: get-benefits-status
      description: Retrieve benefits enrollment status by worker ID.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-benefits
      with:
        worker_id: '{{worker_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/nba
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: benefits
      path: /benefits?worker={{worker_id}}
      inputParameters:
      - name: worker_id
        in: query
      operations:
      - name: get-benefits
        method: GET
Open in Framework → View in Fleet → workday-benefits-enrollment-status.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 10
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-10.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 12
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-12.yml

Queries team salary cap data from Snowflake by team code and season, returning total payroll, cap room, luxury tax status, and exception amounts.

naftiko: '0.5'
info:
  label: Team Salary Cap Query
  description: Queries team salary cap data from Snowflake by team code and season, returning total payroll, cap room, luxury tax status, and exception amounts.
  tags:
  - analytics
  - salary-cap
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: salary-cap
    port: 8080
    tools:
    - name: get-salary-cap
      description: Look up team salary cap details by team code and season.
      inputParameters:
      - name: team_code
        in: body
        type: string
        description: The NBA team abbreviation.
      - name: season
        in: body
        type: string
        description: The season (e.g., 2025-26).
      call: snowflake.get-salary-cap
      with:
        team_code: '{{team_code}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-salary-cap
        method: POST
Open in Framework → View in Fleet → team-salary-cap-query.yml

Tracks G League player development metrics from Snowflake by player ID and G League season, returning per-game averages, call-up status, and two-way contract details.

naftiko: '0.5'
info:
  label: G League Player Development Tracker
  description: Tracks G League player development metrics from Snowflake by player ID and G League season, returning per-game averages, call-up status, and two-way contract details.
  tags:
  - development
  - g-league
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: gleague-development
    port: 8080
    tools:
    - name: get-gleague-stats
      description: Retrieve G League player development stats by player ID and season.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The player identifier.
      - name: gleague_season
        in: body
        type: string
        description: The G League season.
      call: snowflake.get-gleague-stats
      with:
        player_id: '{{player_id}}'
        gleague_season: '{{gleague_season}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-gleague-stats
        method: POST
Open in Framework → View in Fleet → g-league-player-development-tracker.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 13
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-13.yml

Activates a sponsorship deal by pulling deal details from Salesforce, creating an activation plan in SharePoint, setting up tracking in Google Analytics, and notifying the partnerships team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Sponsorship Activation Pipeline
  description: Activates a sponsorship deal by pulling deal details from Salesforce, creating an activation plan in SharePoint, setting up tracking in Google Analytics, and notifying the partnerships team via Microsoft Teams.
  tags:
  - sponsorship
  - activation
  - salesforce
  - sharepoint
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sponsorship-activation
    port: 8080
    tools:
    - name: activate-sponsorship
      description: Given a sponsor ID and activation type, set up the full activation workflow.
      inputParameters:
      - name: sponsor_id
        in: body
        type: string
        description: The Salesforce sponsor account ID.
      - name: activation_type
        in: body
        type: string
        description: Type of activation (in_arena, digital, broadcast, social).
      - name: campaign_name
        in: body
        type: string
        description: The activation campaign name.
      steps:
      - name: get-deal-details
        type: call
        call: salesforce.get-sponsorship
        with:
          sponsor_id: '{{sponsor_id}}'
      - name: create-activation-plan
        type: call
        call: sharepoint.create-folder
        with:
          site_id: partnerships_site
          folder_path: Activations/{{sponsor_id}}/{{campaign_name}}
      - name: setup-tracking
        type: call
        call: ga.create-audience
        with:
          campaign_name: '{{campaign_name}}'
          sponsor: '{{sponsor_id}}'
      - name: notify-partnerships
        type: call
        call: msteams.post-message
        with:
          team_id: partnerships-team
          channel_id: activations
          message: 'Sponsorship activation launched: {{campaign_name}} for {{sponsor_id}} ({{activation_type}}). Deal value: {{get-deal-details.Deal_Value__c}}. Plan: {{create-activation-plan.webUrl}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: sponsorships
      path: /query/?q=SELECT+Deal_Value__c,Term__c,Activation_Rights__c+FROM+Sponsorship__c+WHERE+Sponsor_ID__c='{{sponsor_id}}'
      inputParameters:
      - name: sponsor_id
        in: query
      operations:
      - name: get-sponsorship
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: ga
    baseUri: https://analyticsadmin.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: audiences
      path: /properties/{{property_id}}/audiences
      operations:
      - name: create-audience
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: 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 → sponsorship-activation-pipeline.yml

Retrieves a fan support ticket from Zendesk by ticket ID, returning status, priority, and assigned agent.

naftiko: '0.5'
info:
  label: Zendesk Support Ticket Lookup
  description: Retrieves a fan support ticket from Zendesk by ticket ID, returning status, priority, and assigned agent.
  tags:
  - fan-support
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: fan-support
    port: 8080
    tools:
    - name: get-support-ticket
      description: Look up a Zendesk support ticket by ticket ID.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket ID.
      call: zendesk.get-ticket
      with:
        ticket_id: '{{ticket_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nba.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
Open in Framework → View in Fleet → zendesk-support-ticket-lookup.yml

Retrieves NBA Combine measurement data from Snowflake by prospect name or draft class year, returning height, wingspan, vertical leap, lane agility, and sprint times.

naftiko: '0.5'
info:
  label: NBA Combine Measurements Lookup
  description: Retrieves NBA Combine measurement data from Snowflake by prospect name or draft class year, returning height, wingspan, vertical leap, lane agility, and sprint times.
  tags:
  - scouting
  - combine
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: combine-data
    port: 8080
    tools:
    - name: get-combine-measurements
      description: Look up combine measurements by draft class year.
      inputParameters:
      - name: draft_year
        in: body
        type: string
        description: The draft class year.
      call: snowflake.get-combine-data
      with:
        draft_year: '{{draft_year}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-combine-data
        method: POST
Open in Framework → View in Fleet → nba-combine-measurements-lookup.yml

Manages community outreach events by creating events in Salesforce, setting up tracking in Google Analytics, uploading materials to SharePoint, and announcing to the community team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Community Outreach Event Pipeline
  description: Manages community outreach events by creating events in Salesforce, setting up tracking in Google Analytics, uploading materials to SharePoint, and announcing to the community team via Microsoft Teams.
  tags:
  - community
  - events
  - salesforce
  - google-analytics
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: community-outreach
    port: 8080
    tools:
    - name: setup-outreach-event
      description: Given event details, set up the community outreach workflow.
      inputParameters:
      - name: event_name
        in: body
        type: string
        description: The event name.
      - name: team_code
        in: body
        type: string
        description: The participating team.
      - name: event_date
        in: body
        type: string
        description: The event date.
      steps:
      - name: create-event
        type: call
        call: salesforce.create-event
        with:
          event_name: '{{event_name}}'
          team_code: '{{team_code}}'
          event_date: '{{event_date}}'
      - name: setup-tracking
        type: call
        call: ga.create-audience
        with:
          campaign_name: '{{event_name}}'
          sponsor: '{{team_code}}'
      - name: create-materials-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: community_site
          folder_path: Events/{{team_code}}/{{event_name}}
      - name: notify-community-team
        type: call
        call: msteams.post-message
        with:
          team_id: community-team
          channel_id: events
          message: 'Community event set up: {{event_name}} ({{team_code}}, {{event_date}}). Materials: {{create-materials-folder.webUrl}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: events
      path: /sobjects/Community_Event__c
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: ga
    baseUri: https://analyticsadmin.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: audiences
      path: /properties/{{property_id}}/audiences
      operations:
      - name: create-audience
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → community-outreach-event-pipeline.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 14
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-14.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 9
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-9
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-9.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 8
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-8
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalbasketballassociation-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 → national-basketball-association-workflow-8.yml

Retrieves metadata for a Tableau workbook used in basketball analytics including player tracking and shot charts.

naftiko: '0.5'
info:
  label: Tableau Workbook Metadata
  description: Retrieves metadata for a Tableau workbook used in basketball analytics including player tracking and shot charts.
  tags:
  - analytics
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: bi-metadata
    port: 8080
    tools:
    - name: get-workbook-metadata
      description: Retrieve Tableau workbook metadata by workbook ID.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: The Tableau workbook ID.
      call: tableau.get-workbook
      with:
        workbook_id: '{{workbook_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://nba.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: get-workbook
        method: GET
Open in Framework → View in Fleet → tableau-workbook-metadata.yml

Retrieves broadcast rights assignments from Salesforce for a game or series, returning network, territory, and window details.

naftiko: '0.5'
info:
  label: Broadcast Rights Lookup
  description: Retrieves broadcast rights assignments from Salesforce for a game or series, returning network, territory, and window details.
  tags:
  - broadcast
  - rights
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: broadcast-rights
    port: 8080
    tools:
    - name: get-broadcast-rights
      description: Look up broadcast rights for a game by game ID.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The game event ID.
      call: salesforce.get-broadcast
      with:
        game_id: '{{game_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: broadcasts
      path: /query/?q=SELECT+Network__c,Territory__c,Window_Start__c,Window_End__c+FROM+Broadcast_Right__c+WHERE+Game_ID__c='{{game_id}}'
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: get-broadcast
        method: GET
Open in Framework → View in Fleet → broadcast-rights-lookup.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 15
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-15.yml

Retrieves available salary cap exceptions from Salesforce for a team, returning mid-level exception, bi-annual exception, and trade exception amounts.

naftiko: '0.5'
info:
  label: Salary Cap Exception Tracker
  description: Retrieves available salary cap exceptions from Salesforce for a team, returning mid-level exception, bi-annual exception, and trade exception amounts.
  tags:
  - salary-cap
  - transactions
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: cap-exceptions
    port: 8080
    tools:
    - name: get-cap-exceptions
      description: Look up available salary cap exceptions by team code.
      inputParameters:
      - name: team_code
        in: body
        type: string
        description: The NBA team abbreviation.
      - name: season
        in: body
        type: string
        description: The season.
      call: salesforce.get-exceptions
      with:
        team_code: '{{team_code}}'
        season: '{{season}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: exceptions
      path: /query/?q=SELECT+MLE_Amount__c,BAE_Amount__c,Trade_Exceptions__c+FROM+Cap_Exception__c+WHERE+Team_Code__c='{{team_code}}'+AND+Season__c='{{season}}'
      inputParameters:
      - name: team_code
        in: query
      - name: season
        in: query
      operations:
      - name: get-exceptions
        method: GET
Open in Framework → View in Fleet → salary-cap-exception-tracker.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 16
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-16
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASKET
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-16.yml

Fetches an employee profile from Workday by worker ID for NBA league office HR operations.

naftiko: '0.5'
info:
  label: Workday Employee Profile
  description: Fetches an employee profile from Workday by worker ID for NBA league office HR operations.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-employee
    port: 8080
    tools:
    - name: get-employee-profile
      description: Retrieve a Workday employee profile by worker ID.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-worker
      with:
        worker_id: '{{worker_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-employee-profile.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 8
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-8.yml

Orchestrates game day operations by pulling the game schedule from Salesforce, confirming broadcast assignments, checking ticket sales status, sending game day prep alerts to venue staff via Microsoft Teams, and logging the operations checklist in SharePoint.

naftiko: '0.5'
info:
  label: Game Day Operations Orchestrator
  description: Orchestrates game day operations by pulling the game schedule from Salesforce, confirming broadcast assignments, checking ticket sales status, sending game day prep alerts to venue staff via Microsoft Teams, and logging the operations checklist in SharePoint.
  tags:
  - broadcast
  - ticketing
  - game-day
  - salesforce
  - microsoft-teams
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: game-day-ops
    port: 8080
    tools:
    - name: run-game-day-checklist
      description: Given a game ID, run the full game day operations checklist.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The game event ID.
      steps:
      - name: get-game-details
        type: call
        call: salesforce.get-game
        with:
          game_id: '{{game_id}}'
      - name: check-ticket-status
        type: call
        call: salesforce.get-ticket-sales
        with:
          game_id: '{{game_id}}'
      - name: log-checklist
        type: call
        call: sharepoint.create-folder
        with:
          site_id: game_ops_site
          folder_path: GameDay/{{game_id}}
      - name: alert-venue-staff
        type: call
        call: msteams.post-message
        with:
          team_id: game-operations-team
          channel_id: game-day
          message: 'GAME DAY: {{get-game-details.Home_Team__c}} vs {{get-game-details.Away_Team__c}} at {{get-game-details.Venue__c}}. Tickets: {{check-ticket-status.Capacity_Percentage__c}}% sold. Broadcast: {{get-game-details.Broadcast__c}}. Checklist: {{log-checklist.webUrl}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: games
      path: /sobjects/Game__c/{{game_id}}
      inputParameters:
      - name: game_id
        in: path
      operations:
      - name: get-game
        method: GET
    - name: ticket-sales
      path: /query/?q=SELECT+Tickets_Sold__c,Capacity_Percentage__c+FROM+Ticket_Summary__c+WHERE+Game_ID__c='{{game_id}}'
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: get-ticket-sales
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → game-day-operations-orchestrator.yml

Generates the playoff bracket by pulling current standings from Snowflake, creating bracket visualizations in Tableau, uploading to SharePoint, and announcing via Microsoft Teams.

naftiko: '0.5'
info:
  label: Playoff Bracket Generation Pipeline
  description: Generates the playoff bracket by pulling current standings from Snowflake, creating bracket visualizations in Tableau, uploading to SharePoint, and announcing via Microsoft Teams.
  tags:
  - playoffs
  - analytics
  - snowflake
  - tableau
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: playoff-bracket
    port: 8080
    tools:
    - name: generate-playoff-bracket
      description: Given a season and conference, generate the playoff bracket.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The NBA season.
      - name: conference
        in: body
        type: string
        description: The conference (east, west, both).
      steps:
      - name: pull-standings
        type: call
        call: snowflake.execute-query
        with:
          season: '{{season}}'
          conference: '{{conference}}'
      - name: refresh-bracket-viz
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: playoff-bracket-ds
      - name: upload-bracket
        type: call
        call: sharepoint.create-folder
        with:
          site_id: basketball_ops_site
          folder_path: Playoffs/{{season}}/Bracket
      - name: announce-bracket
        type: call
        call: msteams.post-message
        with:
          team_id: league-operations
          channel_id: playoffs
          message: 'Playoff bracket generated for {{season}} ({{conference}}). Top seed: {{pull-standings.top_seed}}. Bracket: {{upload-bracket.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.online.tableau.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/{{site_id}}/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → playoff-bracket-generation-pipeline.yml

Retrieves operational data for National Basketball Association basketball workflows.

naftiko: '0.5'
info:
  label: National Basketball Association Data Lookup 9
  description: Retrieves operational data for National Basketball Association basketball workflows.
  tags:
  - basketball
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalbasketballassociation-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for National Basketball Association basketball workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalbasketballassociation-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-data
    baseUri: https://api.nba.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-data-lookup-9.yml

Manages team travel logistics by pulling schedule data from Salesforce, creating travel itinerary documents in SharePoint, and notifying the team operations staff via Microsoft Teams.

naftiko: '0.5'
info:
  label: Team Travel Logistics Pipeline
  description: Manages team travel logistics by pulling schedule data from Salesforce, creating travel itinerary documents in SharePoint, and notifying the team operations staff via Microsoft Teams.
  tags:
  - operations
  - travel
  - salesforce
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: team-travel
    port: 8080
    tools:
    - name: plan-team-travel
      description: Given a team code and road trip dates, plan the travel logistics.
      inputParameters:
      - name: team_code
        in: body
        type: string
        description: The NBA team abbreviation.
      - name: start_date
        in: body
        type: string
        description: Trip start date.
      - name: end_date
        in: body
        type: string
        description: Trip end date.
      steps:
      - name: get-road-schedule
        type: call
        call: salesforce.get-road-games
        with:
          team_code: '{{team_code}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: create-itinerary
        type: call
        call: sharepoint.create-folder
        with:
          site_id: team_ops_site
          folder_path: Travel/{{team_code}}/{{start_date}}-{{end_date}}
      - name: notify-staff
        type: call
        call: msteams.post-message
        with:
          team_id: team-operations
          channel_id: travel
          message: 'Travel itinerary created for {{team_code}} road trip ({{start_date}} to {{end_date}}). {{get-road-schedule.totalSize}} games. Itinerary: {{create-itinerary.webUrl}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: road-games
      path: /query/?q=SELECT+Game_Date__c,Away_Team__c,Venue__c+FROM+Game__c+WHERE+Away_Team__c='{{team_code}}'+AND+Game_Date__c>={{start_date}}+AND+Game_Date__c<={{end_date}}
      inputParameters:
      - name: team_code
        in: query
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-road-games
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → team-travel-logistics-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 17
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-17
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-17.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 15
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-15
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#basketball'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-15.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 29
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-29
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-29.yml

Queries All-Star game voting results from Snowflake by season and conference, returning player vote totals, fan vs. media vs. player splits, and ranking positions.

naftiko: '0.5'
info:
  label: All-Star Game Voting Results Query
  description: Queries All-Star game voting results from Snowflake by season and conference, returning player vote totals, fan vs. media vs. player splits, and ranking positions.
  tags:
  - all-star
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: allstar-voting
    port: 8080
    tools:
    - name: get-allstar-votes
      description: Retrieve All-Star voting results by season and conference.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The NBA season.
      - name: conference
        in: body
        type: string
        description: The conference (east, west).
      call: snowflake.get-allstar-votes
      with:
        season: '{{season}}'
        conference: '{{conference}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-allstar-votes
        method: POST
Open in Framework → View in Fleet → all-star-game-voting-results-query.yml

Retrieves ticket sales summary data from Salesforce for a specified game or event, returning total tickets sold, revenue, and sellout percentage.

naftiko: '0.5'
info:
  label: Ticket Sales Summary
  description: Retrieves ticket sales summary data from Salesforce for a specified game or event, returning total tickets sold, revenue, and sellout percentage.
  tags:
  - ticketing
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: ticketing
    port: 8080
    tools:
    - name: get-ticket-sales
      description: Look up ticket sales data for a game by game ID.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The game event ID.
      call: salesforce.get-ticket-sales
      with:
        game_id: '{{game_id}}'
      outputParameters:
      - name: tickets_sold
        type: string
        mapping: $.records[0].Tickets_Sold__c
      - name: revenue
        type: string
        mapping: $.records[0].Ticket_Revenue__c
      - name: capacity_pct
        type: string
        mapping: $.records[0].Capacity_Percentage__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: ticket-sales
      path: /query/?q=SELECT+Tickets_Sold__c,Ticket_Revenue__c,Capacity_Percentage__c+FROM+Ticket_Summary__c+WHERE+Game_ID__c='{{game_id}}'
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: get-ticket-sales
        method: GET
Open in Framework → View in Fleet → ticket-sales-summary.yml

Generates season attendance reports by querying attendance data from Snowflake, pulling venue capacities from Salesforce, refreshing Power BI dashboards, uploading to SharePoint, and notifying the operations team.

naftiko: '0.5'
info:
  label: Season Attendance Report Pipeline
  description: Generates season attendance reports by querying attendance data from Snowflake, pulling venue capacities from Salesforce, refreshing Power BI dashboards, uploading to SharePoint, and notifying the operations team.
  tags:
  - ticketing
  - analytics
  - snowflake
  - salesforce
  - power-bi
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: attendance-reporting
    port: 8080
    tools:
    - name: generate-attendance-report
      description: Given a season and team, generate comprehensive attendance analytics.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The NBA season.
      - name: team_code
        in: body
        type: string
        description: The team abbreviation (or ALL for league-wide).
      steps:
      - name: query-attendance
        type: call
        call: snowflake.execute-query
        with:
          season: '{{season}}'
          team_code: '{{team_code}}'
      - name: get-venue-data
        type: call
        call: salesforce.get-venues
        with:
          team_code: '{{team_code}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: attendance-dataset
      - name: upload-report
        type: call
        call: sharepoint.create-folder
        with:
          site_id: operations_site
          folder_path: Attendance/{{season}}/{{team_code}}
      - name: notify-ops
        type: call
        call: msteams.post-message
        with:
          team_id: operations-team
          channel_id: attendance
          message: 'Attendance report for {{team_code}} ({{season}}): {{query-attendance.total_attendance}} total, {{query-attendance.avg_attendance}} avg per game. Dashboard refreshed. Report: {{upload-report.webUrl}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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://nba.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: venues
      path: /query/?q=SELECT+Venue__c,Capacity__c+FROM+Team__c+WHERE+Team_Code__c='{{team_code}}'
      inputParameters:
      - name: team_code
        in: query
      operations:
      - name: get-venues
        method: GET
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → season-attendance-report-pipeline.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 28
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-28
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: BASKET
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-28.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 14
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-14
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-14.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 10
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-10
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-10.yml

Analyzes NBA social media performance by querying engagement data from Snowflake, pulling digital metrics from Google Analytics, refreshing Power BI dashboards, and distributing insights to the digital team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Social Media Analytics Pipeline
  description: Analyzes NBA social media performance by querying engagement data from Snowflake, pulling digital metrics from Google Analytics, refreshing Power BI dashboards, and distributing insights to the digital team via Microsoft Teams.
  tags:
  - analytics
  - social-media
  - snowflake
  - google-analytics
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: social-analytics
    port: 8080
    tools:
    - name: analyze-social-media
      description: Given a platform and date range, analyze social media engagement.
      inputParameters:
      - name: platform
        in: body
        type: string
        description: Social platform (instagram, twitter, youtube, tiktok).
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      steps:
      - name: query-social-data
        type: call
        call: snowflake.execute-query
        with:
          platform: '{{platform}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-web-traffic
        type: call
        call: ga.get-report
        with:
          content_section: social-{{platform}}
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: social-media-dataset
      - name: notify-digital
        type: call
        call: msteams.post-message
        with:
          team_id: digital-team
          channel_id: social-analytics
          message: 'Social media report for {{platform}} ({{start_date}} to {{end_date}}): {{query-social-data.total_engagements}} engagements. Web referrals: {{get-web-traffic.sessions}}. Dashboard refreshed.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.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: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → social-media-analytics-pipeline.yml

Retrieves digital engagement metrics from Google Analytics for NBA.com, including page views, unique users, and session duration by content section.

naftiko: '0.5'
info:
  label: Google Analytics Digital Engagement
  description: Retrieves digital engagement metrics from Google Analytics for NBA.com, including page views, unique users, and session duration by content section.
  tags:
  - analytics
  - digital
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: digital-analytics
    port: 8080
    tools:
    - name: get-digital-engagement
      description: Query Google Analytics for NBA.com engagement metrics.
      inputParameters:
      - name: content_section
        in: body
        type: string
        description: The content section (e.g., scores, news, fantasy).
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      call: ga.get-report
      with:
        content_section: '{{content_section}}'
        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-engagement.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 11
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-11
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-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: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-11.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 13
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-13
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalbasketballassociation.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 → national-basketball-association-workflow-13.yml

Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.

naftiko: '0.5'
info:
  label: National Basketball Association Workflow 12
  description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
  tags:
  - basketball
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: basketball
    port: 8080
    tools:
    - name: national-basketball-association-workflow-12
      description: Orchestrates basketball operations including data retrieval, processing, and automated notification for National Basketball Association.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalbasketballassociation-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: basketball.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: nationalbasketballassociation-ops
    baseUri: https://api.nba.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nba_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 → national-basketball-association-workflow-12.yml

Queries League Pass subscription metrics from Snowflake, returning subscriber count, churn rate, average revenue per user, and geographic distribution.

naftiko: '0.5'
info:
  label: NBA League Pass Subscription Analytics
  description: Queries League Pass subscription metrics from Snowflake, returning subscriber count, churn rate, average revenue per user, and geographic distribution.
  tags:
  - digital
  - subscriptions
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: league-pass-analytics
    port: 8080
    tools:
    - name: get-league-pass-metrics
      description: Retrieve League Pass subscription analytics by region and period.
      inputParameters:
      - name: region
        in: body
        type: string
        description: The geographic region.
      - name: period
        in: body
        type: string
        description: The reporting period.
      call: snowflake.get-league-pass
      with:
        region: '{{region}}'
        period: '{{period}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nba.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: get-league-pass
        method: POST
Open in Framework → View in Fleet → nba-league-pass-subscription-analytics.yml

Aggregates scouting data from Elasticsearch player analytics, attaches evaluation notes from SharePoint, and creates a consolidated prospect report in Confluence for the scouting department.

naftiko: '0.5'
info:
  label: Draft Prospect Scouting Report Compiler
  description: Aggregates scouting data from Elasticsearch player analytics, attaches evaluation notes from SharePoint, and creates a consolidated prospect report in Confluence for the scouting department.
  tags:
  - player-analytics
  - scouting
  - elasticsearch
  - sharepoint
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: scouting
    port: 8080
    tools:
    - name: compile-scouting-report
      description: Given a prospect ID and draft year, aggregate analytics data, evaluation notes, and publish a consolidated scouting report to Confluence.
      inputParameters:
      - name: prospect_id
        in: body
        type: string
        description: The unique prospect identifier.
      - name: draft_year
        in: body
        type: string
        description: The NFL draft year.
      - name: position
        in: body
        type: string
        description: The player's position (QB, WR, RB, etc.).
      steps:
      - name: fetch-analytics
        type: call
        call: elasticsearch.search-prospect
        with:
          prospect_id: '{{prospect_id}}'
          year: '{{draft_year}}'
      - name: fetch-notes
        type: call
        call: sharepoint.get-file
        with:
          site_id: scouting_site
          file_path: ScoutingNotes/{{draft_year}}/{{prospect_id}}.docx
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: SCOUT
          title: Draft {{draft_year}} - {{position}} - Prospect {{prospect_id}}
          body: 'Analytics: {{fetch-analytics}} | Notes: {{fetch-notes.content}}'
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://nfl-analytics.es.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: prospect-stats
      path: /prospect-stats/_search
      operations:
      - name: search-prospect
        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: get-file
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://nfl.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 → draft-prospect-scouting-report-compiler.yml

Executes a log analytics query against Azure Log Analytics workspace for NFL cloud infrastructure, returning query results and row count.

naftiko: '0.5'
info:
  label: Azure Log Analytics Query
  description: Executes a log analytics query against Azure Log Analytics workspace for NFL cloud infrastructure, returning query results and row count.
  tags:
  - monitoring
  - azure-log-analytics
  - cloud
capability:
  exposes:
  - type: mcp
    namespace: log-analytics
    port: 8080
    tools:
    - name: run-log-query
      description: Execute an Azure Log Analytics query against a workspace.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Azure Log Analytics workspace ID.
      - name: query
        in: body
        type: string
        description: The KQL query to execute.
      call: loganalytics.run-query
      with:
        workspace_id: '{{workspace_id}}'
        query: '{{query}}'
      outputParameters:
      - name: row_count
        type: string
        mapping: $.tables[0].rows.length
      - name: results
        type: array
        mapping: $.tables[0].rows
  consumes:
  - type: http
    namespace: loganalytics
    baseUri: https://api.loganalytics.io/v1
    authentication:
      type: bearer
      token: $secrets.azure_loganalytics_token
    resources:
    - name: queries
      path: /workspaces/{{workspace_id}}/query
      inputParameters:
      - name: workspace_id
        in: path
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → azure-log-analytics-query.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 15
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-15.yml

Queries Datadog for the current health status of NFL infrastructure services, returning host count, alert counts, and top critical monitors.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Health Check
  description: Queries Datadog for the current health status of NFL infrastructure services, returning host count, alert counts, and top 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 including host count, active alerts, and critical monitors.
      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 National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 14
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-14.yml

Checks the status of an Ansible Tower job template execution, returning job status, start time, and elapsed duration.

naftiko: '0.5'
info:
  label: Ansible Tower Deployment Status
  description: Checks the status of an Ansible Tower job template execution, returning job status, start time, and elapsed duration.
  tags:
  - devops
  - ansible-tower
  - deployment
capability:
  exposes:
  - type: mcp
    namespace: deployment
    port: 8080
    tools:
    - name: get-deployment-status
      description: Check the status of an Ansible Tower job by job ID.
      inputParameters:
      - name: job_id
        in: body
        type: string
        description: The Ansible Tower job identifier.
      call: ansible.get-job
      with:
        job_id: '{{job_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: started
        type: string
        mapping: $.started
      - name: elapsed
        type: string
        mapping: $.elapsed
  consumes:
  - type: http
    namespace: ansible
    baseUri: https://nfl-tower.ansible.com/api/v2
    authentication:
      type: bearer
      token: $secrets.ansible_tower_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 → ansible-tower-deployment-status.yml

Pulls salary cap data from PeopleSoft, validates against league cap limits stored in Salesforce, and alerts the finance team in Microsoft Teams if a team approaches the threshold.

naftiko: '0.5'
info:
  label: Salary Cap Compliance Tracker
  description: Pulls salary cap data from PeopleSoft, validates against league cap limits stored in Salesforce, and alerts the finance team in Microsoft Teams if a team approaches the threshold.
  tags:
  - finance
  - salary-cap
  - peoplesoft
  - salesforce
  - microsoft-teams
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: salary-cap
    port: 8080
    tools:
    - name: check-cap-compliance
      description: Given a team code and season year, check salary cap utilization against league limits and alert if approaching threshold.
      inputParameters:
      - name: team_code
        in: body
        type: string
        description: The NFL team abbreviation (e.g., KC, PHI).
      - name: season_year
        in: body
        type: string
        description: The season year.
      steps:
      - name: get-cap-usage
        type: call
        call: peoplesoft.get-salary-cap
        with:
          team_code: '{{team_code}}'
          season: '{{season_year}}'
      - name: get-cap-limit
        type: call
        call: salesforce.get-cap-limit
        with:
          season: '{{season_year}}'
      - name: alert-finance
        type: call
        call: msteams.send-message
        with:
          channel_id: finance-cap-alerts
          text: 'Salary Cap Status for {{team_code}} ({{season_year}}): Usage ${{get-cap-usage.total_committed}} / Cap ${{get-cap-limit.cap_amount}}. Available space: ${{get-cap-usage.available_space}}.'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://nfl-hr.peoplesoft.com/api/v1
    authentication:
      type: bearer
      token: $secrets.peoplesoft_token
    resources:
    - name: salary-cap
      path: /salarycap/{{team_code}}/{{season}}
      inputParameters:
      - name: team_code
        in: path
      - name: season
        in: path
      operations:
      - name: get-salary-cap
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cap-limits
      path: /query/?q=SELECT+Cap_Amount__c+FROM+Salary_Cap__c+WHERE+Season__c='{{season}}'
      inputParameters:
      - name: season
        in: query
      operations:
      - name: get-cap-limit
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salary-cap-compliance-tracker.yml

Retrieves a document from Box by file ID and returns the file name, size, owner, and a temporary download URL.

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

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 10
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-10.yml

At season end, triggers SAP BW financial extraction, reconciles with Oracle Cloud receivables, generates the close report in Crystal Reports, stores it in SharePoint, and notifies the CFO team via Microsoft Teams.

naftiko: '0.5'
info:
  label: End-of-Season Financial Close Orchestrator
  description: At season end, triggers SAP BW financial extraction, reconciles with Oracle Cloud receivables, generates the close report in Crystal Reports, stores it in SharePoint, and notifies the CFO team via Microsoft Teams.
  tags:
  - finance
  - season-close
  - sap-bw
  - oracle-cloud
  - crystal-reports
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: execute-season-close
      description: Given a season year, run the end-of-season financial close process across SAP BW, Oracle Cloud, Crystal Reports, SharePoint, and Microsoft Teams.
      inputParameters:
      - name: season_year
        in: body
        type: string
        description: The season year to close.
      steps:
      - name: extract-financials
        type: call
        call: sapbw.run-season-report
        with:
          season: '{{season_year}}'
      - name: reconcile-receivables
        type: call
        call: oracle.get-receivables
        with:
          season: '{{season_year}}'
      - name: generate-report
        type: call
        call: crystal-reports.generate-close-report
        with:
          financials: '{{extract-financials}}'
          receivables: '{{reconcile-receivables}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: finance_site
          folder_path: SeasonClose/{{season_year}}
          file_name: season_close_report.pdf
          content: '{{generate-report.report_content}}'
      - name: notify-cfo
        type: call
        call: msteams.send-message
        with:
          channel_id: cfo-office
          text: 'Season {{season_year}} financial close complete. Revenue: {{extract-financials.total_revenue}}. Receivables: {{reconcile-receivables.total_outstanding}}. Report: {{store-report.url}}'
  consumes:
  - type: http
    namespace: sapbw
    baseUri: https://nfl-bw.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: season-reports
      path: /FINANCIAL_REPORT_SRV/SeasonReports
      operations:
      - name: run-season-report
        method: POST
  - type: http
    namespace: oracle
    baseUri: https://nfl.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: receivables
      path: /receivablesInvoices
      operations:
      - name: get-receivables
        method: GET
  - type: http
    namespace: crystal-reports
    baseUri: https://nfl-reports.businessobjects.com/api/v1
    authentication:
      type: bearer
      token: $secrets.crystal_reports_token
    resources:
    - name: reports
      path: /reports/generate
      operations:
      - name: generate-close-report
        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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → end-of-season-financial-close-orchestrator.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 11
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-11.yml

When a Zendesk fan complaint is marked high-priority, escalates to a ServiceNow case for league office review and notifies the fan experience team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Fan Complaint Escalation Workflow
  description: When a Zendesk fan complaint is marked high-priority, escalates to a ServiceNow case for league office review and notifies the fan experience team via Microsoft Teams.
  tags:
  - fan-support
  - zendesk
  - servicenow
  - microsoft-teams
  - escalation
capability:
  exposes:
  - type: mcp
    namespace: fan-support-escalation
    port: 8080
    tools:
    - name: escalate-fan-complaint
      description: Given a Zendesk ticket ID and fan details, create a ServiceNow escalation case and alert the fan experience team in Microsoft Teams.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket identifier.
      - name: fan_name
        in: body
        type: string
        description: Name of the fan filing the complaint.
      - name: complaint_summary
        in: body
        type: string
        description: Brief summary of the complaint.
      steps:
      - name: get-ticket
        type: call
        call: zendesk.get-ticket
        with:
          ticket_id: '{{ticket_id}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Fan Complaint Escalation: {{fan_name}}'
          category: fan_experience
          description: '{{complaint_summary}} | Zendesk Ticket: {{ticket_id}}'
          urgency: '1'
      - name: alert-team
        type: call
        call: msteams.send-message
        with:
          channel_id: fan-experience-escalations
          text: 'HIGH PRIORITY Fan Complaint from {{fan_name}}. Zendesk #{{ticket_id}}. ServiceNow case: {{create-case.number}}. Summary: {{complaint_summary}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nfl.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://nfl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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 → fan-complaint-escalation-workflow.yml

Retrieves a ServiceNow incident by number and returns the current state, assignee, priority, and last updated timestamp.

naftiko: '0.5'
info:
  label: ServiceNow Ticket Status
  description: Retrieves a ServiceNow incident by number and returns the current state, assignee, priority, and last updated timestamp.
  tags:
  - it-operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-ops
    port: 8080
    tools:
    - name: get-ticket-status
      description: Look up a ServiceNow incident by number and return its current state and assignment details.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number (e.g., INC0012345).
      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: priority
        type: string
        mapping: $.result[0].priority
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://nfl.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={{number}}
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-ticket-status.yml

Retrieves application performance metrics from New Relic for NFL digital properties 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 NFL digital properties including response time, throughput, and error rate.
  tags:
  - application-performance
  - new-relic
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Look up New Relic application performance metrics by application name.
      inputParameters:
      - name: app_name
        in: body
        type: string
        description: The New Relic application name (e.g., nfl-app, nfl-fantasy).
      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 National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 13
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-13.yml

Queries Palo Alto Networks firewall for a specific security rule by name, returning the rule action, source zones, destination zones, and application filters.

naftiko: '0.5'
info:
  label: Palo Alto Firewall Rule Lookup
  description: Queries Palo Alto Networks firewall for a specific security rule by name, returning the rule action, source zones, destination zones, and application filters.
  tags:
  - security
  - palo-alto-networks
  - firewall
capability:
  exposes:
  - type: mcp
    namespace: network-security
    port: 8080
    tools:
    - name: get-firewall-rule
      description: Look up a Palo Alto Networks firewall rule by name.
      inputParameters:
      - name: rule_name
        in: body
        type: string
        description: The firewall rule name.
      call: paloalto.get-rule
      with:
        rule_name: '{{rule_name}}'
      outputParameters:
      - name: action
        type: string
        mapping: $.result.entry.action
      - name: source_zones
        type: array
        mapping: $.result.entry.from.member
      - name: destination_zones
        type: array
        mapping: $.result.entry.to.member
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://nfl-fw.paloaltonetworks.com/restapi/v10.2
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules?name={{rule_name}}
      inputParameters:
      - name: rule_name
        in: query
      operations:
      - name: get-rule
        method: GET
Open in Framework → View in Fleet → palo-alto-firewall-rule-lookup.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 12
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-12.yml

Retrieves an enterprise architecture model from Sparx EA by project GUID, returning element count, diagram count, and last modified date.

naftiko: '0.5'
info:
  label: Sparx Enterprise Architect Model Lookup
  description: Retrieves an enterprise architecture model from Sparx EA by project GUID, returning element count, diagram count, and last modified date.
  tags:
  - architecture
  - sparx-enterprise-architect
  - modeling
capability:
  exposes:
  - type: mcp
    namespace: enterprise-architecture
    port: 8080
    tools:
    - name: get-ea-model
      description: Look up a Sparx EA model by project GUID.
      inputParameters:
      - name: project_guid
        in: body
        type: string
        description: The Sparx EA project GUID.
      call: sparxea.get-model
      with:
        project_guid: '{{project_guid}}'
      outputParameters:
      - name: element_count
        type: string
        mapping: $.model.element_count
      - name: diagram_count
        type: string
        mapping: $.model.diagram_count
      - name: last_modified
        type: string
        mapping: $.model.last_modified
  consumes:
  - type: http
    namespace: sparxea
    baseUri: https://nfl-ea.sparxsystems.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sparxea_token
    resources:
    - name: models
      path: /projects/{{project_guid}}
      inputParameters:
      - name: project_guid
        in: path
      operations:
      - name: get-model
        method: GET
Open in Framework → View in Fleet → sparx-enterprise-architect-model-lookup.yml

Reconciles media rights revenue by pulling contract terms from Salesforce, actual payments from Oracle Cloud, and broadcasting data from Teradata, then generates a discrepancy report in SharePoint.

naftiko: '0.5'
info:
  label: Media Rights Revenue Reconciliation
  description: Reconciles media rights revenue by pulling contract terms from Salesforce, actual payments from Oracle Cloud, and broadcasting data from Teradata, then generates a discrepancy report in SharePoint.
  tags:
  - finance
  - media-rights
  - salesforce
  - oracle-cloud
  - teradata
  - sharepoint
  - reconciliation
capability:
  exposes:
  - type: mcp
    namespace: media-finance
    port: 8080
    tools:
    - name: reconcile-media-revenue
      description: Given a media deal ID and fiscal quarter, reconcile contract terms with actual payments and viewership data, then publish a discrepancy report.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: The media rights deal identifier.
      - name: fiscal_quarter
        in: body
        type: string
        description: The fiscal quarter (e.g., 2025-Q3).
      steps:
      - name: get-contract
        type: call
        call: salesforce.get-media-deal
        with:
          deal_id: '{{deal_id}}'
      - name: get-payments
        type: call
        call: oracle.get-payments
        with:
          deal_id: '{{deal_id}}'
          quarter: '{{fiscal_quarter}}'
      - name: get-broadcast-data
        type: call
        call: teradata.query-broadcast-revenue
        with:
          deal_id: '{{deal_id}}'
          quarter: '{{fiscal_quarter}}'
      - name: publish-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: finance_site
          folder_path: MediaRightsReconciliation/{{fiscal_quarter}}
          file_name: reconciliation_{{deal_id}}.json
          content: 'Contract: {{get-contract.amount}} | Paid: {{get-payments.total_paid}} | Broadcast Revenue: {{get-broadcast-data.total_revenue}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: media-deals
      path: /sobjects/Media_Rights_Deal__c/{{deal_id}}
      inputParameters:
      - name: deal_id
        in: path
      operations:
      - name: get-media-deal
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://nfl.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: payments
      path: /receivablesInvoices
      operations:
      - name: get-payments
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://nfl-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: broadcast-revenue
      path: /query
      operations:
      - name: query-broadcast-revenue
        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 → media-rights-revenue-reconciliation.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 8
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-8
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalfootballleague-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 → national-football-league-workflow-8.yml

Extracts a financial report from SAP BW for a specified period and cost center, returning revenue, expenses, and net income figures.

naftiko: '0.5'
info:
  label: SAP BW Financial Report Extraction
  description: Extracts a financial report from SAP BW for a specified period and cost center, returning revenue, expenses, and net income figures.
  tags:
  - finance
  - sap-bw
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: extract-financial-report
      description: Run a SAP BW financial report query for a given period and cost center.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: The fiscal period (e.g., 2025-Q1).
      - name: cost_center
        in: body
        type: string
        description: The SAP cost center code.
      call: sapbw.run-report
      with:
        period: '{{fiscal_period}}'
        cost_center: '{{cost_center}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.data.revenue
      - name: expenses
        type: string
        mapping: $.data.expenses
      - name: net_income
        type: string
        mapping: $.data.net_income
  consumes:
  - type: http
    namespace: sapbw
    baseUri: https://nfl-bw.sap.com/sap/opu/odata/sap
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: reports
      path: /FINANCIAL_REPORT_SRV/Reports
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → sap-bw-financial-report-extraction.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 13
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-13
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-13.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 4
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-4.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 5
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-5.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 12
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-12
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: football.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-12.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 9
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-9
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-9.yml

When a player contract approaches expiration, pulls contract data from PeopleSoft, generates a renewal proposal in SharePoint, sends it for legal review in ServiceNow, and notifies the GM via Microsoft Teams.

naftiko: '0.5'
info:
  label: Player Contract Renewal Pipeline
  description: When a player contract approaches expiration, pulls contract data from PeopleSoft, generates a renewal proposal in SharePoint, sends it for legal review in ServiceNow, and notifies the GM via Microsoft Teams.
  tags:
  - player-management
  - contracts
  - peoplesoft
  - sharepoint
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: player-contracts
    port: 8080
    tools:
    - name: initiate-contract-renewal
      description: Given a player contract ID and player name, pull current terms from PeopleSoft, generate a renewal document in SharePoint, submit for legal review, and notify the GM.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: The PeopleSoft contract identifier.
      - name: player_name
        in: body
        type: string
        description: The player's full name.
      - name: team_name
        in: body
        type: string
        description: The NFL team name.
      steps:
      - name: get-contract
        type: call
        call: peoplesoft.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: create-proposal
        type: call
        call: sharepoint.upload-file
        with:
          site_id: player_contracts_site
          folder_path: Renewals/{{team_name}}/{{player_name}}
          file_name: renewal_proposal_{{contract_id}}.docx
          content: 'Contract renewal proposal for {{player_name}} | Current value: {{get-contract.total_value}} | Expiry: {{get-contract.end_date}}'
      - name: legal-review
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Legal Review: {{player_name}} Contract Renewal'
          category: legal_review
          description: Review renewal proposal at {{create-proposal.url}} for {{player_name}} ({{team_name}})
      - name: notify-gm
        type: call
        call: msteams.send-message
        with:
          channel_id: gm-notifications
          text: 'Contract renewal initiated for {{player_name}} ({{team_name}}). Current value: {{get-contract.total_value}}. Legal review ticket: {{legal-review.number}}. Proposal: {{create-proposal.url}}'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://nfl-hr.peoplesoft.com/api/v1
    authentication:
      type: bearer
      token: $secrets.peoplesoft_token
    resources:
    - name: contracts
      path: /contracts/{{contract_id}}
      inputParameters:
      - name: contract_id
        in: path
      operations:
      - name: get-contract
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: servicenow
    baseUri: https://nfl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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 → player-contract-renewal-pipeline.yml

Checks the health status of Citrix NetScaler load balancer virtual servers for NFL web properties, returning state, active connections, and throughput.

naftiko: '0.5'
info:
  label: Citrix NetScaler Load Balancer Health
  description: Checks the health status of Citrix NetScaler load balancer virtual servers for NFL web properties, returning state, active connections, and throughput.
  tags:
  - infrastructure
  - citrix-netscaler
  - load-balancing
capability:
  exposes:
  - type: mcp
    namespace: load-balancing
    port: 8080
    tools:
    - name: get-lb-health
      description: Check the health of a Citrix NetScaler virtual server by name.
      inputParameters:
      - name: vserver_name
        in: body
        type: string
        description: The NetScaler virtual server name.
      call: netscaler.get-vserver
      with:
        vserver_name: '{{vserver_name}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.lbvserver[0].curstate
      - name: active_connections
        type: string
        mapping: $.lbvserver[0].actsvcs
      - name: throughput
        type: string
        mapping: $.lbvserver[0].tothits
  consumes:
  - type: http
    namespace: netscaler
    baseUri: https://nfl-ns.citrix.com/nitro/v1
    authentication:
      type: basic
      username: $secrets.netscaler_user
      password: $secrets.netscaler_password
    resources:
    - name: vservers
      path: /config/lbvserver/{{vserver_name}}
      inputParameters:
      - name: vserver_name
        in: path
      operations:
      - name: get-vserver
        method: GET
Open in Framework → View in Fleet → citrix-netscaler-load-balancer-health.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 10
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-10
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-10.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 7
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-7.yml

Retrieves the current status of an NFL GitHub repository including open pull requests count, recent commits, and active branch count.

naftiko: '0.5'
info:
  label: GitHub Repository Status
  description: Retrieves the current status of an NFL GitHub repository including open pull requests count, recent commits, and active branch count.
  tags:
  - development
  - github
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-repo-status
      description: Look up GitHub repository status by org and repo name. Returns open PRs, recent commits, and branches.
      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/nfl/{{repo}}
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-status.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 6
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-6.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 11
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-11
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-11.yml

When a sponsorship milestone is reached, updates the deal status in Salesforce, triggers a creative brief in Adobe Creative Cloud, and notifies the partnership team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Sponsorship Activation Orchestrator
  description: When a sponsorship milestone is reached, updates the deal status in Salesforce, triggers a creative brief in Adobe Creative Cloud, and notifies the partnership team in Microsoft Teams.
  tags:
  - sponsorship
  - salesforce
  - adobe-creative-cloud
  - microsoft-teams
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: sponsorship-activation
    port: 8080
    tools:
    - name: activate-sponsorship-milestone
      description: Given a deal ID and milestone name, update Salesforce status, create a creative brief in Adobe Creative Cloud, and alert the partnership team.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: The Salesforce opportunity ID.
      - name: milestone_name
        in: body
        type: string
        description: The activation milestone (e.g., Kickoff, Halftime, Digital Launch).
      - name: partner_name
        in: body
        type: string
        description: The sponsorship partner brand name.
      steps:
      - name: update-deal
        type: call
        call: salesforce.update-opportunity
        with:
          deal_id: '{{deal_id}}'
          stage: Activation - {{milestone_name}}
      - name: create-brief
        type: call
        call: adobe-cc.create-project
        with:
          project_name: '{{partner_name}} - {{milestone_name}}'
          template: sponsorship_activation
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: partnerships
          text: 'Sponsorship Activation: {{partner_name}} milestone ''{{milestone_name}}'' activated. Salesforce updated. Creative brief: {{create-brief.project_url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{deal_id}}
      inputParameters:
      - name: deal_id
        in: path
      operations:
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: adobe-cc
    baseUri: https://cc-api-storage.adobe.io/v1
    authentication:
      type: bearer
      token: $secrets.adobe_cc_token
    resources:
    - name: projects
      path: /projects
      operations:
      - name: create-project
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → sponsorship-activation-orchestrator.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 15
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-15
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#football'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-15.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 29
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-29
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-29.yml

Retrieves campaign performance metrics from Google Analytics for a specific NFL marketing property, returning impressions, clicks, and conversion rates.

naftiko: '0.5'
info:
  label: Google Analytics Campaign Metrics
  description: Retrieves campaign performance metrics from Google Analytics for a specific NFL marketing property, returning impressions, clicks, and conversion rates.
  tags:
  - marketing
  - google-analytics
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Fetch campaign performance metrics from Google Analytics by property ID and date range.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The Google Analytics property identifier.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: google-analytics.run-report
      with:
        property_id: '{{property_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.rows[0].metricValues[0].value
      - name: clicks
        type: string
        mapping: $.rows[0].metricValues[1].value
      - name: conversions
        type: string
        mapping: $.rows[0].metricValues[2].value
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-campaign-metrics.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 2
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-2.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 3
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-3.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 28
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-28
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: FOOTBA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-28.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 14
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-14
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-14.yml

Retrieves the broadcast schedule for a given NFL week from Salesforce, including network assignments, kickoff times, and broadcast teams.

naftiko: '0.5'
info:
  label: Game Broadcast Schedule Lookup
  description: Retrieves the broadcast schedule for a given NFL week from Salesforce, including network assignments, kickoff times, and broadcast teams.
  tags:
  - broadcast
  - scheduling
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: broadcast-ops
    port: 8080
    tools:
    - name: get-broadcast-schedule
      description: Look up broadcast schedule for a given NFL week number and season. Returns game matchups, networks, and kickoff times.
      inputParameters:
      - name: season_year
        in: body
        type: string
        description: The NFL season year (e.g., 2025).
      - name: week_number
        in: body
        type: string
        description: The NFL week number (1-18, or playoff round).
      call: salesforce.get-broadcast-schedule
      with:
        season: '{{season_year}}'
        week: '{{week_number}}'
      outputParameters:
      - name: games
        type: array
        mapping: $.records
      - name: total_games
        type: string
        mapping: $.totalSize
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: broadcast-schedules
      path: /query/?q=SELECT+Id,Game__c,Network__c,Kickoff__c+FROM+Broadcast_Schedule__c+WHERE+Season__c='{{season}}'+AND+Week__c='{{week}}'
      inputParameters:
      - name: season
        in: query
      - name: week
        in: query
      operations:
      - name: get-broadcast-schedule
        method: GET
Open in Framework → View in Fleet → game-broadcast-schedule-lookup.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 16
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-16
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: FOOTBA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-16.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 1
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-1.yml

Retrieves real-time market data from Bloomberg Intelligence for NFL-related financial instruments, returning current price, volume, and change percentage.

naftiko: '0.5'
info:
  label: Bloomberg Market Data Lookup
  description: Retrieves real-time market data from Bloomberg Intelligence for NFL-related financial instruments, returning current price, volume, and change percentage.
  tags:
  - finance
  - bloomberg-intelligence
  - market-data
capability:
  exposes:
  - type: mcp
    namespace: market-data
    port: 8080
    tools:
    - name: get-market-data
      description: Look up Bloomberg market data for a financial instrument by ticker symbol.
      inputParameters:
      - name: ticker
        in: body
        type: string
        description: The Bloomberg ticker symbol.
      call: bloomberg.get-quote
      with:
        ticker: '{{ticker}}'
      outputParameters:
      - name: price
        type: string
        mapping: $.data.price
      - name: volume
        type: string
        mapping: $.data.volume
      - name: change_pct
        type: string
        mapping: $.data.changePercent
  consumes:
  - type: http
    namespace: bloomberg
    baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
    authentication:
      type: bearer
      token: $secrets.bloomberg_token
    resources:
    - name: quotes
      path: /{{ticker}}
      inputParameters:
      - name: ticker
        in: path
      operations:
      - name: get-quote
        method: GET
Open in Framework → View in Fleet → bloomberg-market-data-lookup.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 17
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-17
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-17.yml

Pulls engagement metrics from Google Analytics for NFL social campaigns and compiles a weekly summary report stored in SharePoint.

naftiko: '0.5'
info:
  label: Social Media Engagement Reporter
  description: Pulls engagement metrics from Google Analytics for NFL social campaigns and compiles a weekly summary report stored in SharePoint.
  tags:
  - marketing
  - social-media
  - google-analytics
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: generate-social-report
      description: Given a campaign ID and date range, pull Google Analytics engagement data and store the summary report in SharePoint.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The marketing campaign identifier.
      - 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: fetch-engagement
        type: call
        call: google-analytics.get-report
        with:
          campaign_id: '{{campaign_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: nfl_marketing_site
          folder_path: SocialReports/{{campaign_id}}
          file_name: engagement_{{start_date}}_{{end_date}}.json
          content: '{{fetch-engagement}}'
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: 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 → social-media-engagement-reporter.yml

Runs a viewership analytics query against Teradata for a specified game and returns total viewers, average watch time, and peak concurrent viewers.

naftiko: '0.5'
info:
  label: Teradata Viewership Analytics Query
  description: Runs a viewership analytics query against Teradata for a specified game and returns total viewers, average watch time, and peak concurrent viewers.
  tags:
  - analytics
  - teradata
  - viewership
  - broadcast
capability:
  exposes:
  - type: mcp
    namespace: viewership-analytics
    port: 8080
    tools:
    - name: query-viewership
      description: Query Teradata for viewership analytics by game ID. Returns total viewers, average watch time, and peak concurrent.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: The unique game identifier.
      call: teradata.query-game-viewership
      with:
        game_id: '{{game_id}}'
      outputParameters:
      - name: total_viewers
        type: string
        mapping: $.results[0].total_viewers
      - name: avg_watch_time
        type: string
        mapping: $.results[0].avg_watch_minutes
      - name: peak_concurrent
        type: string
        mapping: $.results[0].peak_concurrent
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://nfl-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-game-viewership
        method: POST
Open in Framework → View in Fleet → teradata-viewership-analytics-query.yml

Retrieves NFL merchandise inventory levels from BigCommerce for a given product SKU, returning stock quantity, price, and availability status.

naftiko: '0.5'
info:
  label: BigCommerce Merchandise Store Inventory
  description: Retrieves NFL merchandise inventory levels from BigCommerce for a given product SKU, returning stock quantity, price, and availability status.
  tags:
  - merchandise
  - bigcommerce
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: merchandise
    port: 8080
    tools:
    - name: get-product-inventory
      description: Look up BigCommerce product inventory by SKU.
      inputParameters:
      - name: product_sku
        in: body
        type: string
        description: The merchandise product SKU.
      call: bigcommerce.get-product
      with:
        sku: '{{product_sku}}'
      outputParameters:
      - name: product_name
        type: string
        mapping: $.data.name
      - name: inventory_level
        type: string
        mapping: $.data.inventory_level
      - name: price
        type: string
        mapping: $.data.price
      - name: availability
        type: string
        mapping: $.data.availability
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    inputParameters:
    - name: store_hash
      in: path
      value: $secrets.bigcommerce_store_hash
    resources:
    - name: products
      path: /catalog/products?sku={{sku}}
      inputParameters:
      - name: sku
        in: query
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → bigcommerce-merchandise-store-inventory.yml

On game day, fetches real-time highlights from the content management system, publishes to YouTube, shares across Instagram and Twitter, and logs distribution status in SharePoint.

naftiko: '0.5'
info:
  label: Game Day Content Distribution Pipeline
  description: On game day, fetches real-time highlights from the content management system, publishes to YouTube, shares across Instagram and Twitter, and logs distribution status in SharePoint.
  tags:
  - content-distribution
  - youtube
  - instagram
  - twitter
  - sharepoint
  - media
capability:
  exposes:
  - type: mcp
    namespace: content-distribution
    port: 8080
    tools:
    - name: distribute-game-highlight
      description: Given a content asset ID and game details, publish the highlight to YouTube, share on social platforms, and log the distribution in SharePoint.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The content asset identifier.
      - name: game_title
        in: body
        type: string
        description: Game matchup description (e.g., 'Chiefs vs Eagles').
      - name: highlight_type
        in: body
        type: string
        description: Type of highlight (touchdown, interception, big-play).
      steps:
      - name: publish-youtube
        type: call
        call: youtube.upload-video
        with:
          asset_id: '{{asset_id}}'
          title: 'NFL Highlight: {{game_title}} - {{highlight_type}}'
          description: Official NFL highlight from {{game_title}}
      - name: share-instagram
        type: call
        call: instagram.create-post
        with:
          media_url: '{{publish-youtube.thumbnail_url}}'
          caption: '{{highlight_type}} from {{game_title}}! Watch full highlight on NFL YouTube.'
      - name: share-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: '{{highlight_type}} from {{game_title}}! Watch: {{publish-youtube.video_url}}'
      - name: log-distribution
        type: call
        call: sharepoint.create-item
        with:
          site_id: content_ops_site
          list_name: Distribution_Log
          fields:
            asset_id: '{{asset_id}}'
            youtube_url: '{{publish-youtube.video_url}}'
            status: distributed
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?part=snippet,status
      operations:
      - name: upload-video
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      inputParameters:
      - name: ig_user_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: list-items
      path: /{{site_id}}/lists/{{list_name}}/items
      inputParameters:
      - name: site_id
        in: path
      - name: list_name
        in: path
      operations:
      - name: create-item
        method: POST
Open in Framework → View in Fleet → game-day-content-distribution-pipeline.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 1
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-1
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-1.yml

Creates a Microsoft Teams meeting for a given group of attendees, sets agenda in a SharePoint document, and sends calendar invites.

naftiko: '0.5'
info:
  label: Microsoft Teams Meeting Scheduler
  description: Creates a Microsoft Teams meeting for a given group of attendees, sets agenda in a SharePoint document, and sends calendar invites.
  tags:
  - collaboration
  - microsoft-teams
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: schedule-team-meeting
      description: Given attendee list, subject, and date, create a Teams meeting and prepare a SharePoint agenda document.
      inputParameters:
      - name: subject
        in: body
        type: string
        description: The meeting subject.
      - name: start_time
        in: body
        type: string
        description: Meeting start time in ISO 8601 format.
      - name: attendees
        in: body
        type: string
        description: Comma-separated list of attendee email addresses.
      steps:
      - name: create-meeting
        type: call
        call: msteams.create-meeting
        with:
          subject: '{{subject}}'
          start_time: '{{start_time}}'
          attendees: '{{attendees}}'
      - name: create-agenda
        type: call
        call: sharepoint.upload-file
        with:
          site_id: meetings_site
          folder_path: Agendas/{{subject}}
          file_name: agenda_{{start_time}}.docx
          content: 'Meeting Agenda for {{subject}} | Join: {{create-meeting.join_url}}'
  consumes:
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: online-meetings
      path: /me/onlineMeetings
      operations:
      - name: create-meeting
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: 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 → microsoft-teams-meeting-scheduler.yml

Queries LinkedIn job postings and ZoomInfo for candidate leads, then creates candidate records in Workday for the NFL talent acquisition team.

naftiko: '0.5'
info:
  label: LinkedIn Recruiting Pipeline Tracker
  description: Queries LinkedIn job postings and ZoomInfo for candidate leads, then creates candidate records in Workday for the NFL talent acquisition team.
  tags:
  - recruiting
  - linkedin
  - zoominfo
  - workday
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: track-candidate-pipeline
      description: Given a job requisition ID, pull LinkedIn applicant data, enrich with ZoomInfo, and create candidate records in Workday.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition identifier.
      - name: job_title
        in: body
        type: string
        description: The job title for the open position.
      steps:
      - name: fetch-applicants
        type: call
        call: linkedin.get-applicants
        with:
          job_id: '{{requisition_id}}'
      - name: enrich-candidates
        type: call
        call: zoominfo.enrich-contacts
        with:
          emails: '{{fetch-applicants.email_list}}'
      - name: create-candidates
        type: call
        call: workday.create-candidate
        with:
          requisition_id: '{{requisition_id}}'
          candidates: '{{enrich-candidates.enriched_profiles}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: applicants
      path: /simpleJobPostings/{{job_id}}/applicants
      inputParameters:
      - name: job_id
        in: path
      operations:
      - name: get-applicants
        method: GET
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/v2
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contacts
      path: /contacts/enrich
      operations:
      - name: enrich-contacts
        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: candidates
      path: /recruiting/candidates
      operations:
      - name: create-candidate
        method: POST
Open in Framework → View in Fleet → linkedin-recruiting-pipeline-tracker.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 32
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-32
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalfootballleague-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 → national-football-league-workflow-32.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 26
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-26
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-26.yml

Queries Dynatrace for application health status of NFL digital properties, returning availability, response time, and failure rate metrics.

naftiko: '0.5'
info:
  label: Dynatrace Application Health Check
  description: Queries Dynatrace for application health status of NFL digital properties, returning availability, response time, and failure rate metrics.
  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 application 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://nfl.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 football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 27
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-27
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#football'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-27.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 33
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-33
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-33.yml

Retrieves ad campaign performance metrics from the Meta/Facebook Marketing API, returning impressions, reach, spend, and cost-per-click.

naftiko: '0.5'
info:
  label: Facebook Campaign Performance Lookup
  description: Retrieves ad campaign performance metrics from the Meta/Facebook Marketing API, returning impressions, reach, spend, and cost-per-click.
  tags:
  - marketing
  - facebook
  - meta
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: social-advertising
    port: 8080
    tools:
    - name: get-fb-campaign-performance
      description: Look up Facebook ad campaign metrics by campaign ID.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Facebook campaign identifier.
      call: facebook.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.data[0].impressions
      - name: reach
        type: string
        mapping: $.data[0].reach
      - name: spend
        type: string
        mapping: $.data[0].spend
      - name: cpc
        type: string
        mapping: $.data[0].cpc
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: campaign-insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-insights
        method: GET
Open in Framework → View in Fleet → facebook-campaign-performance-lookup.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 2
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-2
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-2.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 19
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-19
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: football
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-19.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 25
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-25
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-25.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 31
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-31
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: football
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-31.yml

Retrieves point-of-sale transaction totals from Square for a given venue and date range, returning total sales, transaction count, and average ticket size.

naftiko: '0.5'
info:
  label: Square Point-of-Sale Revenue Lookup
  description: Retrieves point-of-sale transaction totals from Square for a given venue and date range, returning total sales, transaction count, and average ticket size.
  tags:
  - revenue
  - square
  - point-of-sale
  - venue-operations
capability:
  exposes:
  - type: mcp
    namespace: pos-revenue
    port: 8080
    tools:
    - name: get-pos-revenue
      description: Retrieve Square POS revenue data for a venue and date range.
      inputParameters:
      - name: location_id
        in: body
        type: string
        description: The Square location identifier for the venue.
      - 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: square.list-payments
      with:
        location_id: '{{location_id}}'
        begin_time: '{{start_date}}'
        end_time: '{{end_date}}'
      outputParameters:
      - name: total_sales
        type: string
        mapping: $.total_money.amount
      - name: transaction_count
        type: string
        mapping: $.total_count
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: list-payments
        method: POST
Open in Framework → View in Fleet → square-point-of-sale-revenue-lookup.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 30
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-30
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: FOOT
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-30.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 24
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-24
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: football.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-24.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 18
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-18
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: FOOT
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-18.yml

On submission of an injury update, records the status in Salesforce, generates the official injury report, and posts a summary to the NFL media distribution list via Microsoft Teams.

naftiko: '0.5'
info:
  label: Player Injury Report Publisher
  description: On submission of an injury update, records the status in Salesforce, generates the official injury report, and posts a summary to the NFL media distribution list via Microsoft Teams.
  tags:
  - player-analytics
  - injury-report
  - salesforce
  - microsoft-teams
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: player-ops
    port: 8080
    tools:
    - name: publish-injury-report
      description: Given a player ID, injury status, and game week, update the injury record in Salesforce and notify the media team via Microsoft Teams.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The NFL player identifier.
      - name: injury_status
        in: body
        type: string
        description: Injury designation (Questionable, Doubtful, Out, IR).
      - name: week_number
        in: body
        type: string
        description: The NFL week number for the report.
      steps:
      - name: update-injury-record
        type: call
        call: salesforce.update-injury
        with:
          player_id: '{{player_id}}'
          status: '{{injury_status}}'
          week: '{{week_number}}'
      - name: notify-media
        type: call
        call: msteams.send-message
        with:
          channel_id: media-distribution
          text: 'Injury Report Update Week {{week_number}}: Player {{player_id}} designated as {{injury_status}}. Record: {{update-injury-record.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: injury-records
      path: /sobjects/Injury_Report__c
      operations:
      - name: update-injury
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → player-injury-report-publisher.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 3
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-3
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#football'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-3.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 7
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-7
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: football
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-7.yml

Verifies broadcast rights compliance by cross-referencing the Salesforce media agreement with Teradata viewership data and flags violations to the legal team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Broadcast Rights Compliance Checker
  description: Verifies broadcast rights compliance by cross-referencing the Salesforce media agreement with Teradata viewership data and flags violations to the legal team in Microsoft Teams.
  tags:
  - broadcast
  - compliance
  - salesforce
  - teradata
  - microsoft-teams
  - legal
capability:
  exposes:
  - type: mcp
    namespace: broadcast-compliance
    port: 8080
    tools:
    - name: check-broadcast-compliance
      description: Given a media agreement ID and broadcast date, verify viewership data against contract terms and alert legal if violations exist.
      inputParameters:
      - name: agreement_id
        in: body
        type: string
        description: The Salesforce media agreement identifier.
      - name: broadcast_date
        in: body
        type: string
        description: The broadcast date in YYYY-MM-DD format.
      - name: network
        in: body
        type: string
        description: The broadcast network name.
      steps:
      - name: get-agreement
        type: call
        call: salesforce.get-agreement
        with:
          agreement_id: '{{agreement_id}}'
      - name: get-viewership
        type: call
        call: teradata.query-viewership
        with:
          network: '{{network}}'
          date: '{{broadcast_date}}'
      - name: notify-legal
        type: call
        call: msteams.send-message
        with:
          channel_id: legal-compliance
          text: 'Broadcast Compliance Report for {{network}} on {{broadcast_date}}: Agreement {{agreement_id}} terms verified. Viewership: {{get-viewership.total_viewers}}. Territory compliance: {{get-viewership.territory_status}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: agreements
      path: /sobjects/Media_Agreement__c/{{agreement_id}}
      inputParameters:
      - name: agreement_id
        in: path
      operations:
      - name: get-agreement
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://nfl-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: viewership
      path: /query
      operations:
      - name: query-viewership
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → broadcast-rights-compliance-checker.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 20
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-20
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://nationalfootballleague-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 → national-football-league-workflow-20.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 34
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-34
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-34.yml

Queries Cloudflare analytics for NFL digital 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 NFL digital properties to return bandwidth usage, cache hit ratio, and threat event counts.
  tags:
  - cdn
  - cloudflare
  - security
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

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 35
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-35
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-35.yml

Retrieves an open fan support ticket from Zendesk by ticket ID, returning subject, status, priority, and the most recent comment.

naftiko: '0.5'
info:
  label: Zendesk Fan Support Ticket Lookup
  description: Retrieves an open fan support ticket from Zendesk by ticket ID, returning subject, status, priority, and the most recent comment.
  tags:
  - fan-support
  - zendesk
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: fan-support
    port: 8080
    tools:
    - name: get-fan-ticket
      description: Look up a Zendesk support ticket by ID. Returns subject, status, priority, and latest comment.
      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
      - name: latest_comment
        type: string
        mapping: $.ticket.latest_comment.body
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nfl.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-fan-support-ticket-lookup.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 21
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-21
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-21.yml

Pulls ticket sales totals from Oracle Cloud for a given game event and returns revenue breakdown by ticket tier, including general admission, club, and suite categories.

naftiko: '0.5'
info:
  label: Ticketing Revenue Dashboard
  description: Pulls ticket sales totals from Oracle Cloud for a given game event and returns revenue breakdown by ticket tier, including general admission, club, and suite categories.
  tags:
  - ticketing
  - revenue
  - oracle-cloud
  - finance
capability:
  exposes:
  - type: mcp
    namespace: ticketing
    port: 8080
    tools:
    - name: get-ticket-revenue
      description: Retrieve ticket revenue breakdown for a specific game event ID from Oracle Cloud financials.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The unique game event identifier.
      call: oracle.get-ticket-revenue
      with:
        event_id: '{{event_id}}'
      outputParameters:
      - name: total_revenue
        type: string
        mapping: $.TotalRevenue
      - name: tiers
        type: array
        mapping: $.RevenueTiers
      - name: attendance
        type: string
        mapping: $.TotalAttendance
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nfl.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: ticket-revenue
      path: /ticketRevenue/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-ticket-revenue
        method: GET
Open in Framework → View in Fleet → ticketing-revenue-dashboard.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 6
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-6
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: FOOT
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-6.yml

Triggers a Power Query dataset refresh in Power BI for NFL reporting dashboards and returns the refresh status.

naftiko: '0.5'
info:
  label: Power Query Data Refresh Trigger
  description: Triggers a Power Query dataset refresh in Power BI for NFL reporting dashboards and returns the refresh status.
  tags:
  - analytics
  - power-query
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: reporting
    port: 8080
    tools:
    - name: refresh-power-query
      description: Trigger a dataset refresh in Power BI and check status.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset identifier.
      call: powerbi.refresh-dataset
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: request_id
        type: string
        mapping: $.requestId
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → power-query-data-refresh-trigger.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 4
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-4
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: FOOTBA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-4.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 23
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-23
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-23.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 8
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-8.yml

Retrieves operational data for National Football League football workflows.

naftiko: '0.5'
info:
  label: National Football League Data Lookup 9
  description: Retrieves operational data for National Football League football workflows.
  tags:
  - football
  - operations
capability:
  exposes:
  - type: mcp
    namespace: nationalfootballleague-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for National Football League football workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: nationalfootballleague-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-data
    baseUri: https://api.nfl.com/data/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-data-lookup-9.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 22
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-22
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://nationalfootballleague.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 → national-football-league-workflow-22.yml

When a venue incident occurs on game day, creates a ServiceNow incident ticket, logs the event in Datadog for monitoring, and alerts the operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Venue Operations Incident Logger
  description: When a venue incident occurs on game day, creates a ServiceNow incident ticket, logs the event in Datadog for monitoring, and alerts the operations team via Microsoft Teams.
  tags:
  - venue-operations
  - servicenow
  - datadog
  - microsoft-teams
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: venue-ops
    port: 8080
    tools:
    - name: log-venue-incident
      description: Given a venue name, incident type, and description, create a ServiceNow ticket, log to Datadog, and notify the ops team in Microsoft Teams.
      inputParameters:
      - name: venue_name
        in: body
        type: string
        description: The name of the NFL venue.
      - name: incident_type
        in: body
        type: string
        description: Category of incident (security, medical, facility, weather).
      - name: description
        in: body
        type: string
        description: Detailed description of the incident.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Venue Incident: {{venue_name}} - {{incident_type}}'
          category: venue_operations
          description: '{{description}}'
          urgency: '2'
      - name: log-event
        type: call
        call: datadog.post-event
        with:
          title: 'Venue Incident: {{venue_name}}'
          text: '{{incident_type}}: {{description}} | Ticket: {{create-ticket.number}}'
          tags: venue:{{venue_name}},type:{{incident_type}}
      - name: alert-ops
        type: call
        call: msteams.send-message
        with:
          channel_id: venue-ops-alerts
          text: 'VENUE ALERT at {{venue_name}}: {{incident_type}}. ServiceNow ticket {{create-ticket.number}} created. Details: {{description}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://nfl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: post-event
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → venue-operations-incident-logger.yml

Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.

naftiko: '0.5'
info:
  label: National Football League Workflow 5
  description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
  tags:
  - football
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: football
    port: 8080
    tools:
    - name: national-football-league-workflow-5
      description: Orchestrates football operations including data retrieval, processing, and automated notification for National Football League.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: nationalfootballleague-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: nationalfootballleague-ops
    baseUri: https://api.nfl.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.nfl_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 → national-football-league-workflow-5.yml

Pulls season ticket holder data from Salesforce, analyzes renewal likelihood using TensorFlow predictions, and generates a retention campaign brief in SharePoint for the marketing team.

naftiko: '0.5'
info:
  label: Season Ticket Holder Retention Analyzer
  description: Pulls season ticket holder data from Salesforce, analyzes renewal likelihood using TensorFlow predictions, and generates a retention campaign brief in SharePoint for the marketing team.
  tags:
  - ticketing
  - retention
  - salesforce
  - tensorflow
  - sharepoint
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: ticket-retention
    port: 8080
    tools:
    - name: analyze-ticket-retention
      description: Given a team market and season year, pull ticket holder data, run retention prediction model, and generate a campaign brief.
      inputParameters:
      - name: team_market
        in: body
        type: string
        description: The NFL team market (e.g., Kansas City, Philadelphia).
      - name: season_year
        in: body
        type: string
        description: The season year for analysis.
      steps:
      - name: fetch-holders
        type: call
        call: salesforce.query-ticket-holders
        with:
          market: '{{team_market}}'
          season: '{{season_year}}'
      - name: predict-retention
        type: call
        call: tensorflow.predict-retention
        with:
          holder_data: '{{fetch-holders.records}}'
      - name: generate-brief
        type: call
        call: sharepoint.upload-file
        with:
          site_id: marketing_site
          folder_path: RetentionCampaigns/{{team_market}}/{{season_year}}
          file_name: retention_brief.json
          content: '{{predict-retention.results}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: ticket-holders
      path: /query/?q=SELECT+Id,Name,Renewal_Score__c+FROM+Season_Ticket_Holder__c+WHERE+Market__c='{{market}}'+AND+Season__c='{{season}}'
      inputParameters:
      - name: market
        in: query
      - name: season
        in: query
      operations:
      - name: query-ticket-holders
        method: GET
  - type: http
    namespace: tensorflow
    baseUri: https://nfl-ml.amazonaws.com/v1
    authentication:
      type: bearer
      token: $secrets.tensorflow_serving_token
    resources:
    - name: models
      path: /models/ticket_retention:predict
      operations:
      - name: predict-retention
        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 → season-ticket-holder-retention-analyzer.yml

Retrieves game day attendance dashboard data from QlikView for a given venue and date, returning total attendance, capacity percentage, and suite utilization.

naftiko: '0.5'
info:
  label: QlikView Attendance Dashboard Lookup
  description: Retrieves game day attendance dashboard data from QlikView for a given venue and date, returning total attendance, capacity percentage, and suite utilization.
  tags:
  - analytics
  - qlikview
  - attendance
capability:
  exposes:
  - type: mcp
    namespace: attendance-analytics
    port: 8080
    tools:
    - name: get-attendance-dashboard
      description: Retrieve QlikView attendance dashboard data for a specific venue and game date.
      inputParameters:
      - name: venue_id
        in: body
        type: string
        description: The venue identifier.
      - name: game_date
        in: body
        type: string
        description: The game date in YYYY-MM-DD format.
      call: qlikview.get-attendance
      with:
        venue_id: '{{venue_id}}'
        date: '{{game_date}}'
      outputParameters:
      - name: total_attendance
        type: string
        mapping: $.data.total_attendance
      - name: capacity_pct
        type: string
        mapping: $.data.capacity_percentage
      - name: suite_utilization
        type: string
        mapping: $.data.suite_utilization
  consumes:
  - type: http
    namespace: qlikview
    baseUri: https://nfl-analytics.qlik.com/api/v1
    authentication:
      type: bearer
      token: $secrets.qlikview_token
    resources:
    - name: dashboards
      path: /apps/attendance/data
      operations:
      - name: get-attendance
        method: POST
Open in Framework → View in Fleet → qlikview-attendance-dashboard-lookup.yml

Retrieves a Salesforce lead record by ID and returns the current lead status, source, rating, and assigned owner.

naftiko: '0.5'
info:
  label: Salesforce Lead Status Lookup
  description: Retrieves a Salesforce lead record by ID and returns the current lead status, source, rating, and assigned owner.
  tags:
  - sales
  - salesforce
  - crm
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: get-lead-status
      description: Look up a Salesforce lead by ID. Returns status, source, rating, and owner.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead ID.
      call: salesforce.get-lead
      with:
        lead_id: '{{lead_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: source
        type: string
        mapping: $.LeadSource
      - name: rating
        type: string
        mapping: $.Rating
      - name: owner
        type: string
        mapping: $.Owner.Name
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nfl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
Open in Framework → View in Fleet → salesforce-lead-status-lookup.yml

Retrieves a player's season performance statistics from Elasticsearch, including passing, rushing, and receiving metrics for the current season.

naftiko: '0.5'
info:
  label: Player Performance Analytics Snapshot
  description: Retrieves a player's season performance statistics from Elasticsearch, including passing, rushing, and receiving metrics for the current season.
  tags:
  - player-analytics
  - statistics
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: player-analytics
    port: 8080
    tools:
    - name: get-player-stats
      description: Look up a player's season statistics by player ID and season year from the analytics index.
      inputParameters:
      - name: player_id
        in: body
        type: string
        description: The NFL player identifier.
      - name: season_year
        in: body
        type: string
        description: The season year (e.g., 2025).
      call: elasticsearch.search-player-stats
      with:
        player_id: '{{player_id}}'
        season: '{{season_year}}'
      outputParameters:
      - name: passing_yards
        type: string
        mapping: $.hits.hits[0]._source.passing_yards
      - name: rushing_yards
        type: string
        mapping: $.hits.hits[0]._source.rushing_yards
      - name: touchdowns
        type: string
        mapping: $.hits.hits[0]._source.touchdowns
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://nfl-analytics.es.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: player-stats
      path: /player-stats/_search
      operations:
      - name: search-player-stats
        method: POST
Open in Framework → View in Fleet → player-performance-analytics-snapshot.yml

When a ticket purchase is confirmed, validates the order in Oracle Cloud, generates a digital ticket via the ticketing API, sends the e-ticket to the fan via email, and logs the fulfillment in ServiceNow.

naftiko: '0.5'
info:
  label: Game Day Ticketing Fulfillment Orchestrator
  description: When a ticket purchase is confirmed, validates the order in Oracle Cloud, generates a digital ticket via the ticketing API, sends the e-ticket to the fan via email, and logs the fulfillment in ServiceNow.
  tags:
  - ticketing
  - fulfillment
  - oracle-cloud
  - servicenow
  - email
capability:
  exposes:
  - type: mcp
    namespace: ticket-fulfillment
    port: 8080
    tools:
    - name: fulfill-ticket-order
      description: Given an order ID and fan email, validate the order, generate the digital ticket, email it to the fan, and log fulfillment.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The ticket order identifier.
      - name: fan_email
        in: body
        type: string
        description: The fan's email address for ticket delivery.
      - name: event_name
        in: body
        type: string
        description: The game event name.
      steps:
      - name: validate-order
        type: call
        call: oracle.get-order
        with:
          order_id: '{{order_id}}'
      - name: generate-ticket
        type: call
        call: ticketing.create-digital-ticket
        with:
          order_id: '{{order_id}}'
          section: '{{validate-order.section}}'
          row: '{{validate-order.row}}'
          seat: '{{validate-order.seat}}'
      - name: email-ticket
        type: call
        call: msteams.send-mail
        with:
          recipient: '{{fan_email}}'
          subject: Your NFL Tickets for {{event_name}}
          body: 'Your digital tickets are ready. Ticket ID: {{generate-ticket.ticket_id}}'
      - name: log-fulfillment
        type: call
        call: servicenow.create-record
        with:
          table: ticket_fulfillment
          order_id: '{{order_id}}'
          ticket_id: '{{generate-ticket.ticket_id}}'
          status: fulfilled
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nfl.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: ticketing
    baseUri: https://ticketing.nfl.com/api/v2
    authentication:
      type: bearer
      token: $secrets.ticketing_api_token
    resources:
    - name: digital-tickets
      path: /tickets
      operations:
      - name: create-digital-ticket
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /users/{{sender_upn}}/sendMail
      inputParameters:
      - name: sender_upn
        in: path
      operations:
      - name: send-mail
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nfl.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 → game-day-ticketing-fulfillment-orchestrator.yml

Retrieves a Confluence wiki page by space key and title, returning the page body, version, and last modified date.

naftiko: '0.5'
info:
  label: Confluence Wiki Page Lookup
  description: Retrieves a Confluence wiki page by space key and title, returning the page body, version, and last modified date.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: get-wiki-page
      description: Look up a Confluence page by space key and title.
      inputParameters:
      - name: space_key
        in: body
        type: string
        description: The Confluence space key.
      - name: page_title
        in: body
        type: string
        description: The page title to search for.
      call: confluence.get-page
      with:
        space_key: '{{space_key}}'
        title: '{{page_title}}'
      outputParameters:
      - name: page_id
        type: string
        mapping: $.results[0].id
      - name: version
        type: string
        mapping: $.results[0].version.number
      - name: last_modified
        type: string
        mapping: $.results[0].version.when
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://nfl.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content?spaceKey={{space_key}}&title={{title}}
      inputParameters:
      - name: space_key
        in: query
      - name: title
        in: query
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-wiki-page-lookup.yml

Orchestrates game day ops by polling Datadog for system health, checking ServiceNow for open incidents, pulling POS revenue from Square, and posting a consolidated status update to the operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Game Day Operations Command Center
  description: Orchestrates game day ops by polling Datadog for system health, checking ServiceNow for open incidents, pulling POS revenue from Square, and posting a consolidated status update to the operations Microsoft Teams channel.
  tags:
  - game-day-ops
  - datadog
  - servicenow
  - square
  - microsoft-teams
  - command-center
capability:
  exposes:
  - type: mcp
    namespace: game-day-command
    port: 8080
    tools:
    - name: generate-ops-status
      description: Generate a consolidated game day operations status report across all systems and post to Microsoft Teams.
      inputParameters:
      - name: venue_name
        in: body
        type: string
        description: The venue name.
      - name: game_date
        in: body
        type: string
        description: Game date in YYYY-MM-DD format.
      - name: location_id
        in: body
        type: string
        description: The Square location ID for the venue.
      steps:
      - name: check-systems
        type: call
        call: datadog.get-monitors
        with:
          environment: production
      - name: check-incidents
        type: call
        call: servicenow.get-open-incidents
        with:
          category: venue_operations
          venue: '{{venue_name}}'
      - name: check-revenue
        type: call
        call: square.list-payments
        with:
          location_id: '{{location_id}}'
          begin_time: '{{game_date}}'
      - name: post-status
        type: call
        call: msteams.send-message
        with:
          channel_id: game-day-ops
          text: 'GAME DAY STATUS for {{venue_name}} ({{game_date}}): Systems: {{check-systems.active_alerts}} alerts | Open Incidents: {{check-incidents.count}} | POS Revenue: {{check-revenue.total_sales}}'
  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
  - type: http
    namespace: servicenow
    baseUri: https://nfl.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-open-incidents
        method: GET
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: list-payments
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → game-day-operations-command-center.yml

Synchronizes game content across NFL streaming platforms by fetching the content manifest from the CMS, publishing to YouTube, and updating the content catalog in Elasticsearch.

naftiko: '0.5'
info:
  label: Streaming Platform Content Sync
  description: Synchronizes game content across NFL streaming platforms by fetching the content manifest from the CMS, publishing to YouTube, and updating the content catalog in Elasticsearch.
  tags:
  - streaming
  - content-management
  - youtube
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: content-sync
    port: 8080
    tools:
    - name: sync-streaming-content
      description: Given a content manifest ID, publish the content to YouTube and update the search catalog in Elasticsearch.
      inputParameters:
      - name: manifest_id
        in: body
        type: string
        description: The content manifest identifier.
      - name: content_title
        in: body
        type: string
        description: The content title for publication.
      steps:
      - name: publish-youtube
        type: call
        call: youtube.upload-video
        with:
          manifest_id: '{{manifest_id}}'
          title: '{{content_title}}'
      - name: update-catalog
        type: call
        call: elasticsearch.index-content
        with:
          content_id: '{{manifest_id}}'
          title: '{{content_title}}'
          youtube_url: '{{publish-youtube.video_url}}'
          status: published
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?part=snippet,status
      operations:
      - name: upload-video
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://nfl-analytics.es.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: content-index
      path: /content-catalog/_doc/{{content_id}}
      inputParameters:
      - name: content_id
        in: path
      operations:
      - name: index-content
        method: PUT
Open in Framework → View in Fleet → streaming-platform-content-sync.yml

Retrieves Google Tag Manager container configuration for an NFL digital property, returning active tags, triggers, and version information.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Lookup
  description: Retrieves Google Tag Manager container configuration for an NFL digital property, returning active tags, triggers, and version information.
  tags:
  - analytics
  - google-tag-manager
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: get-gtm-container
      description: Look up a Google Tag Manager container by account and container ID.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The GTM account identifier.
      - name: container_id
        in: body
        type: string
        description: The GTM container identifier.
      call: gtm.get-container
      with:
        account_id: '{{account_id}}'
        container_id: '{{container_id}}'
      outputParameters:
      - name: container_name
        type: string
        mapping: $.name
      - name: tag_count
        type: string
        mapping: $.tagCount
      - name: version
        type: string
        mapping: $.publicId
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: containers
      path: /accounts/{{account_id}}/containers/{{container_id}}
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      operations:
      - name: get-container
        method: GET
Open in Framework → View in Fleet → google-tag-manager-container-lookup.yml

When POS systems go offline, creates ServiceNow P1 incident, pages on-call, and notifies arena operations.

naftiko: '0.5'
info:
  label: Arena Point of Sale Outage Response
  description: When POS systems go offline, creates ServiceNow P1 incident, pages on-call, and notifies arena operations.
  tags:
  - arena
  - pos
  - servicenow
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_point_of_sale_outage_response
      description: When POS systems go offline, creates ServiceNow P1 incident, pages on-call, and notifies arena operations.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Point of Sale Outage Response: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Point of Sale Outage Response for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-point-of-sale-outage-response.yml

Queries Snowflake for fan engagement metrics by market and campaign.

naftiko: '0.5'
info:
  label: Snowflake Fan Engagement Query
  description: Queries Snowflake for fan engagement metrics by market and campaign.
  tags:
  - marketing
  - fan-engagement
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: snowflake_fan_engagement_query
      description: Queries Snowflake for fan engagement metrics by market and campaign.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-snowflake
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-fan-engagement-query.yml

Monitors mobile app performance via Datadog, creates ServiceNow incidents for degradation, and alerts the digital team.

naftiko: '0.5'
info:
  label: Gameday Mobile App Performance Monitoring
  description: Monitors mobile app performance via Datadog, creates ServiceNow incidents for degradation, and alerts the digital team.
  tags:
  - digital
  - mobile
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: gameday_mobile_app_performance_monitoring
      description: Monitors mobile app performance via Datadog, creates ServiceNow incidents for degradation, and alerts the digital team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Gameday Mobile App Performance Monitoring: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Gameday Mobile App Performance Monitoring for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → gameday-mobile-app-performance-monitoring.yml

Coordinates game day operations by pulling the arena checklist, creating Jira tasks, and notifying the ops team.

naftiko: '0.5'
info:
  label: Game Day Operations Checklist
  description: Coordinates game day operations by pulling the arena checklist, creating Jira tasks, and notifying the ops team.
  tags:
  - operations
  - game-day
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: game_day_operations_checklist
      description: Coordinates game day operations by pulling the arena checklist, creating Jira tasks, and notifying the ops team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Game Day Operations Checklist: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Game Day Operations Checklist for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → game-day-operations-checklist.yml

Exports current NHL staff headcount from Workday by department and cost center and pushes the data to Power BI for executive workforce planning dashboards.

naftiko: '0.5'
info:
  label: Workday Headcount Report to Power BI
  description: Exports current NHL staff headcount from Workday by department and cost center and pushes the data to Power BI for executive workforce planning dashboards.
  tags:
  - hr
  - finance
  - workday
  - power-bi
  - reporting
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: publish-headcount-to-powerbi
      description: Export current Workday headcount by department and cost center and push to a Power BI dataset for executive workforce planning dashboards.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID to push headcount rows into.
      - name: as_of_date
        in: body
        type: string
        description: Effective date for the headcount snapshot in ISO 8601 format.
      steps:
      - name: export-headcount
        type: call
        call: workday-hc.export-workers
        with:
          as_of_date: '{{as_of_date}}'
      - name: push-to-powerbi
        type: call
        call: powerbi-hc.push-rows
        with:
          dataset_id: '{{dataset_id}}'
          rows: '{{export-headcount.rows}}'
  consumes:
  - type: http
    namespace: workday-hc
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker-exports
      path: /nhl/workers/export
      inputParameters:
      - name: as_of_date
        in: query
      operations:
      - name: export-workers
        method: GET
  - type: http
    namespace: powerbi-hc
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-rows
      path: /datasets/{{dataset_id}}/rows
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: push-rows
        method: POST
Open in Framework → View in Fleet → workday-headcount-report-to-power-bi.yml

Exports current season player statistics from Snowflake and pushes the dataset to Power BI for real-time player performance dashboards used by broadcast and editorial teams.

naftiko: '0.5'
info:
  label: Player Stats Power BI Dashboard Refresh
  description: Exports current season player statistics from Snowflake and pushes the dataset to Power BI for real-time player performance dashboards used by broadcast and editorial teams.
  tags:
  - data
  - analytics
  - snowflake
  - power-bi
  - reporting
  - player-stats
  - broadcast
capability:
  exposes:
  - type: mcp
    namespace: player-analytics
    port: 8080
    tools:
    - name: refresh-player-stats-dashboard
      description: Given a Power BI dataset ID and season year, query Snowflake for current season player statistics and push the data to Power BI for live broadcast and editorial dashboards.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI streaming dataset ID to push player stats into.
      - name: season_year
        in: body
        type: string
        description: NHL season year, e.g. '2025-2026'.
      steps:
      - name: query-player-stats
        type: call
        call: snowflake-stats.run-stats-query
        with:
          season: '{{season_year}}'
      - name: push-to-powerbi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: '{{dataset_id}}'
          rows: '{{query-player-stats.rows}}'
  consumes:
  - type: http
    namespace: snowflake-stats
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: season
        in: query
      operations:
      - name: run-stats-query
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-rows
      path: /datasets/{{dataset_id}}/rows
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: push-rows
        method: POST
Open in Framework → View in Fleet → player-stats-power-bi-dashboard-refresh.yml

Retrieves an SAP Concur expense report by ID, returning total and approval status.

naftiko: '0.5'
info:
  label: SAP Concur Expense Lookup
  description: Retrieves an SAP Concur expense report by ID, returning total and approval status.
  tags:
  - finance
  - sap-concur
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: sap_concur_expense_lookup
      description: Retrieves an SAP Concur expense report by ID, returning total and approval status.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-sap
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-lookup.yml

Fetches completed sprint data from Jira for the NHL Technology division, calculates velocity and bug rate metrics, and posts a sprint digest to the Engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Report for Technology Teams
  description: Fetches completed sprint data from Jira for the NHL Technology division, calculates velocity and bug rate metrics, and posts a sprint digest to the Engineering Microsoft Teams channel.
  tags:
  - devops
  - agile
  - jira
  - microsoft-teams
  - sprint-reporting
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: agile-reporting
    port: 8080
    tools:
    - name: publish-sprint-velocity-digest
      description: Given a Jira board ID and number of sprints, calculate average velocity and bug rate, then post a sprint velocity digest to the Engineering Teams channel.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira Software board ID to analyze sprint data for.
      - name: sprint_count
        in: body
        type: integer
        description: Number of completed sprints to include in the analysis.
      steps:
      - name: get-sprint-data
        type: call
        call: jira-eng.list-completed-sprints
        with:
          board_id: '{{board_id}}'
          limit: '{{sprint_count}}'
      - name: post-digest
        type: call
        call: msteams-sprint.post-channel-message
        with:
          channel_id: Engineering
          text: 'Sprint velocity (board {{board_id}}, last {{sprint_count}} sprints): avg {{get-sprint-data.avg_velocity}} pts | bug rate {{get-sprint-data.bug_rate}}% | last sprint: {{get-sprint-data.last_sprint_name}}'
  consumes:
  - type: http
    namespace: jira-eng
    baseUri: https://nhl.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-sprint
    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-sprint-velocity-report-for-technology-teams.yml

When a broadcast system fails, creates a PagerDuty alert, opens a ServiceNow incident, and notifies the broadcast engineering team.

naftiko: '0.5'
info:
  label: Broadcast Infrastructure Failover Response
  description: When a broadcast system fails, creates a PagerDuty alert, opens a ServiceNow incident, and notifies the broadcast engineering team.
  tags:
  - broadcast
  - infrastructure
  - pagerduty
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: broadcast_infrastructure_failover_response
      description: When a broadcast system fails, creates a PagerDuty alert, opens a ServiceNow incident, and notifies the broadcast engineering team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Broadcast Infrastructure Failover Response: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Broadcast Infrastructure Failover Response for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → broadcast-infrastructure-failover-response.yml

Queries SAP Concur for team travel spend, validates against budgets, and alerts finance when thresholds are exceeded.

naftiko: '0.5'
info:
  label: SAP Concur Team Travel Budget Alert
  description: Queries SAP Concur for team travel spend, validates against budgets, and alerts finance when thresholds are exceeded.
  tags:
  - finance
  - travel
  - sap-concur
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: sap_concur_team_travel_budget_alert
      description: Queries SAP Concur for team travel spend, validates against budgets, and alerts finance when thresholds are exceeded.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'SAP Concur Team Travel Budget Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'SAP Concur Team Travel Budget Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → sap-concur-team-travel-budget-alert.yml

When a new hire is created in Workday, provisions their Okta identity, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new team member.

naftiko: '0.5'
info:
  label: Employee Onboarding Provisioning
  description: When a new hire is created in Workday, provisions their Okta identity, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new team member.
  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 employee.
      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: department
        in: body
        type: string
        description: Department name for Okta group assignment.
      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 the NHL, {{get-worker.first_name}}! Your 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: /nhl/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://nhl.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://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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

Tracks food safety inspection results in Jira, creates ServiceNow remediation orders, and notifies arena ops.

naftiko: '0.5'
info:
  label: Arena Food Safety Inspection Workflow
  description: Tracks food safety inspection results in Jira, creates ServiceNow remediation orders, and notifies arena ops.
  tags:
  - arena
  - food-safety
  - jira
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_food_safety_inspection_workflow
      description: Tracks food safety inspection results in Jira, creates ServiceNow remediation orders, and notifies arena ops.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Food Safety Inspection Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Food Safety Inspection Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-food-safety-inspection-workflow.yml

Queries Snowflake for game statistics by team and season.

naftiko: '0.5'
info:
  label: Snowflake Game Stats Query
  description: Queries Snowflake for game statistics by team and season.
  tags:
  - analytics
  - snowflake
  - game-stats
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: snowflake_game_stats_query
      description: Queries Snowflake for game statistics by team and season.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-snowflake
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-game-stats-query.yml

Detects referee scheduling conflicts in Snowflake, creates Jira resolution tasks, and notifies hockey operations.

naftiko: '0.5'
info:
  label: Referee Scheduling Conflict Resolution
  description: Detects referee scheduling conflicts in Snowflake, creates Jira resolution tasks, and notifies hockey operations.
  tags:
  - hockey-ops
  - scheduling
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: referee_scheduling_conflict_resolution
      description: Detects referee scheduling conflicts in Snowflake, creates Jira resolution tasks, and notifies hockey operations.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Referee Scheduling Conflict Resolution: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Referee Scheduling Conflict Resolution for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → referee-scheduling-conflict-resolution.yml

When Datadog detects arena WiFi saturation, creates a ServiceNow incident and alerts the arena IT team.

naftiko: '0.5'
info:
  label: Arena WiFi Capacity Alert
  description: When Datadog detects arena WiFi saturation, creates a ServiceNow incident and alerts the arena IT team.
  tags:
  - arena
  - network
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_wifi_capacity_alert
      description: When Datadog detects arena WiFi saturation, creates a ServiceNow incident and alerts the arena IT team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena WiFi Capacity Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena WiFi Capacity Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-wifi-capacity-alert.yml

Queries Okta for users without MFA, creates ServiceNow compliance ticket, and notifies IT security.

naftiko: '0.5'
info:
  label: Okta MFA Non-Compliance Escalation
  description: Queries Okta for users without MFA, creates ServiceNow compliance ticket, and notifies IT security.
  tags:
  - security
  - identity
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: okta_mfa_non_compliance_escalation
      description: Queries Okta for users without MFA, creates ServiceNow compliance ticket, and notifies IT security.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Okta MFA Non-Compliance Escalation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Okta MFA Non-Compliance Escalation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → okta-mfa-non-compliance-escalation.yml

Queries Salesforce for open sponsorship opportunities nearing their close date, posts a sponsorship pipeline digest to the Partnerships Microsoft Teams channel, and logs the report to Snowflake.

naftiko: '0.5'
info:
  label: Salesforce Sponsorship Opportunity Tracker
  description: Queries Salesforce for open sponsorship opportunities nearing their close date, posts a sponsorship pipeline digest to the Partnerships Microsoft Teams channel, and logs the report to Snowflake.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - snowflake
  - sponsorship
  - partnerships
capability:
  exposes:
  - type: mcp
    namespace: sponsorship-pipeline
    port: 8080
    tools:
    - name: digest-sponsorship-pipeline
      description: Given a close date threshold (days until close), fetch Salesforce sponsorship opportunities expiring within that window, post a pipeline digest to Partnerships Teams, and log the snapshot to Snowflake.
      inputParameters:
      - name: days_to_close
        in: body
        type: integer
        description: Number of days from today to use as the close date threshold.
      steps:
      - name: get-opportunities
        type: call
        call: salesforce-sponsorship.list-opportunities
        with:
          days_to_close: '{{days_to_close}}'
          type: Sponsorship
      - name: log-snapshot
        type: call
        call: snowflake-sponsorship.insert-record
        with:
          table: SALES.SPONSORSHIP_SNAPSHOTS
          opportunity_count: '{{get-opportunities.count}}'
          total_value: '{{get-opportunities.total_value}}'
      - name: post-digest
        type: call
        call: msteams-partnerships.post-channel-message
        with:
          channel_id: Partnerships
          text: 'Sponsorship pipeline: {{get-opportunities.count}} opportunities closing within {{days_to_close}} days. Total value: ${{get-opportunities.total_value}}. Logged to Snowflake.'
  consumes:
  - type: http
    namespace: salesforce-sponsorship
    baseUri: https://nhl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      inputParameters:
      - name: days_to_close
        in: query
      - name: type
        in: query
      operations:
      - name: list-opportunities
        method: GET
  - type: http
    namespace: snowflake-sponsorship
    baseUri: https://nhl.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-partnerships
    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-sponsorship-opportunity-tracker.yml

Queries Snowflake for prospect scouting data, refreshes Power BI dashboards, and posts summary to hockey ops.

naftiko: '0.5'
info:
  label: Draft Prospect Analytics Report
  description: Queries Snowflake for prospect scouting data, refreshes Power BI dashboards, and posts summary to hockey ops.
  tags:
  - hockey-ops
  - scouting
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: draft_prospect_analytics_report
      description: Queries Snowflake for prospect scouting data, refreshes Power BI dashboards, and posts summary to hockey ops.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Draft Prospect Analytics Report: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Draft Prospect Analytics Report for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → draft-prospect-analytics-report.yml

Pulls social media metrics from Meta API and Snowflake, generates performance report, and posts to marketing.

naftiko: '0.5'
info:
  label: Social Media Content Performance Report
  description: Pulls social media metrics from Meta API and Snowflake, generates performance report, and posts to marketing.
  tags:
  - marketing
  - social-media
  - meta
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: social_media_content_performance_report
      description: Pulls social media metrics from Meta API and Snowflake, generates performance report, and posts to marketing.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Social Media Content Performance Report: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Social Media Content Performance Report for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → social-media-content-performance-report.yml

Monitors ice quality metrics from Snowflake telemetry, creates ServiceNow work orders for maintenance, and notifies arena facilities team.

naftiko: '0.5'
info:
  label: Arena Ice Quality Monitoring
  description: Monitors ice quality metrics from Snowflake telemetry, creates ServiceNow work orders for maintenance, and notifies arena facilities team.
  tags:
  - arena
  - ice-quality
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: arena-ops
    port: 8080
    tools:
    - name: monitor-ice-quality
      description: Given an arena and game date, check ice quality metrics and trigger maintenance if needed.
      inputParameters:
      - name: arena_id
        type: string
        description: Arena identifier.
      - name: game_date
        type: string
        description: Game date.
      steps:
      - name: get-ice-metrics
        type: call
        call: snowflake.query-ice-quality
        with:
          arena_id: '{{arena_id}}'
          date: '{{game_date}}'
      - name: create-work-order
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Ice quality check: {{arena_id}} for {{game_date}}'
          category: facilities
      - name: notify-facilities
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_arena_facilities_channel
          text: 'Ice quality {{arena_id}} ({{game_date}}): Temp: {{get-ice-metrics.surface_temp}}F | Thickness: {{get-ice-metrics.thickness_in}} in | Work order: {{create-work-order.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: query-ice-quality
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/arena-facilities/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-ice-quality-monitoring.yml

Validates broadcast content rights by querying Snowflake, checks Salesforce contracts, and notifies media team.

naftiko: '0.5'
info:
  label: Broadcast Content Rights Validation
  description: Validates broadcast content rights by querying Snowflake, checks Salesforce contracts, and notifies media team.
  tags:
  - broadcast
  - media-rights
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: broadcast_content_rights_validation
      description: Validates broadcast content rights by querying Snowflake, checks Salesforce contracts, and notifies media team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Broadcast Content Rights Validation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Broadcast Content Rights Validation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → broadcast-content-rights-validation.yml

When Dependabot finds a vulnerability, creates Jira ticket and alerts the security team via Teams.

naftiko: '0.5'
info:
  label: GitHub Dependabot Vulnerability Triage
  description: When Dependabot finds a vulnerability, creates Jira ticket and alerts the security team via Teams.
  tags:
  - security
  - github
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: github_dependabot_vulnerability_triage
      description: When Dependabot finds a vulnerability, creates Jira ticket and alerts the security team via Teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'GitHub Dependabot Vulnerability Triage: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'GitHub Dependabot Vulnerability Triage for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-dependabot-vulnerability-triage.yml

Fetches Salesforce season ticket holder contacts whose renewals are due in 60 days, enriches them with LinkedIn engagement data, and triggers a renewal outreach campaign via Microsoft Teams and email.

naftiko: '0.5'
info:
  label: Salesforce Season Ticket Holder Renewal Campaign
  description: Fetches Salesforce season ticket holder contacts whose renewals are due in 60 days, enriches them with LinkedIn engagement data, and triggers a renewal outreach campaign via Microsoft Teams and email.
  tags:
  - sales
  - crm
  - salesforce
  - linkedin
  - microsoft-teams
  - season-tickets
  - fan-engagement
capability:
  exposes:
  - type: mcp
    namespace: renewal-campaigns
    port: 8080
    tools:
    - name: trigger-renewal-outreach
      description: Given a renewal deadline date range, fetch Salesforce season ticket contacts due for renewal, enrich with LinkedIn profile data, and post an outreach task list to the TicketSales Teams channel.
      inputParameters:
      - name: renewal_deadline_start
        in: body
        type: string
        description: Start of the renewal window in ISO 8601 format.
      - name: renewal_deadline_end
        in: body
        type: string
        description: End of the renewal window in ISO 8601 format.
      steps:
      - name: get-renewal-contacts
        type: call
        call: salesforce-renewals.list-contacts
        with:
          renewal_date_gte: '{{renewal_deadline_start}}'
          renewal_date_lte: '{{renewal_deadline_end}}'
      - name: enrich-linkedin
        type: call
        call: linkedin-renewals.search-profiles
        with:
          contact_names: '{{get-renewal-contacts.names}}'
      - name: notify-sales-team
        type: call
        call: msteams-renewals.post-channel-message
        with:
          channel_id: TicketSales
          text: 'Renewal outreach ready: {{get-renewal-contacts.count}} season ticket holders due for renewal between {{renewal_deadline_start}} and {{renewal_deadline_end}}. LinkedIn enrichment complete.'
  consumes:
  - type: http
    namespace: salesforce-renewals
    baseUri: https://nhl.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      inputParameters:
      - name: renewal_date_gte
        in: query
      - name: renewal_date_lte
        in: query
      operations:
      - name: list-contacts
        method: GET
  - type: http
    namespace: linkedin-renewals
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: people
      path: /people
      inputParameters:
      - name: contact_names
        in: query
      operations:
      - name: search-profiles
        method: GET
  - type: http
    namespace: msteams-renewals
    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-season-ticket-holder-renewal-campaign.yml

Fetches Meta page insights for the NHL official Facebook and Instagram pages, stores weekly engagement metrics in Snowflake, and posts a performance report to the Digital Marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Meta Social Engagement Performance Report
  description: Fetches Meta page insights for the NHL official Facebook and Instagram pages, stores weekly engagement metrics in Snowflake, and posts a performance report to the Digital Marketing Microsoft Teams channel.
  tags:
  - marketing
  - social-media
  - meta
  - snowflake
  - microsoft-teams
  - fan-engagement
  - performance-reporting
capability:
  exposes:
  - type: mcp
    namespace: meta-performance
    port: 8080
    tools:
    - name: report-meta-engagement
      description: Given a Meta page ID and reporting week, fetch page insights for impressions, reach, and engagement, log metrics to Snowflake, and post a weekly social performance digest to Digital Marketing Teams.
      inputParameters:
      - name: meta_page_id
        in: body
        type: string
        description: Meta (Facebook/Instagram) Page ID to pull insights for.
      - name: week_ending
        in: body
        type: string
        description: End date of the reporting week in ISO 8601 format.
      steps:
      - name: get-page-insights
        type: call
        call: meta-insights.get-insights
        with:
          page_id: '{{meta_page_id}}'
          since: '{{week_ending}}'
          metric: page_impressions,page_reach,page_engaged_users
      - name: log-to-snowflake
        type: call
        call: snowflake-meta.insert-record
        with:
          table: MARKETING.META_WEEKLY_METRICS
          page_id: '{{meta_page_id}}'
          impressions: '{{get-page-insights.impressions}}'
          reach: '{{get-page-insights.reach}}'
          engaged_users: '{{get-page-insights.engaged_users}}'
          week_ending: '{{week_ending}}'
      - name: post-report
        type: call
        call: msteams-digital.post-channel-message
        with:
          channel_id: DigitalMarketing
          text: 'Meta performance week ending {{week_ending}}: Impressions {{get-page-insights.impressions}} | Reach {{get-page-insights.reach}} | Engaged {{get-page-insights.engaged_users}} | Metrics logged to Snowflake.'
  consumes:
  - type: http
    namespace: meta-insights
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: page-insights
      path: /{{page_id}}/insights
      inputParameters:
      - name: page_id
        in: path
      - name: since
        in: query
      - name: metric
        in: query
      operations:
      - name: get-insights
        method: GET
  - type: http
    namespace: snowflake-meta
    baseUri: https://nhl.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-digital
    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 → meta-social-engagement-performance-report.yml

Queries Snowflake for arena attendance data across all 32 NHL arenas, compares against capacity benchmarks, and posts a weekly attendance analytics digest to the Business Intelligence Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Arena Attendance Analytics
  description: Queries Snowflake for arena attendance data across all 32 NHL arenas, compares against capacity benchmarks, and posts a weekly attendance analytics digest to the Business Intelligence Microsoft Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - microsoft-teams
  - attendance
  - arena-operations
capability:
  exposes:
  - type: mcp
    namespace: arena-analytics
    port: 8080
    tools:
    - name: digest-arena-attendance
      description: Given a reporting week, query Snowflake for attendance figures for each NHL arena, calculate occupancy rate versus capacity, and post an attendance digest to the BusinessIntelligence Teams channel.
      inputParameters:
      - name: week_ending
        in: body
        type: string
        description: End date of the reporting week in ISO 8601 format.
      steps:
      - name: query-attendance
        type: call
        call: snowflake-attendance.run-attendance-query
        with:
          week_ending: '{{week_ending}}'
      - name: post-digest
        type: call
        call: msteams-bi.post-channel-message
        with:
          channel_id: BusinessIntelligence
          text: 'Arena attendance digest week ending {{week_ending}}: League avg occupancy {{query-attendance.avg_occupancy_pct}}% | Highest: {{query-attendance.top_arena}} ({{query-attendance.top_pct}}%) | Lowest: {{query-attendance.bottom_arena}} ({{query-attendance.bottom_pct}}%)'
  consumes:
  - type: http
    namespace: snowflake-attendance
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: week_ending
        in: query
      operations:
      - name: run-attendance-query
        method: POST
  - type: http
    namespace: msteams-bi
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{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-arena-attendance-analytics.yml

Retrieves a ServiceNow incident by number, returning state and priority.

naftiko: '0.5'
info:
  label: ServiceNow Incident Lookup
  description: Retrieves a ServiceNow incident by number, returning state and priority.
  tags:
  - itsm
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: servicenow_incident_lookup
      description: Retrieves a ServiceNow incident by number, returning state and priority.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-servicenow
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → servicenow-incident-lookup.yml

Monitors AKS deployment rollouts via Datadog, creates ServiceNow incident on failure, and alerts platform team.

naftiko: '0.5'
info:
  label: Kubernetes Deployment Rollout Monitor
  description: Monitors AKS deployment rollouts via Datadog, creates ServiceNow incident on failure, and alerts platform team.
  tags:
  - devops
  - kubernetes
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: kubernetes_deployment_rollout_monitor
      description: Monitors AKS deployment rollouts via Datadog, creates ServiceNow incident on failure, and alerts platform team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Kubernetes Deployment Rollout Monitor: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Kubernetes Deployment Rollout Monitor for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → kubernetes-deployment-rollout-monitor.yml

Pulls parking revenue data from Snowflake, validates against expected capacity, and posts report to operations.

naftiko: '0.5'
info:
  label: Arena Parking Revenue Reconciliation
  description: Pulls parking revenue data from Snowflake, validates against expected capacity, and posts report to operations.
  tags:
  - arena
  - revenue
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_parking_revenue_reconciliation
      description: Pulls parking revenue data from Snowflake, validates against expected capacity, and posts report to operations.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Parking Revenue Reconciliation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Parking Revenue Reconciliation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-parking-revenue-reconciliation.yml

Pulls travel expenses from SAP Concur, validates against team budgets in Snowflake, and posts to finance.

naftiko: '0.5'
info:
  label: Player Travel Expense Reconciliation
  description: Pulls travel expenses from SAP Concur, validates against team budgets in Snowflake, and posts to finance.
  tags:
  - finance
  - travel
  - sap-concur
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: player_travel_expense_reconciliation
      description: Pulls travel expenses from SAP Concur, validates against team budgets in Snowflake, and posts to finance.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Player Travel Expense Reconciliation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Player Travel Expense Reconciliation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → player-travel-expense-reconciliation.yml

Monitors arena HVAC conditions via Snowflake telemetry, creates ServiceNow alerts for deviations, and notifies facilities.

naftiko: '0.5'
info:
  label: Arena HVAC Comfort Monitoring
  description: Monitors arena HVAC conditions via Snowflake telemetry, creates ServiceNow alerts for deviations, and notifies facilities.
  tags:
  - arena
  - hvac
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_hvac_comfort_monitoring
      description: Monitors arena HVAC conditions via Snowflake telemetry, creates ServiceNow alerts for deviations, and notifies facilities.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena HVAC Comfort Monitoring: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena HVAC Comfort Monitoring for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-hvac-comfort-monitoring.yml

Pulls broadcast schedules from Snowflake, validates partner contracts in Salesforce, and notifies media ops.

naftiko: '0.5'
info:
  label: International Broadcast Schedule Coordination
  description: Pulls broadcast schedules from Snowflake, validates partner contracts in Salesforce, and notifies media ops.
  tags:
  - broadcast
  - international
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: international_broadcast_schedule_coordination
      description: Pulls broadcast schedules from Snowflake, validates partner contracts in Salesforce, and notifies media ops.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'International Broadcast Schedule Coordination: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'International Broadcast Schedule Coordination for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → international-broadcast-schedule-coordination.yml

Creates a ServiceNow change request for arena IT infrastructure updates, schedules maintenance window, and notifies teams.

naftiko: '0.5'
info:
  label: Arena IT Change Management
  description: Creates a ServiceNow change request for arena IT infrastructure updates, schedules maintenance window, and notifies teams.
  tags:
  - itsm
  - arena
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_it_change_management
      description: Creates a ServiceNow change request for arena IT infrastructure updates, schedules maintenance window, and notifies teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena IT Change Management: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena IT Change Management for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-it-change-management.yml

Retrieves a sponsorship deal from Salesforce by opportunity ID.

naftiko: '0.5'
info:
  label: Salesforce Sponsorship Deal Lookup
  description: Retrieves a sponsorship deal from Salesforce by opportunity ID.
  tags:
  - sales
  - sponsorship
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: salesforce_sponsorship_deal_lookup
      description: Retrieves a sponsorship deal from Salesforce by opportunity ID.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-salesforce
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → salesforce-sponsorship-deal-lookup.yml

Pulls merchandise sales data from Snowflake, refreshes Power BI dashboard, and posts weekly digest.

naftiko: '0.5'
info:
  label: Merchandise Sales Analytics Digest
  description: Pulls merchandise sales data from Snowflake, refreshes Power BI dashboard, and posts weekly digest.
  tags:
  - retail
  - merchandise
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: merchandise_sales_analytics_digest
      description: Pulls merchandise sales data from Snowflake, refreshes Power BI dashboard, and posts weekly digest.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Merchandise Sales Analytics Digest: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Merchandise Sales Analytics Digest for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → merchandise-sales-analytics-digest.yml

When Datadog detects streaming latency, creates a ServiceNow incident and alerts the streaming platform team.

naftiko: '0.5'
info:
  label: NHL.tv Streaming Latency Alert
  description: When Datadog detects streaming latency, creates a ServiceNow incident and alerts the streaming platform team.
  tags:
  - streaming
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: nhltv_streaming_latency_alert
      description: When Datadog detects streaming latency, creates a ServiceNow incident and alerts the streaming platform team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'NHL.tv Streaming Latency Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'NHL.tv Streaming Latency Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → nhl-tv-streaming-latency-alert.yml

Retrieves CI/CD status for the latest commit on a repository.

naftiko: '0.5'
info:
  label: GitHub Repository Status Lookup
  description: Retrieves CI/CD status for the latest commit on a repository.
  tags:
  - devops
  - github
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: github_repository_status_lookup
      description: Retrieves CI/CD status for the latest commit on a repository.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-github
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → github-repository-status-lookup.yml

When a player injury is reported, creates a Jira tracking issue, updates Snowflake records, and notifies the hockey operations team.

naftiko: '0.5'
info:
  label: Player Injury Reporting Workflow
  description: When a player injury is reported, creates a Jira tracking issue, updates Snowflake records, and notifies the hockey operations team.
  tags:
  - hockey-ops
  - player-health
  - jira
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: player_injury_reporting_workflow
      description: When a player injury is reported, creates a Jira tracking issue, updates Snowflake records, and notifies the hockey operations team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Player Injury Reporting Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Player Injury Reporting Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → player-injury-reporting-workflow.yml

Pushes sponsor content updates to arena signage systems via API, validates delivery, and notifies partnerships.

naftiko: '0.5'
info:
  label: Arena Digital Signage Content Update
  description: Pushes sponsor content updates to arena signage systems via API, validates delivery, and notifies partnerships.
  tags:
  - arena
  - digital-signage
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_digital_signage_content_update
      description: Pushes sponsor content updates to arena signage systems via API, validates delivery, and notifies partnerships.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Digital Signage Content Update: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Digital Signage Content Update for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-digital-signage-content-update.yml

Queries Azure costs, identifies optimization opportunities in Snowflake, and posts recommendations to IT leadership.

naftiko: '0.5'
info:
  label: Cloud Cost Optimization Orchestration
  description: Queries Azure costs, identifies optimization opportunities in Snowflake, and posts recommendations to IT leadership.
  tags:
  - cloud
  - finops
  - azure
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: cloud_cost_optimization_orchestration
      description: Queries Azure costs, identifies optimization opportunities in Snowflake, and posts recommendations to IT leadership.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Cloud Cost Optimization Orchestration: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Cloud Cost Optimization Orchestration for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-optimization-orchestration.yml

Retrieves a PagerDuty incident by ID for broadcast infrastructure on-call.

naftiko: '0.5'
info:
  label: PagerDuty Incident Lookup
  description: Retrieves a PagerDuty incident by ID for broadcast infrastructure on-call.
  tags:
  - itsm
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: pagerduty_incident_lookup
      description: Retrieves a PagerDuty incident by ID for broadcast infrastructure on-call.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-pagerduty
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → pagerduty-incident-lookup.yml

Queries Snowflake for NHL.tv streaming viewership data by game, computes peak concurrent viewers and watch time, and posts a viewership report to the Digital Media Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Broadcast Viewership Analytics
  description: Queries Snowflake for NHL.tv streaming viewership data by game, computes peak concurrent viewers and watch time, and posts a viewership report to the Digital Media Microsoft Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - microsoft-teams
  - broadcast
  - viewership
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: viewership-analytics
    port: 8080
    tools:
    - name: report-game-viewership
      description: Given an NHL game ID, query Snowflake for streaming viewership metrics including peak concurrent viewers and average watch time, then post the report to Digital Media Teams.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: NHL game ID to pull viewership analytics for.
      steps:
      - name: query-viewership
        type: call
        call: snowflake-viewership.run-viewership-query
        with:
          game_id: '{{game_id}}'
      - name: post-report
        type: call
        call: msteams-digital-media.post-channel-message
        with:
          channel_id: DigitalMedia
          text: 'Viewership report for game {{game_id}}: Peak concurrent viewers {{query-viewership.peak_concurrent}} | Avg watch time {{query-viewership.avg_watch_time_min}} min | Total streams {{query-viewership.total_streams}}'
  consumes:
  - type: http
    namespace: snowflake-viewership
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: run-viewership-query
        method: POST
  - type: http
    namespace: msteams-digital-media
    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-broadcast-viewership-analytics.yml

Aggregates pending ServiceNow change requests related to arena IT systems for the weekly CAB review, saves a pre-read to SharePoint, and posts the agenda to the IT Operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow Arena IT Change Advisory Board
  description: Aggregates pending ServiceNow change requests related to arena IT systems for the weekly CAB review, saves a pre-read to SharePoint, and posts the agenda to the IT Operations Microsoft Teams channel.
  tags:
  - itsm
  - change-management
  - servicenow
  - sharepoint
  - microsoft-teams
  - cab
  - arena-operations
capability:
  exposes:
  - type: mcp
    namespace: arena-change-management
    port: 8080
    tools:
    - name: prepare-arena-cab-agenda
      description: Fetch all ServiceNow change requests in Scheduled state tagged for arena IT systems for the upcoming week, save a CAB pre-read to SharePoint, and post the agenda to IT Operations Teams.
      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 stored.
      steps:
      - name: get-pending-changes
        type: call
        call: servicenow-arena-cab.list-changes
        with:
          state: Scheduled
          category: arena_it
          cab_date: '{{cab_date}}'
      - name: save-preread
        type: call
        call: sharepoint-cab.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: ArenaCAB_PreRead_{{cab_date}}.csv
          content: '{{get-pending-changes.csv_data}}'
      - name: post-agenda
        type: call
        call: msteams-it-ops.post-channel-message
        with:
          channel_id: ITOperations
          text: 'Arena IT CAB pre-read ready for {{cab_date}}: {{get-pending-changes.change_count}} changes scheduled. Pre-read: {{save-preread.file_url}}'
  consumes:
  - type: http
    namespace: servicenow-arena-cab
    baseUri: https://nhl.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: category
        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-it-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 → servicenow-arena-it-change-advisory-board.yml

Queries Salesforce for sponsorship activation milestones, updates Snowflake tracking, and posts status to partnerships team.

naftiko: '0.5'
info:
  label: Sponsorship Activation Tracking
  description: Queries Salesforce for sponsorship activation milestones, updates Snowflake tracking, and posts status to partnerships team.
  tags:
  - sponsorship
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: sponsorship_activation_tracking
      description: Queries Salesforce for sponsorship activation milestones, updates Snowflake tracking, and posts status to partnerships team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Sponsorship Activation Tracking: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Sponsorship Activation Tracking for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → sponsorship-activation-tracking.yml

On a GitHub Actions deployment pipeline failure, creates a Jira bug in the Technology project, posts an alert to the Engineering Microsoft Teams channel, and opens a ServiceNow change request for rollback tracking.

naftiko: '0.5'
info:
  label: GitHub Actions Deployment Pipeline Failure
  description: On a GitHub Actions deployment pipeline failure, creates a Jira bug in the Technology project, posts an alert to the Engineering Microsoft Teams channel, and opens a ServiceNow change request for rollback tracking.
  tags:
  - devops
  - cicd
  - github
  - jira
  - servicenow
  - microsoft-teams
  - deployment
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-deployment-failure
      description: Given a GitHub Actions run failure on a production deployment workflow, create a Jira bug, post an alert to the Engineering Teams channel, and open a ServiceNow change request for rollback tracking.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: workflow_name
        in: body
        type: string
        description: Name of the failed GitHub Actions deployment workflow.
      - name: run_id
        in: body
        type: string
        description: GitHub Actions run ID for the failed deployment.
      - name: branch
        in: body
        type: string
        description: Branch on which the deployment failure occurred.
      steps:
      - name: create-jira-bug
        type: call
        call: jira-tech.create-issue
        with:
          project_key: TECH
          issuetype: Bug
          summary: '[Deploy Failure] {{repo}} / {{branch}} — {{workflow_name}}'
          description: 'Run ID: {{run_id}}

            Repo: {{repo}}

            Branch: {{branch}}'
      - name: open-change-request
        type: call
        call: servicenow-deploy.create-change
        with:
          short_description: 'Deployment failure rollback: {{repo}} / {{branch}}'
          category: deployment
          description: 'Jira: {{create-jira-bug.key}}'
      - name: notify-engineering
        type: call
        call: msteams-tech.post-channel-message
        with:
          channel_id: Engineering
          text: 'Deployment failure: {{workflow_name}} on {{branch}} in {{repo}}. Jira: {{create-jira-bug.key}} | SNOW: {{open-change-request.number}}'
  consumes:
  - type: http
    namespace: jira-tech
    baseUri: https://nhl.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: servicenow-deploy
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: msteams-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 → github-actions-deployment-pipeline-failure.yml

Tracks player contract expiry dates in Snowflake, creates Jira tracking tasks, and notifies hockey operations.

naftiko: '0.5'
info:
  label: Player Contract Expiry Tracking
  description: Tracks player contract expiry dates in Snowflake, creates Jira tracking tasks, and notifies hockey operations.
  tags:
  - hockey-ops
  - contracts
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: player_contract_expiry_tracking
      description: Tracks player contract expiry dates in Snowflake, creates Jira tracking tasks, and notifies hockey operations.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Player Contract Expiry Tracking: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Player Contract Expiry Tracking for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → player-contract-expiry-tracking.yml

Retrieves an employee time off balance from Workday.

naftiko: '0.5'
info:
  label: Workday Time Off Balance Lookup
  description: Retrieves an employee time off balance from Workday.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: workday_time_off_balance_lookup
      description: Retrieves an employee time off balance from Workday.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-workday
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → workday-time-off-balance-lookup.yml

Fetches approved game highlight clips from SharePoint media storage, publishes them to the Meta (YouTube/Facebook) platform, and logs distribution metadata to Snowflake for rights management.

naftiko: '0.5'
info:
  label: Broadcast Content Highlight Publisher
  description: Fetches approved game highlight clips from SharePoint media storage, publishes them to the Meta (YouTube/Facebook) platform, and logs distribution metadata to Snowflake for rights management.
  tags:
  - media
  - broadcast
  - sharepoint
  - meta
  - snowflake
  - content-distribution
  - highlights
capability:
  exposes:
  - type: mcp
    namespace: media-distribution
    port: 8080
    tools:
    - name: publish-game-highlights
      description: Given a SharePoint document library item ID for an approved highlight clip and a Meta page ID, publish the video to Meta, and log the distribution to Snowflake for broadcast rights tracking.
      inputParameters:
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the highlight clip is stored.
      - name: media_item_id
        in: body
        type: string
        description: SharePoint drive item ID for the video clip.
      - name: meta_page_id
        in: body
        type: string
        description: Meta (Facebook) page ID to publish the video to.
      - name: game_id
        in: body
        type: string
        description: NHL game ID associated with the highlights.
      steps:
      - name: get-video-url
        type: call
        call: sharepoint-media.get-file-url
        with:
          site_id: '{{sharepoint_site_id}}'
          item_id: '{{media_item_id}}'
      - name: publish-to-meta
        type: call
        call: meta-video.create-video-post
        with:
          page_id: '{{meta_page_id}}'
          file_url: '{{get-video-url.download_url}}'
      - name: log-distribution
        type: call
        call: snowflake-media.insert-record
        with:
          table: MEDIA.BROADCAST_DISTRIBUTIONS
          game_id: '{{game_id}}'
          meta_video_id: '{{publish-to-meta.video_id}}'
          published_at: '{{publish-to-meta.published_at}}'
  consumes:
  - type: http
    namespace: sharepoint-media
    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}}
      inputParameters:
      - name: site_id
        in: path
      - name: item_id
        in: path
      operations:
      - name: get-file-url
        method: GET
  - type: http
    namespace: meta-video
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: video-posts
      path: /{{page_id}}/videos
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-video-post
        method: POST
  - type: http
    namespace: snowflake-media
    baseUri: https://nhl.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 → broadcast-content-highlight-publisher.yml

Retrieves cost data for an Azure resource group.

naftiko: '0.5'
info:
  label: Azure Resource Cost Lookup
  description: Retrieves cost data for an Azure resource group.
  tags:
  - cloud
  - azure
  - finops
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: azure_resource_cost_lookup
      description: Retrieves cost data for an Azure resource group.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-azure
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → azure-resource-cost-lookup.yml

Triggers a refresh on a Power BI dataset for league reporting.

naftiko: '0.5'
info:
  label: Power BI Dataset Refresh Trigger
  description: Triggers a refresh on a Power BI dataset for league reporting.
  tags:
  - reporting
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: power_bi_dataset_refresh_trigger
      description: Triggers a refresh on a Power BI dataset for league reporting.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-power
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → power-bi-dataset-refresh-trigger.yml

Retrieves the current status of a Datadog monitor for streaming infrastructure.

naftiko: '0.5'
info:
  label: Datadog Monitor Status Lookup
  description: Retrieves the current status of a Datadog monitor for streaming infrastructure.
  tags:
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: datadog_monitor_status_lookup
      description: Retrieves the current status of a Datadog monitor for streaming infrastructure.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-datadog
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → datadog-monitor-status-lookup.yml

Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR.

naftiko: '0.5'
info:
  label: Workday Annual Review Cycle Launch
  description: Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR.
  tags:
  - hr
  - performance
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: workday_annual_review_cycle_launch
      description: Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Workday Annual Review Cycle Launch: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Workday Annual Review Cycle Launch for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → workday-annual-review-cycle-launch.yml

When Splunk detects a security event, creates ServiceNow incident, queries Okta for context, and alerts SOC.

naftiko: '0.5'
info:
  label: Security Incident Escalation Workflow
  description: When Splunk detects a security event, creates ServiceNow incident, queries Okta for context, and alerts SOC.
  tags:
  - security
  - splunk
  - servicenow
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: security_incident_escalation_workflow
      description: When Splunk detects a security event, creates ServiceNow incident, queries Okta for context, and alerts SOC.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Security Incident Escalation Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Security Incident Escalation Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → security-incident-escalation-workflow.yml

When Datadog detects API rate limit approaching, creates a ServiceNow incident and notifies the platform team.

naftiko: '0.5'
info:
  label: NHL API Rate Limit Alert
  description: When Datadog detects API rate limit approaching, creates a ServiceNow incident and notifies the platform team.
  tags:
  - devops
  - api
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: nhl_api_rate_limit_alert
      description: When Datadog detects API rate limit approaching, creates a ServiceNow incident and notifies the platform team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'NHL API Rate Limit Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'NHL API Rate Limit Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → nhl-api-rate-limit-alert.yml

When a fan data access request is received, queries Snowflake for records, creates Jira task, and notifies legal.

naftiko: '0.5'
info:
  label: Data Privacy Access Request Workflow
  description: When a fan data access request is received, queries Snowflake for records, creates Jira task, and notifies legal.
  tags:
  - privacy
  - compliance
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: data_privacy_access_request_workflow
      description: When a fan data access request is received, queries Snowflake for records, creates Jira task, and notifies legal.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data Privacy Access Request Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Data Privacy Access Request Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → data-privacy-access-request-workflow.yml

Queries Snowflake for demand and pricing data, generates optimization recommendations, and posts to revenue team.

naftiko: '0.5'
info:
  label: Ticket Pricing Optimization Report
  description: Queries Snowflake for demand and pricing data, generates optimization recommendations, and posts to revenue team.
  tags:
  - ticketing
  - pricing
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: ticket_pricing_optimization_report
      description: Queries Snowflake for demand and pricing data, generates optimization recommendations, and posts to revenue team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Ticket Pricing Optimization Report: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Ticket Pricing Optimization Report for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ticket-pricing-optimization-report.yml

Fetches submitted SAP Concur expense reports for a game or event travel period, aggregates totals by team and cost center, and posts a travel expense summary to the Finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SAP Concur Game Day Travel Expense Summary
  description: Fetches submitted SAP Concur expense reports for a game or event travel period, aggregates totals by team and cost center, and posts a travel expense summary to the Finance Microsoft Teams channel.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
  - travel
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: travel-expense-reporting
    port: 8080
    tools:
    - name: summarize-game-travel-expenses
      description: Given a travel period date range and team code, fetch SAP Concur expense reports, aggregate totals by category, and post a travel expense summary to the Finance Teams channel.
      inputParameters:
      - name: period_start
        in: body
        type: string
        description: Start of the travel expense period in ISO 8601 format.
      - name: period_end
        in: body
        type: string
        description: End of the travel expense period in ISO 8601 format.
      - name: team_code
        in: body
        type: string
        description: Team or department cost center code to filter expenses by.
      steps:
      - name: get-expense-reports
        type: call
        call: sap-concur-travel.list-reports
        with:
          start_date: '{{period_start}}'
          end_date: '{{period_end}}'
          cost_center: '{{team_code}}'
      - name: post-summary
        type: call
        call: msteams-finance.post-channel-message
        with:
          channel_id: Finance
          text: 'Game travel expenses for {{team_code}} ({{period_start}} to {{period_end}}): ${{get-expense-reports.total_amount}} across {{get-expense-reports.report_count}} reports. Pending approval: {{get-expense-reports.pending_count}}'
  consumes:
  - type: http
    namespace: sap-concur-travel
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports
      inputParameters:
      - name: start_date
        in: query
      - name: end_date
        in: query
      - name: cost_center
        in: query
      operations:
      - name: list-reports
        method: GET
  - type: http
    namespace: msteams-finance
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{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-game-day-travel-expense-summary.yml

Triggers a Power BI dataset refresh for the NHL executive scorecard dashboard, and posts refresh completion status to the Business Intelligence Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Power BI Executive Scorecard Refresh
  description: Triggers a Power BI dataset refresh for the NHL executive scorecard dashboard, and posts refresh completion status to the Business Intelligence Microsoft Teams channel.
  tags:
  - data
  - analytics
  - power-bi
  - microsoft-teams
  - executive-reporting
  - bi
capability:
  exposes:
  - type: mcp
    namespace: executive-reporting
    port: 8080
    tools:
    - name: refresh-executive-scorecard
      description: Given a Power BI dataset ID for the NHL executive scorecard, trigger a dataset refresh and post the result to the BusinessIntelligence Teams channel.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID for the NHL executive scorecard.
      - name: scorecard_name
        in: body
        type: string
        description: Human-readable scorecard name for the Teams notification.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi-exec.trigger-refresh
        with:
          dataset_id: '{{dataset_id}}'
      - name: notify-bi
        type: call
        call: msteams-exec.post-channel-message
        with:
          channel_id: BusinessIntelligence
          text: 'Executive scorecard refresh triggered: {{scorecard_name}} ({{dataset_id}}). Request ID: {{trigger-refresh.request_id}}'
  consumes:
  - type: http
    namespace: powerbi-exec
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
  - type: http
    namespace: msteams-exec
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-executive-scorecard-refresh.yml

Coordinates arena emergency drills by pulling staff lists from Workday, creating Jira tasks, and notifying teams.

naftiko: '0.5'
info:
  label: Arena Emergency Response Drill
  description: Coordinates arena emergency drills by pulling staff lists from Workday, creating Jira tasks, and notifying teams.
  tags:
  - arena
  - emergency
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_emergency_response_drill
      description: Coordinates arena emergency drills by pulling staff lists from Workday, creating Jira tasks, and notifying teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Emergency Response Drill: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Emergency Response Drill for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-emergency-response-drill.yml

Retrieves a Jira issue by key, returning summary, status, and assignee.

naftiko: '0.5'
info:
  label: Jira Issue Lookup
  description: Retrieves a Jira issue by key, returning summary, status, and assignee.
  tags:
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: jira_issue_lookup
      description: Retrieves a Jira issue by key, returning summary, status, and assignee.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-jira
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → jira-issue-lookup.yml

When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR via Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding Workflow
  description: When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: employee_offboarding_workflow
      description: When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR via Teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Employee Offboarding Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Employee Offboarding Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → employee-offboarding-workflow.yml

When an arena security incident occurs, creates a ServiceNow P1 incident and notifies security operations via Teams.

naftiko: '0.5'
info:
  label: Arena Security Incident Response
  description: When an arena security incident occurs, creates a ServiceNow P1 incident and notifies security operations via Teams.
  tags:
  - security
  - arena
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_security_incident_response
      description: When an arena security incident occurs, creates a ServiceNow P1 incident and notifies security operations via Teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Security Incident Response: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Security Incident Response for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-security-incident-response.yml

Searches SharePoint for documents matching a keyword query.

naftiko: '0.5'
info:
  label: SharePoint Document Search
  description: Searches SharePoint for documents matching a keyword query.
  tags:
  - collaboration
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: sharepoint_document_search
      description: Searches SharePoint for documents matching a keyword query.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-sharepoint
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sharepoint-document-search.yml

Pulls financial and operational data from Snowflake, refreshes Power BI dashboards, and notifies the business analytics team.

naftiko: '0.5'
info:
  label: Franchise Valuation Data Preparation
  description: Pulls financial and operational data from Snowflake, refreshes Power BI dashboards, and notifies the business analytics team.
  tags:
  - finance
  - analytics
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: franchise_valuation_data_preparation
      description: Pulls financial and operational data from Snowflake, refreshes Power BI dashboards, and notifies the business analytics team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Franchise Valuation Data Preparation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Franchise Valuation Data Preparation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → franchise-valuation-data-preparation.yml

Queries Snowflake for current payroll data, validates against cap limits, and posts compliance report to hockey ops.

naftiko: '0.5'
info:
  label: Salary Cap Compliance Check
  description: Queries Snowflake for current payroll data, validates against cap limits, and posts compliance report to hockey ops.
  tags:
  - hockey-ops
  - salary-cap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: salary_cap_compliance_check
      description: Queries Snowflake for current payroll data, validates against cap limits, and posts compliance report to hockey ops.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Salary Cap Compliance Check: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Salary Cap Compliance Check for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salary-cap-compliance-check.yml

Monitors Datadog for error rate or latency anomalies on the NHL.tv streaming platform during live games, triggers a PagerDuty on-call alert, and posts diagnostics to the Broadcast Operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Datadog NHL.tv Streaming Platform Monitor
  description: Monitors Datadog for error rate or latency anomalies on the NHL.tv streaming platform during live games, triggers a PagerDuty on-call alert, and posts diagnostics to the Broadcast Operations Microsoft Teams channel.
  tags:
  - observability
  - broadcast
  - datadog
  - pagerduty
  - microsoft-teams
  - streaming
  - reliability
capability:
  exposes:
  - type: mcp
    namespace: streaming-reliability
    port: 8080
    tools:
    - name: handle-streaming-anomaly
      description: Given a Datadog monitor ID detecting an NHL.tv streaming anomaly, fetch monitor details, page the broadcast on-call team via PagerDuty, and post diagnostics to the BroadcastOps Teams channel.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Datadog monitor ID that detected the streaming anomaly.
      - name: game_id
        in: body
        type: string
        description: NHL game ID that was streaming when the anomaly occurred.
      - name: pagerduty_service_id
        in: body
        type: string
        description: PagerDuty service ID for the broadcast on-call team.
      steps:
      - name: get-monitor
        type: call
        call: datadog-streaming.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: page-oncall
        type: call
        call: pagerduty-streaming.create-incident
        with:
          service_id: '{{pagerduty_service_id}}'
          title: 'NHL.tv streaming anomaly during game {{game_id}}: {{get-monitor.name}}'
          description: 'Monitor value: {{get-monitor.current_value}} | Threshold: {{get-monitor.threshold}}'
      - name: notify-broadcast
        type: call
        call: msteams-stream.post-channel-message
        with:
          channel_id: BroadcastOps
          text: 'Streaming alert: Game {{game_id}} | {{get-monitor.name}} at {{get-monitor.current_value}} (threshold {{get-monitor.threshold}}). PD: {{page-oncall.incident_id}}'
  consumes:
  - type: http
    namespace: datadog-streaming
    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-streaming
    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-stream
    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-nhl-tv-streaming-platform-monitor.yml

Queries Okta for users with access to media production and broadcast applications, generates an access review report in SharePoint, and posts a compliance reminder to the IT Security Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Okta User Access Review for Media Systems
  description: Queries Okta for users with access to media production and broadcast applications, generates an access review report in SharePoint, and posts a compliance reminder to the IT Security Microsoft Teams channel.
  tags:
  - security
  - identity
  - okta
  - sharepoint
  - microsoft-teams
  - access-review
  - media-systems
capability:
  exposes:
  - type: mcp
    namespace: media-access-review
    port: 8080
    tools:
    - name: review-media-system-access
      description: Query Okta for all users assigned to the media production application group, export the access list to SharePoint for review, and post a compliance reminder to the ITSecurity Teams channel.
      inputParameters:
      - name: app_group_name
        in: body
        type: string
        description: Okta application group name for the media production system to review.
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID for storing the access review report.
      steps:
      - name: get-group-members
        type: call
        call: okta-media.list-group-members
        with:
          group_name: '{{app_group_name}}'
      - name: export-report
        type: call
        call: sharepoint-access.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          file_name: MediaAccessReview_{{app_group_name}}.csv
          content: '{{get-group-members.csv_data}}'
      - name: notify-it-security
        type: call
        call: msteams-itsec.post-channel-message
        with:
          channel_id: ITSecurity
          text: 'Media access review: {{get-group-members.member_count}} users in {{app_group_name}}. Review report: {{export-report.file_url}}'
  consumes:
  - type: http
    namespace: okta-media
    baseUri: https://nhl.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: list-group-members
        method: GET
  - type: http
    namespace: sharepoint-access
    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-itsec
    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-user-access-review-for-media-systems.yml

Retrieves season ticket holder details from Salesforce by account ID.

naftiko: '0.5'
info:
  label: Salesforce Ticket Holder Lookup
  description: Retrieves season ticket holder details from Salesforce by account ID.
  tags:
  - ticketing
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: salesforce_ticket_holder_lookup
      description: Retrieves season ticket holder details from Salesforce by account ID.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-salesforce
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → salesforce-ticket-holder-lookup.yml

When a vendor contract nears expiry, creates a Jira procurement task, notifies the business team, and logs in Snowflake.

naftiko: '0.5'
info:
  label: Vendor Contract Renewal Workflow
  description: When a vendor contract nears expiry, creates a Jira procurement task, notifies the business team, and logs in Snowflake.
  tags:
  - procurement
  - jira
  - microsoft-teams
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: vendor_contract_renewal_workflow
      description: When a vendor contract nears expiry, creates a Jira procurement task, notifies the business team, and logs in Snowflake.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vendor Contract Renewal Workflow: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Vendor Contract Renewal Workflow for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → vendor-contract-renewal-workflow.yml

Executes a Splunk search against broadcast and streaming system logs.

naftiko: '0.5'
info:
  label: Splunk Log Search
  description: Executes a Splunk search against broadcast and streaming system logs.
  tags:
  - observability
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: splunk_log_search
      description: Executes a Splunk search against broadcast and streaming system logs.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-splunk
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → splunk-log-search.yml

Queries Workday for incomplete benefits enrollments and sends reminders via Teams.

naftiko: '0.5'
info:
  label: Workday Benefits Enrollment Reminder
  description: Queries Workday for incomplete benefits enrollments and sends reminders via Teams.
  tags:
  - hr
  - benefits
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: workday_benefits_enrollment_reminder
      description: Queries Workday for incomplete benefits enrollments and sends reminders via Teams.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Workday Benefits Enrollment Reminder: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Workday Benefits Enrollment Reminder for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → workday-benefits-enrollment-reminder.yml

Queries Snowflake for arena energy and waste metrics, generates sustainability report, and posts to leadership.

naftiko: '0.5'
info:
  label: Arena Sustainability Metrics Report
  description: Queries Snowflake for arena energy and waste metrics, generates sustainability report, and posts to leadership.
  tags:
  - sustainability
  - arena
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_sustainability_metrics_report
      description: Queries Snowflake for arena energy and waste metrics, generates sustainability report, and posts to leadership.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Sustainability Metrics Report: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Sustainability Metrics Report for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-sustainability-metrics-report.yml

Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team.

naftiko: '0.5'
info:
  label: LinkedIn Talent Acquisition Campaign
  description: Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team.
  tags:
  - hr
  - talent-acquisition
  - workday
  - linkedin
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: linkedin_talent_acquisition_campaign
      description: Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'LinkedIn Talent Acquisition Campaign: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'LinkedIn Talent Acquisition Campaign for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-talent-acquisition-campaign.yml

Aggregates social media engagement metrics from LinkedIn and Meta for a given campaign period, stores the results in Snowflake, and posts a digest to the Fan Engagement Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Fan Engagement Campaign Digest
  description: Aggregates social media engagement metrics from LinkedIn and Meta for a given campaign period, stores the results in Snowflake, and posts a digest to the Fan Engagement Microsoft Teams channel.
  tags:
  - marketing
  - fan-engagement
  - linkedin
  - meta
  - snowflake
  - microsoft-teams
  - campaign-analytics
capability:
  exposes:
  - type: mcp
    namespace: fan-engagement-reporting
    port: 8080
    tools:
    - name: digest-campaign-engagement
      description: Given a campaign date range and LinkedIn organization ID and Meta page ID, fetch engagement metrics from both platforms, store aggregated metrics in Snowflake, and post a campaign digest to the FanEngagement Teams channel.
      inputParameters:
      - name: campaign_start
        in: body
        type: string
        description: Campaign start date in ISO 8601 format.
      - name: campaign_end
        in: body
        type: string
        description: Campaign end date in ISO 8601 format.
      - name: linkedin_org_id
        in: body
        type: string
        description: LinkedIn organization ID to pull engagement metrics for.
      - name: meta_page_id
        in: body
        type: string
        description: Meta Page ID to pull engagement metrics for.
      steps:
      - name: get-linkedin-analytics
        type: call
        call: linkedin-analytics.get-org-analytics
        with:
          organization_id: '{{linkedin_org_id}}'
          start_date: '{{campaign_start}}'
          end_date: '{{campaign_end}}'
      - name: get-meta-insights
        type: call
        call: meta-analytics.get-page-insights
        with:
          page_id: '{{meta_page_id}}'
          since: '{{campaign_start}}'
          until: '{{campaign_end}}'
      - name: store-metrics
        type: call
        call: snowflake-engagement.insert-record
        with:
          table: MARKETING.CAMPAIGN_METRICS
          linkedin_impressions: '{{get-linkedin-analytics.impressions}}'
          meta_reach: '{{get-meta-insights.reach}}'
          period_start: '{{campaign_start}}'
          period_end: '{{campaign_end}}'
      - name: post-digest
        type: call
        call: msteams-faneng.post-channel-message
        with:
          channel_id: FanEngagement
          text: 'Campaign digest {{campaign_start}} to {{campaign_end}}: LinkedIn impressions {{get-linkedin-analytics.impressions}} | Meta reach {{get-meta-insights.reach}} | Logged to Snowflake.'
  consumes:
  - type: http
    namespace: linkedin-analytics
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: org-analytics
      path: /organizationalEntityShareStatistics
      inputParameters:
      - name: organization_id
        in: query
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-org-analytics
        method: GET
  - type: http
    namespace: meta-analytics
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: page-insights
      path: /{{page_id}}/insights
      inputParameters:
      - name: page_id
        in: path
      - name: since
        in: query
      - name: until
        in: query
      operations:
      - name: get-page-insights
        method: GET
  - type: http
    namespace: snowflake-engagement
    baseUri: https://nhl.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-faneng
    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 → fan-engagement-campaign-digest.yml

Queries Snowflake for season ticket sales metrics by team and market, computes week-over-week variance, and posts the digest to the Ticket Sales Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Ticket Sales Performance Digest
  description: Queries Snowflake for season ticket sales metrics by team and market, computes week-over-week variance, and posts the digest to the Ticket Sales Microsoft Teams channel.
  tags:
  - sales
  - ticketing
  - snowflake
  - microsoft-teams
  - reporting
  - revenue
capability:
  exposes:
  - type: mcp
    namespace: ticketing-reporting
    port: 8080
    tools:
    - name: digest-ticket-sales
      description: Given a reporting week and team filter, query Snowflake for ticket sales metrics, calculate week-over-week variance, and post the digest to the TicketSales Teams channel.
      inputParameters:
      - name: week_ending
        in: body
        type: string
        description: End date of the reporting week in ISO 8601 format.
      - name: team_filter
        in: body
        type: string
        description: Team abbreviation to filter results by, or 'ALL' for league-wide.
      steps:
      - name: query-sales-metrics
        type: call
        call: snowflake-tickets.run-sales-query
        with:
          week_ending: '{{week_ending}}'
          team: '{{team_filter}}'
      - name: post-digest
        type: call
        call: msteams-sales.post-channel-message
        with:
          channel_id: TicketSales
          text: 'Ticket sales digest week ending {{week_ending}} ({{team_filter}}): ${{query-sales-metrics.total_revenue}} revenue | {{query-sales-metrics.tickets_sold}} tickets | WoW change: {{query-sales-metrics.wow_variance}}%'
  consumes:
  - type: http
    namespace: snowflake-tickets
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: week_ending
        in: query
      - name: team
        in: query
      operations:
      - name: run-sales-query
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ticket-sales-performance-digest.yml

When CDN performance degrades, creates ServiceNow incident and alerts the streaming infrastructure team.

naftiko: '0.5'
info:
  label: Content Delivery Network Performance Alert
  description: When CDN performance degrades, creates ServiceNow incident and alerts the streaming infrastructure team.
  tags:
  - streaming
  - cdn
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: content_delivery_network_performance_alert
      description: When CDN performance degrades, creates ServiceNow incident and alerts the streaming infrastructure team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Content Delivery Network Performance Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Content Delivery Network Performance Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → content-delivery-network-performance-alert.yml

Uses Anthropic Claude to analyze fan sentiment from social media data in Snowflake and posts insights to marketing.

naftiko: '0.5'
info:
  label: AI-Assisted Fan Sentiment Analysis
  description: Uses Anthropic Claude to analyze fan sentiment from social media data in Snowflake and posts insights to marketing.
  tags:
  - marketing
  - anthropic
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: ai_assisted_fan_sentiment_analysis
      description: Uses Anthropic Claude to analyze fan sentiment from social media data in Snowflake and posts insights to marketing.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'AI-Assisted Fan Sentiment Analysis: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'AI-Assisted Fan Sentiment Analysis for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ai-assisted-fan-sentiment-analysis.yml

On game day, fetches live game highlights from the NHL stats API, publishes posts to LinkedIn and the Meta Graph API, and logs publication metadata to Snowflake for campaign analytics.

naftiko: '0.5'
info:
  label: Game Day Social Media Publisher
  description: On game day, fetches live game highlights from the NHL stats API, publishes posts to LinkedIn and the Meta Graph API, and logs publication metadata to Snowflake for campaign analytics.
  tags:
  - marketing
  - social-media
  - linkedin
  - meta
  - snowflake
  - game-day
  - fan-engagement
capability:
  exposes:
  - type: mcp
    namespace: social-publishing
    port: 8080
    tools:
    - name: publish-game-day-content
      description: Given an NHL game ID and approved content text, publish the game day post to LinkedIn and Meta (Facebook/Instagram), then log the publication details to Snowflake for campaign tracking.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: NHL game identifier, e.g. '2025020001'.
      - name: content_text
        in: body
        type: string
        description: Approved game day social media post content.
      - name: linkedin_org_id
        in: body
        type: string
        description: LinkedIn organization ID to publish the post to.
      - name: meta_page_id
        in: body
        type: string
        description: Meta (Facebook) Page ID to publish the post to.
      steps:
      - name: publish-linkedin
        type: call
        call: linkedin.create-share
        with:
          organization_id: '{{linkedin_org_id}}'
          text: '{{content_text}}'
      - name: publish-meta
        type: call
        call: meta.create-page-post
        with:
          page_id: '{{meta_page_id}}'
          message: '{{content_text}}'
      - name: log-publications
        type: call
        call: snowflake-social.insert-record
        with:
          table: MARKETING.SOCIAL_PUBLICATIONS
          game_id: '{{game_id}}'
          linkedin_post_id: '{{publish-linkedin.post_id}}'
          meta_post_id: '{{publish-meta.post_id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: shares
      path: /ugcPosts
      operations:
      - name: create-share
        method: POST
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: page-posts
      path: /{{page_id}}/feed
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-page-post
        method: POST
  - type: http
    namespace: snowflake-social
    baseUri: https://nhl.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 → game-day-social-media-publisher.yml

Fetches draft prospect scouting reports from SharePoint, summarizes them with Anthropic Claude, publishes a digest to the Hockey Operations Microsoft Teams channel, and logs the output to Snowflake.

naftiko: '0.5'
info:
  label: NHL Draft Prospect Scouting Report Publisher
  description: Fetches draft prospect scouting reports from SharePoint, summarizes them with Anthropic Claude, publishes a digest to the Hockey Operations Microsoft Teams channel, and logs the output to Snowflake.
  tags:
  - ai
  - hockey-operations
  - anthropic
  - sharepoint
  - snowflake
  - microsoft-teams
  - scouting
capability:
  exposes:
  - type: mcp
    namespace: hockey-ops-ai
    port: 8080
    tools:
    - name: summarize-prospect-reports
      description: Given a SharePoint folder containing draft prospect scouting reports and a prospect name, fetch the report, summarize with Anthropic Claude, post to Hockey Operations Teams channel, and log to Snowflake.
      inputParameters:
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where scouting reports are stored.
      - name: report_item_id
        in: body
        type: string
        description: SharePoint drive item ID for the scouting report document.
      - name: prospect_name
        in: body
        type: string
        description: Prospect player name for logging and notification context.
      steps:
      - name: fetch-report
        type: call
        call: sharepoint-scouting.get-file-content
        with:
          site_id: '{{sharepoint_site_id}}'
          item_id: '{{report_item_id}}'
      - name: summarize-report
        type: call
        call: anthropic-scouting.create-message
        with:
          model: claude-opus-4-5
          content: 'Summarize this NHL draft prospect scouting report into 3 key strengths, 2 areas for development, and an overall grade: {{fetch-report.text_content}}'
      - name: log-to-snowflake
        type: call
        call: snowflake-scouting.insert-record
        with:
          table: HOCKEY_OPS.PROSPECT_SUMMARIES
          prospect_name: '{{prospect_name}}'
          summary: '{{summarize-report.content}}'
      - name: post-to-hockey-ops
        type: call
        call: msteams-hockey-ops.post-channel-message
        with:
          channel_id: HockeyOperations
          text: 'Prospect summary for {{prospect_name}}: {{summarize-report.content}}'
  consumes:
  - type: http
    namespace: sharepoint-scouting
    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-scouting
    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-scouting
    baseUri: https://nhl.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-hockey-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 → nhl-draft-prospect-scouting-report-publisher.yml

Queries Snowflake for ticket holder engagement patterns, generates churn risk scores, and notifies the retention team.

naftiko: '0.5'
info:
  label: Season Ticket Holder Churn Prediction
  description: Queries Snowflake for ticket holder engagement patterns, generates churn risk scores, and notifies the retention team.
  tags:
  - ticketing
  - analytics
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: season_ticket_holder_churn_prediction
      description: Queries Snowflake for ticket holder engagement patterns, generates churn risk scores, and notifies the retention team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Season Ticket Holder Churn Prediction: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Season Ticket Holder Churn Prediction for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → season-ticket-holder-churn-prediction.yml

Coordinates quarterly close with Snowflake data validation, Power BI dashboard refresh, and finance notification.

naftiko: '0.5'
info:
  label: Quarterly Financial Close Orchestration
  description: Coordinates quarterly close with Snowflake data validation, Power BI dashboard refresh, and finance notification.
  tags:
  - finance
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: quarterly_financial_close_orchestration
      description: Coordinates quarterly close with Snowflake data validation, Power BI dashboard refresh, and finance notification.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Quarterly Financial Close Orchestration: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Quarterly Financial Close Orchestration for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → quarterly-financial-close-orchestration.yml

Queries Snowflake for broadcast viewership and ratings data by game.

naftiko: '0.5'
info:
  label: Snowflake Broadcast Ratings Query
  description: Queries Snowflake for broadcast viewership and ratings data by game.
  tags:
  - broadcast
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: snowflake_broadcast_ratings_query
      description: Queries Snowflake for broadcast viewership and ratings data by game.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-snowflake
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-broadcast-ratings-query.yml

Queries Snowflake for concession sales data per arena, refreshes Power BI dashboard, and posts digest.

naftiko: '0.5'
info:
  label: Arena Concession Sales Digest
  description: Queries Snowflake for concession sales data per arena, refreshes Power BI dashboard, and posts digest.
  tags:
  - arena
  - revenue
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: arena_concession_sales_digest
      description: Queries Snowflake for concession sales data per arena, refreshes Power BI dashboard, and posts digest.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Arena Concession Sales Digest: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Arena Concession Sales Digest for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → arena-concession-sales-digest.yml

Launches the annual performance review cycle in Workday, sends review initiation notifications to all active employees via Microsoft Teams, and creates a Jira project board for HR to track the review cycle milestones.

naftiko: '0.5'
info:
  label: Workday Performance Review Cycle Launch
  description: Launches the annual performance review cycle in Workday, sends review initiation notifications to all active employees via Microsoft Teams, and creates a Jira project board for HR to track the review cycle milestones.
  tags:
  - hr
  - performance-management
  - workday
  - microsoft-teams
  - jira
  - review-cycle
capability:
  exposes:
  - type: mcp
    namespace: performance-reviews
    port: 8080
    tools:
    - name: launch-performance-review-cycle
      description: Given a Workday review cycle ID and deadline date, activate the review cycle, notify all active employees via Teams, and create a Jira HR board for tracking review cycle milestones.
      inputParameters:
      - name: review_cycle_id
        in: body
        type: string
        description: Workday performance review cycle identifier to launch.
      - name: deadline_date
        in: body
        type: string
        description: Review submission deadline date in ISO 8601 format.
      steps:
      - name: launch-cycle
        type: call
        call: workday-reviews.launch-review-cycle
        with:
          cycle_id: '{{review_cycle_id}}'
      - name: create-jira-board
        type: call
        call: jira-hr.create-issue
        with:
          project_key: HR
          issuetype: Epic
          summary: Performance Review Cycle {{review_cycle_id}} — Due {{deadline_date}}
          description: 'Review cycle launched in Workday. Deadline: {{deadline_date}}'
      - name: notify-employees
        type: call
        call: msteams-reviews.post-channel-message
        with:
          channel_id: AllNHL
          text: 'Performance review cycle launched! Complete your reviews by {{deadline_date}}. Access via Workday. Tracking: Jira {{create-jira-board.key}}'
  consumes:
  - type: http
    namespace: workday-reviews
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: review-cycles
      path: /nhl/performanceReviewCycles/{{cycle_id}}
      inputParameters:
      - name: cycle_id
        in: path
      operations:
      - name: launch-review-cycle
        method: POST
  - type: http
    namespace: jira-hr
    baseUri: https://nhl.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-reviews
    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 → workday-performance-review-cycle-launch.yml

When a Snowflake ETL pipeline fails, creates a Jira ticket and notifies the data engineering team.

naftiko: '0.5'
info:
  label: Data Pipeline Failure Recovery
  description: When a Snowflake ETL pipeline fails, creates a Jira ticket and notifies the data engineering team.
  tags:
  - data-engineering
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: data_pipeline_failure_recovery
      description: When a Snowflake ETL pipeline fails, creates a Jira ticket and notifies the data engineering team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data Pipeline Failure Recovery: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Data Pipeline Failure Recovery for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → data-pipeline-failure-recovery.yml

Retrieves a Confluence wiki page by ID for league documentation.

naftiko: '0.5'
info:
  label: Confluence Page Lookup
  description: Retrieves a Confluence wiki page by ID for league documentation.
  tags:
  - collaboration
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: confluence_page_lookup
      description: Retrieves a Confluence wiki page by ID for league documentation.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-confluence
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → confluence-page-lookup.yml

When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security.

naftiko: '0.5'
info:
  label: IT Security Vulnerability Remediation
  description: When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security.
  tags:
  - security
  - github
  - jira
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: it_security_vulnerability_remediation
      description: When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'IT Security Vulnerability Remediation: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'IT Security Vulnerability Remediation for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → it-security-vulnerability-remediation.yml

Uses Anthropic Claude to analyze game event data from Snowflake and generate highlight recommendations for the content team.

naftiko: '0.5'
info:
  label: AI-Assisted Game Highlight Tagging
  description: Uses Anthropic Claude to analyze game event data from Snowflake and generate highlight recommendations for the content team.
  tags:
  - content
  - anthropic
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: ai_assisted_game_highlight_tagging
      description: Uses Anthropic Claude to analyze game event data from Snowflake and generate highlight recommendations for the content team.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'AI-Assisted Game Highlight Tagging: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'AI-Assisted Game Highlight Tagging for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ai-assisted-game-highlight-tagging.yml

When a P1 ServiceNow incident is raised for broadcast infrastructure (streaming platform or arena systems), pages the on-call engineer via PagerDuty and posts full context to the Broadcast Operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow P1 Broadcast Infrastructure Incident
  description: When a P1 ServiceNow incident is raised for broadcast infrastructure (streaming platform or arena systems), pages the on-call engineer via PagerDuty and posts full context to the Broadcast Operations Microsoft Teams channel.
  tags:
  - itsm
  - incident-response
  - servicenow
  - pagerduty
  - microsoft-teams
  - broadcast
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: broadcast-ops
    port: 8080
    tools:
    - name: escalate-broadcast-p1
      description: Given a ServiceNow P1 incident number for a broadcast infrastructure outage, trigger a PagerDuty alert to the broadcast on-call engineer and post full diagnostics to the BroadcastOps Teams channel.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow P1 incident number, e.g. INC0023456.
      - name: affected_system
        in: body
        type: string
        description: Name of the affected broadcast system, e.g. 'NHL.tv streaming platform'.
      - name: pagerduty_service_id
        in: body
        type: string
        description: PagerDuty service ID for the broadcast on-call team.
      steps:
      - name: get-incident
        type: call
        call: servicenow-broadcast.get-incident
        with:
          number: '{{incident_number}}'
      - name: trigger-pagerduty
        type: call
        call: pagerduty-broadcast.create-incident
        with:
          service_id: '{{pagerduty_service_id}}'
          title: 'P1: {{affected_system}} outage — {{incident_number}}'
          description: '{{get-incident.description}}'
      - name: notify-broadcast-ops
        type: call
        call: msteams-broadcast.post-channel-message
        with:
          channel_id: BroadcastOps
          text: 'P1 INCIDENT: {{affected_system}} | SNOW: {{incident_number}} | PD: {{trigger-pagerduty.incident_id}} | Description: {{get-incident.short_description}}'
  consumes:
  - type: http
    namespace: servicenow-broadcast
    baseUri: https://nhl.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-broadcast
    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-broadcast
    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-broadcast-infrastructure-incident.yml

Queries Workday for overdue training, creates ServiceNow compliance ticket, and notifies managers.

naftiko: '0.5'
info:
  label: Compliance Training Overdue Alert
  description: Queries Workday for overdue training, creates ServiceNow compliance ticket, and notifies managers.
  tags:
  - hr
  - compliance
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: compliance_training_overdue_alert
      description: Queries Workday for overdue training, creates ServiceNow compliance ticket, and notifies managers.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Compliance Training Overdue Alert: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Compliance Training Overdue Alert for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → compliance-training-overdue-alert.yml

Launches a fan engagement campaign by pulling segments from Snowflake, creating Salesforce campaigns, and notifying marketing.

naftiko: '0.5'
info:
  label: Fan Engagement Campaign Launch
  description: Launches a fan engagement campaign by pulling segments from Snowflake, creating Salesforce campaigns, and notifying marketing.
  tags:
  - marketing
  - fan-engagement
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: fan_engagement_campaign_launch
      description: Launches a fan engagement campaign by pulling segments from Snowflake, creating Salesforce campaigns, and notifying marketing.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary entity identifier.
      - name: context
        type: string
        description: Additional context for the workflow.
      steps:
      - name: gather-data
        type: call
        call: snowflake.run-query
        with:
          entity_id: '{{entity_id}}'
          context: '{{context}}'
      - name: create-action
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Fan Engagement Campaign Launch: {{entity_id}}'
          description: 'Data: {{gather-data.results}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.teams_ops_channel
          text: 'Fan Engagement Campaign Launch for {{entity_id}} | Action: {{create-action.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nhl.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: 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/ops/channels/{{channel_id}}/messages
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → fan-engagement-campaign-launch.yml

Fetches game statistics from Snowflake, sends them to Anthropic Claude to generate a natural-language game recap, and publishes the recap to the official NHL social channels via Meta and LinkedIn.

naftiko: '0.5'
info:
  label: Anthropic AI Game Recap Generator
  description: Fetches game statistics from Snowflake, sends them to Anthropic Claude to generate a natural-language game recap, and publishes the recap to the official NHL social channels via Meta and LinkedIn.
  tags:
  - ai
  - content
  - anthropic
  - snowflake
  - meta
  - linkedin
  - game-recap
  - fan-engagement
capability:
  exposes:
  - type: mcp
    namespace: ai-content
    port: 8080
    tools:
    - name: generate-game-recap
      description: Given an NHL game ID, fetch final stats from Snowflake, generate a natural-language game recap with Anthropic Claude, and publish the recap to Meta and LinkedIn.
      inputParameters:
      - name: game_id
        in: body
        type: string
        description: NHL game identifier for the completed game.
      - name: meta_page_id
        in: body
        type: string
        description: Meta Page ID to publish the recap to.
      - name: linkedin_org_id
        in: body
        type: string
        description: LinkedIn organization ID to publish the recap to.
      steps:
      - name: get-game-stats
        type: call
        call: snowflake-game.run-stats-query
        with:
          game_id: '{{game_id}}'
      - name: generate-recap
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          content: 'Write an engaging NHL game recap in 200 words based on these stats: {{get-game-stats.stats_json}}'
      - name: publish-meta
        type: call
        call: meta-recap.create-page-post
        with:
          page_id: '{{meta_page_id}}'
          message: '{{generate-recap.content}}'
      - name: publish-linkedin
        type: call
        call: linkedin-recap.create-share
        with:
          organization_id: '{{linkedin_org_id}}'
          text: '{{generate-recap.content}}'
  consumes:
  - type: http
    namespace: snowflake-game
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      inputParameters:
      - name: game_id
        in: query
      operations:
      - name: run-stats-query
        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: meta-recap
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: page-posts
      path: /{{page_id}}/feed
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-page-post
        method: POST
  - type: http
    namespace: linkedin-recap
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: shares
      path: /ugcPosts
      operations:
      - name: create-share
        method: POST
Open in Framework → View in Fleet → anthropic-ai-game-recap-generator.yml

Retrieves social media engagement metrics from Meta API for league content.

naftiko: '0.5'
info:
  label: Meta Social Media Metrics Lookup
  description: Retrieves social media engagement metrics from Meta API for league content.
  tags:
  - marketing
  - social-media
  - meta
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: meta_social_media_metrics_lookup
      description: Retrieves social media engagement metrics from Meta API for league content.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-meta
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → meta-social-media-metrics-lookup.yml

Retrieves an Okta user profile by email, returning status and last login.

naftiko: '0.5'
info:
  label: Okta User Status Lookup
  description: Retrieves an Okta user profile by email, returning status and last login.
  tags:
  - identity
  - okta
capability:
  exposes:
  - type: mcp
    namespace: nhl-ops
    port: 8080
    tools:
    - name: okta_user_status_lookup
      description: Retrieves an Okta user profile by email, returning status and last login.
      inputParameters:
      - name: entity_id
        type: string
        description: Primary identifier.
      call: primary.get-okta
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nhl.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sql-statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → okta-user-status-lookup.yml

Creates a new Terraform Cloud workspace for a project team, links it to the GitHub repository, and notifies the requesting team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Cloud Workspace Provisioner
  description: Creates a new Terraform Cloud workspace for a project team, links it to the GitHub repository, and notifies the requesting team in Microsoft Teams.
  tags:
  - cloud
  - infrastructure
  - terraform
  - github
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-provisioning
    port: 8080
    tools:
    - name: provision-terraform-workspace
      description: Given a project name, GitHub repository, and Terraform organization, create a new Terraform Cloud workspace linked to the repo and notify the requesting team in Teams. Use for new project infrastructure onboarding.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Name of the new Terraform Cloud workspace.
      - name: github_repo
        in: body
        type: string
        description: GitHub repository in owner/repo format to link to the workspace.
      - name: tf_organization
        in: body
        type: string
        description: Terraform Cloud organization name.
      - name: requester_upn
        in: body
        type: string
        description: UPN of the engineer requesting the workspace.
      steps:
      - name: create-workspace
        type: call
        call: terraform.create-workspace
        with:
          name: '{{workspace_name}}'
          organization: '{{tf_organization}}'
          github_repo: '{{github_repo}}'
      - name: notify-requester
        type: call
        call: msteams-tf.send-message
        with:
          recipient_upn: '{{requester_upn}}'
          text: Terraform workspace '{{workspace_name}}' has been provisioned and linked to {{github_repo}}.
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/{{organization}}/workspaces
      inputParameters:
      - name: organization
        in: path
      operations:
      - name: create-workspace
        method: POST
  - type: http
    namespace: msteams-tf
    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 → terraform-cloud-workspace-provisioner.yml

Schedules a Zoom meeting for an NBC production crew, creates a SharePoint folder for the production, and sends invites via Microsoft 365 calendar.

naftiko: '0.5'
info:
  label: Zoom Meeting Scheduler for Production Crews
  description: Schedules a Zoom meeting for an NBC production crew, creates a SharePoint folder for the production, and sends invites via Microsoft 365 calendar.
  tags:
  - communication
  - production
  - zoom
  - sharepoint
  - microsoft-365
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: schedule-production-meeting
      description: Given a production name, attendee list, and meeting datetime, schedule a Zoom meeting, create a SharePoint production folder, and send calendar invites. Use for coordinating production crews and pre-production planning.
      inputParameters:
      - name: production_name
        in: body
        type: string
        description: Name of the production or show.
      - name: meeting_start
        in: body
        type: string
        description: Meeting start time in ISO 8601 format.
      - name: duration_minutes
        in: body
        type: integer
        description: Duration of the meeting in minutes.
      - name: attendee_emails
        in: body
        type: string
        description: Comma-separated list of attendee email addresses.
      steps:
      - name: create-zoom-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: 'Production Kick-off: {{production_name}}'
          start_time: '{{meeting_start}}'
          duration: '{{duration_minutes}}'
      - name: create-sp-folder
        type: call
        call: sharepoint-prod.create-folder
        with:
          site_id: $secrets.productions_site_id
          folder_name: '{{production_name}}'
      - name: send-invite
        type: call
        call: msgraph-cal.create-event
        with:
          subject: 'Production: {{production_name}}'
          start: '{{meeting_start}}'
          join_url: '{{create-zoom-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: sharepoint-prod
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: folders
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: 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-meeting-scheduler-for-production-crews.yml

Invalidates CloudFront CDN cache for content URLs and notifies the platform Slack channel.

naftiko: '0.5'
info:
  label: AWS CloudFront Cache Invalidation
  description: Invalidates CloudFront CDN cache for content URLs and notifies the platform Slack channel.
  tags:
  - infrastructure
  - cdn
  - aws
  - slack
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: invalidate-cdn-cache
      description: Invalidate CloudFront paths and notify Slack.
      inputParameters:
      - name: distribution_id
        in: body
        type: string
        description: CloudFront distribution ID.
      - name: paths
        in: body
        type: string
        description: Paths to invalidate.
      steps:
      - name: create-invalidation
        type: call
        call: cloudfront.create-invalidation
        with:
          distribution_id: '{{distribution_id}}'
          paths: '{{paths}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: platform-ops
          text: 'CDN invalidation created for {{distribution_id}}: {{paths}}'
  consumes:
  - type: http
    namespace: cloudfront
    baseUri: https://cloudfront.amazonaws.com/2020-05-31
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: invalidations
      path: /distribution/{{distribution_id}}/invalidation
      inputParameters:
      - name: distribution_id
        in: path
      operations:
      - name: create-invalidation
        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 → aws-cloudfront-cache-invalidation.yml

On a successful GitHub Actions deployment to production, records a deployment marker in Datadog and updates the associated Jira ticket to Done.

naftiko: '0.5'
info:
  label: GitHub Deployment Status Tracker
  description: On a successful GitHub Actions deployment to production, records a deployment marker in Datadog and updates the associated Jira ticket to Done.
  tags:
  - devops
  - deployment
  - github
  - datadog
  - jira
capability:
  exposes:
  - type: mcp
    namespace: devops-deploy
    port: 8080
    tools:
    - name: record-deployment
      description: Given a GitHub deployment event with repository, environment, and commit SHA, create a Datadog deployment marker and transition the linked Jira issue to Done. Use after any successful production deployment.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: environment
        in: body
        type: string
        description: The target deployment environment (e.g., production, staging).
      - name: commit_sha
        in: body
        type: string
        description: The commit SHA that was deployed.
      - name: jira_issue_key
        in: body
        type: string
        description: The Jira issue key to transition to Done (e.g., ENG-1234).
      steps:
      - name: create-marker
        type: call
        call: datadog-deploy.create-deployment
        with:
          service: '{{repository}}'
          version: '{{commit_sha}}'
          env: '{{environment}}'
      - name: close-jira
        type: call
        call: jira-deploy.transition-issue
        with:
          issue_key: '{{jira_issue_key}}'
          transition_id: '31'
  consumes:
  - type: http
    namespace: datadog-deploy
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: deployments
      path: /deployments
      operations:
      - name: create-deployment
        method: POST
  - type: http
    namespace: jira-deploy
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issue-transitions
      path: /issue/{{issue_key}}/transitions
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: transition-issue
        method: POST
Open in Framework → View in Fleet → github-deployment-status-tracker.yml

Checks SQS queue depth and returns message counts.

naftiko: '0.5'
info:
  label: AWS SQS Queue Depth Monitor
  description: Checks SQS queue depth and returns message counts.
  tags:
  - engineering
  - messaging
  - amazon-sqs
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: get-queue-depth
      description: Given an SQS queue URL, return message count.
      inputParameters:
      - name: queue_url
        in: body
        type: string
        description: SQS queue URL.
      call: sqs.get-queue-attributes
      with:
        queue_url: '{{queue_url}}'
      outputParameters:
      - name: messages
        type: integer
        mapping: $.Attributes.ApproximateNumberOfMessages
  consumes:
  - type: http
    namespace: sqs
    baseUri: https://sqs.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: queues
      path: /
      operations:
      - name: get-queue-attributes
        method: POST
Open in Framework → View in Fleet → aws-sqs-queue-depth-monitor.yml

Queries Datadog for streaming platform health metrics and posts to the platform Slack channel.

naftiko: '0.5'
info:
  label: Datadog Streaming Platform Health
  description: Queries Datadog for streaming platform health metrics and posts to the platform Slack channel.
  tags:
  - monitoring
  - streaming
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: check-streaming-health
      description: Query Datadog for streaming latency and error rates and post to Slack.
      inputParameters:
      - name: service
        in: body
        type: string
        description: Streaming service name.
      steps:
      - name: query-health
        type: call
        call: datadog.query-timeseries
        with:
          query: avg:trace.http.request.duration{service:{{service}}}
      - name: post-status
        type: call
        call: slack.post-message
        with:
          channel: platform-ops
          text: 'Streaming health for {{service}}: {{query-health.series[0].pointlist[-1][1]}}ms avg latency'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: query
      path: /query
      operations:
      - name: query-timeseries
        method: GET
  - type: http
    namespace: slack
    baseUri: 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-streaming-platform-health.yml

When a Salesforce opportunity is marked Closed-Won, creates a corresponding sales order in SAP S/4HANA and updates the opportunity with the SAP order number.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Sync to SAP
  description: When a Salesforce opportunity is marked Closed-Won, creates a corresponding sales order in SAP S/4HANA and updates the opportunity with the SAP order number.
  tags:
  - sales
  - crm
  - erp
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: sales-erp
    port: 8080
    tools:
    - name: sync-opportunity-to-sap
      description: Given a Salesforce opportunity ID, create a SAP sales order and write the SAP order number back to Salesforce. Invoke when an opportunity moves to Closed-Won status.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID (18-character Salesforce ID).
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-sales-order
        type: call
        call: sap-sales.create-sales-order
        with:
          customer_id: '{{get-opportunity.account_sap_id}}'
          amount: '{{get-opportunity.amount}}'
          currency: '{{get-opportunity.currency_code}}'
      - name: update-opportunity
        type: call
        call: salesforce-update.update-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
          sap_order_number: '{{create-sales-order.order_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: sap-sales
    baseUri: https://nbc-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: sales-orders
      path: /A_SalesOrder
      operations:
      - name: create-sales-order
        method: POST
  - type: http
    namespace: salesforce-update
    baseUri: https://nbc.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
Open in Framework → View in Fleet → salesforce-opportunity-sync-to-sap.yml

When an employee termination is recorded in Workday, disables their Microsoft 365 account, revokes Okta access, closes open ServiceNow tickets, and notifies their manager via Teams.

naftiko: '0.5'
info:
  label: Workday Employee Offboarding
  description: When an employee termination is recorded in Workday, disables their Microsoft 365 account, revokes Okta access, closes open ServiceNow tickets, and notifies their manager via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - microsoft-365
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, disable the Microsoft 365 account, deprovision Okta, close ServiceNow tickets, and alert the manager in Teams. Invoke when HR confirms a termination in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the departing employee.
      - name: termination_date
        in: body
        type: string
        description: The employee's last day in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday-lookup.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: disable-m365
        type: call
        call: msgraph-offboard.disable-user
        with:
          user_upn: '{{get-employee.work_email}}'
      - name: deprovision-okta
        type: call
        call: okta.deactivate-user
        with:
          login: '{{get-employee.work_email}}'
      - name: notify-manager
        type: call
        call: msteams-notify.send-message
        with:
          recipient_upn: '{{get-employee.manager_email}}'
          text: 'Offboarding initiated for {{get-employee.full_name}} (last day: {{termination_date}}). IT access has been revoked.'
  consumes:
  - type: http
    namespace: workday-lookup
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /nbc/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: msgraph-offboard
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{user_upn}}
      inputParameters:
      - name: user_upn
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: okta
    baseUri: https://nbc.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: msteams-notify
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-employee-offboarding.yml

Retrieves Meta Ads campaign insights for show promotion campaigns.

naftiko: '0.5'
info:
  label: Meta Social Campaign Analytics
  description: Retrieves Meta Ads campaign insights for show promotion campaigns.
  tags:
  - marketing
  - advertising
  - meta
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-campaign-insights
      description: Given a campaign ID, return reach, impressions, and spend.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Meta campaign ID.
      call: meta-ads.get-insights
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: reach
        type: integer
        mapping: $.data[0].reach
      - name: impressions
        type: integer
        mapping: $.data[0].impressions
      - name: spend
        type: string
        mapping: $.data[0].spend
  consumes:
  - type: http
    namespace: meta-ads
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-insights
        method: GET
Open in Framework → View in Fleet → meta-social-campaign-analytics.yml

Posts a show graphics review request to the creative Slack channel.

naftiko: '0.5'
info:
  label: Figma Show Graphics Review
  description: Posts a show graphics review request to the creative Slack channel.
  tags:
  - design
  - content-production
  - figma
  - slack
capability:
  exposes:
  - type: mcp
    namespace: creative-ops
    port: 8080
    tools:
    - name: request-graphics-review
      description: Fetch Figma file info and post review request to Slack.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: Figma file key.
      steps:
      - name: get-file
        type: call
        call: figma.get-file
        with:
          file_key: '{{file_key}}'
      - name: post-review
        type: call
        call: slack.post-message
        with:
          channel: creative
          text: 'Graphics review: {{get-file.name}} — https://www.figma.com/file/{{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
  - type: http
    namespace: slack
    baseUri: 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 → figma-show-graphics-review.yml

Creates a Jira ticket for content production issues and notifies the production team via Slack.

naftiko: '0.5'
info:
  label: Jira Production Ticket Creation
  description: Creates a Jira ticket for content production issues and notifies the production team via Slack.
  tags:
  - content-production
  - project-management
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: create-production-ticket
      description: Create a Jira production ticket and notify Slack.
      inputParameters:
      - name: show_name
        in: body
        type: string
        description: Show or program name.
      - name: issue_type
        in: body
        type: string
        description: Issue type (Task, Bug, Story).
      - name: summary
        in: body
        type: string
        description: Ticket summary.
      steps:
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: PROD
          issuetype: '{{issue_type}}'
          summary: '{{summary}}'
          description: 'Show: {{show_name}}'
      - name: notify-prod
        type: call
        call: slack.post-message
        with:
          channel: production
          text: 'Production ticket: {{create-ticket.key}} — {{summary}} ({{show_name}})'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-production-ticket-creation.yml

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

naftiko: '0.5'
info:
  label: Workday New Hire Onboarding Orchestrator
  description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Teams welcome message to the new employee and their manager.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - microsoft-teams
  - microsoft-365
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, Microsoft 365, and Microsoft Teams. Invoke when a new hire record is created or when onboarding needs to be re-triggered.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: The employee's start date in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{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_to: IT_Onboarding_Team
      - name: provision-account
        type: call
        call: msgraph.create-user
        with:
          display_name: '{{get-employee.full_name}}'
          mail_nickname: '{{get-employee.user_principal_name}}'
          department: '{{get-employee.department}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: Welcome to NBC, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}.
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /nbc/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://nbc.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-new-hire-onboarding-orchestrator.yml

Retrieves email delivery stats from SendGrid for subscriber newsletters.

naftiko: '0.5'
info:
  label: SendGrid Subscriber Email Stats
  description: Retrieves email delivery stats from SendGrid for subscriber newsletters.
  tags:
  - marketing
  - email
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: email-ops
    port: 8080
    tools:
    - name: get-email-stats
      description: Return delivery stats for a date range.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      call: sendgrid.get-stats
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: delivered
        type: integer
        mapping: $.stats[0].metrics.delivered
      - name: opens
        type: integer
        mapping: $.stats[0].metrics.opens
  consumes:
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: stats
      path: /stats
      operations:
      - name: get-stats
        method: GET
Open in Framework → View in Fleet → sendgrid-subscriber-email-stats.yml

Queries Okta for users without MFA enrolled in a specified group and creates a ServiceNow compliance task to remediate non-compliant accounts.

naftiko: '0.5'
info:
  label: Okta MFA Enforcement Check
  description: Queries Okta for users without MFA enrolled in a specified group and creates a ServiceNow compliance task to remediate non-compliant accounts.
  tags:
  - identity
  - security
  - compliance
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security-compliance
    port: 8080
    tools:
    - name: check-mfa-compliance
      description: Given an Okta group ID, identify users without MFA enrolled and create a ServiceNow compliance remediation task. Use for monthly security audits or compliance reporting.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Okta group ID to audit for MFA compliance.
      steps:
      - name: get-users-without-mfa
        type: call
        call: okta-mfa.list-users-without-factor
        with:
          group_id: '{{group_id}}'
      - name: create-compliance-task
        type: call
        call: servicenow-mfa.create-task
        with:
          short_description: MFA compliance remediation for group {{group_id}}
          category: security_compliance
          description: 'Users without MFA: {{get-users-without-mfa.count}}'
  consumes:
  - type: http
    namespace: okta-mfa
    baseUri: https://nbc.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-users
      path: /groups/{{group_id}}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: list-users-without-factor
        method: GET
  - type: http
    namespace: servicenow-mfa
    baseUri: https://nbc.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-mfa-enforcement-check.yml

Updates Azure AD group memberships when an employee changes teams in Workday.

naftiko: '0.5'
info:
  label: Azure AD Group Sync
  description: Updates Azure AD group memberships when an employee changes teams in Workday.
  tags:
  - identity
  - hr
  - azure-active-directory
  - workday
capability:
  exposes:
  - type: mcp
    namespace: iam-ops
    port: 8080
    tools:
    - name: sync-ad-groups
      description: Fetch Workday employee data and update Azure AD groups.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: new_team
        in: body
        type: string
        description: New team code.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{employee_id}}'
      - name: update-groups
        type: call
        call: azuread.update-membership
        with:
          user_email: '{{get-worker.email}}'
          team: '{{new_team}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/nbc
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: workers
      path: /Human_Resources/v40.0/Get_Workers
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: azuread
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: groups
      path: /groups
      operations:
      - name: update-membership
        method: POST
Open in Framework → View in Fleet → azure-ad-group-sync.yml

Executes a SQL query against the Snowflake viewership analytics warehouse.

naftiko: '0.5'
info:
  label: Snowflake Viewership Analytics
  description: Executes a SQL query against the Snowflake viewership analytics warehouse.
  tags:
  - data
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: run-viewership-query
      description: Given a SQL query, execute against Snowflake viewership warehouse.
      inputParameters:
      - name: sql
        in: body
        type: string
        description: SQL query.
      call: snowflake.execute-statement
      with:
        statement: '{{sql}}'
        warehouse: VIEWERSHIP_WH
      outputParameters:
      - name: rows
        type: array
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nbc.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-viewership-analytics.yml

Fetches LinkedIn campaign analytics for show promotions and posts to Slack.

naftiko: '0.5'
info:
  label: LinkedIn Show Promotion Analytics
  description: Fetches LinkedIn campaign analytics for show promotions and posts to Slack.
  tags:
  - marketing
  - social-media
  - linkedin
  - slack
capability:
  exposes:
  - type: mcp
    namespace: social-ops
    port: 8080
    tools:
    - name: post-promotion-analytics
      description: Fetch LinkedIn analytics and post to Slack.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: LinkedIn campaign ID.
      steps:
      - name: get-analytics
        type: call
        call: linkedin.get-analytics
        with:
          campaign_id: '{{campaign_id}}'
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: marketing-social
          text: 'LinkedIn show promo: {{get-analytics.impressions}} impressions, {{get-analytics.clicks}} clicks'
  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-analytics
        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 → linkedin-show-promotion-analytics.yml

Creates a Jira ticket from a P1 ServiceNow incident and notifies Slack.

naftiko: '0.5'
info:
  label: ServiceNow Incident to Jira
  description: Creates a Jira ticket from a P1 ServiceNow incident and notifies Slack.
  tags:
  - it-operations
  - incident-management
  - servicenow
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: escalate-to-jira
      description: Given a ServiceNow incident, create Jira ticket and notify Slack.
      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: create-jira
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Bug
          summary: 'SNOW {{incident_number}}: {{get-incident.short_description}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: engineering-incidents
          text: 'P1 escalated: {{incident_number}} -> Jira {{create-jira.key}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://nbc.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: jira
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-incident-to-jira.yml

Uses OpenAI to generate a marketing synopsis for a show episode and stores it in Salesforce.

naftiko: '0.5'
info:
  label: OpenAI Show Synopsis Generation
  description: Uses OpenAI to generate a marketing synopsis for a show episode and stores it in Salesforce.
  tags:
  - ai
  - content-production
  - openai
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: content-ai
    port: 8080
    tools:
    - name: generate-synopsis
      description: Given episode details, generate a synopsis and store in Salesforce.
      inputParameters:
      - name: show_name
        in: body
        type: string
        description: Show name.
      - name: episode_title
        in: body
        type: string
        description: Episode title.
      - name: plot_summary
        in: body
        type: string
        description: Raw plot summary.
      steps:
      - name: generate
        type: call
        call: openai.create-completion
        with:
          model: gpt-4
          prompt: 'Write a compelling 100-word marketing synopsis for {{show_name}} episode ''{{episode_title}}'': {{plot_summary}}'
      - name: store
        type: call
        call: salesforce.create-record
        with:
          object: Episode__c
          show: '{{show_name}}'
          episode: '{{episode_title}}'
          synopsis: '{{generate.text}}'
  consumes:
  - 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: salesforce
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects/Episode__c
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → openai-show-synopsis-generation.yml

When Datadog fires a host or service alert, queries the alert details, creates a ServiceNow incident, and notifies the on-call team via PagerDuty.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Alert Triage
  description: When Datadog fires a host or service alert, queries the alert details, creates a ServiceNow incident, and notifies the on-call team via PagerDuty.
  tags:
  - observability
  - monitoring
  - datadog
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: observability-ops
    port: 8080
    tools:
    - name: handle-datadog-alert
      description: Given a Datadog alert ID, fetch alert details, create a ServiceNow incident, and page the on-call engineer via PagerDuty. Use for any infrastructure or application alert requiring human escalation.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Datadog monitor alert ID.
      - name: monitor_name
        in: body
        type: string
        description: The name of the triggering Datadog monitor.
      steps:
      - name: get-alert
        type: call
        call: datadog-alert.get-monitor
        with:
          monitor_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow-alert.create-incident
        with:
          short_description: 'Datadog alert: {{monitor_name}}'
          urgency: '1'
          category: infrastructure
      - name: page-oncall
        type: call
        call: pagerduty-alert.trigger-incident
        with:
          title: 'Datadog: {{monitor_name}}'
          severity: critical
          incident_key: dd-{{alert_id}}
  consumes:
  - type: http
    namespace: datadog-alert
    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-alert
    baseUri: https://nbc.service-now.com/api/now
    authentication:
      type: 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-alert
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: trigger-incident
        method: POST
Open in Framework → View in Fleet → datadog-infrastructure-alert-triage.yml

Fetches current SLO compliance metrics from Datadog for all production services and posts a weekly compliance summary to the engineering leadership Teams channel.

naftiko: '0.5'
info:
  label: Datadog SLO Compliance Report
  description: Fetches current SLO compliance metrics from Datadog for all production services and posts a weekly compliance summary to the engineering leadership Teams channel.
  tags:
  - observability
  - slo
  - datadog
  - reporting
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: slo-reporting
    port: 8080
    tools:
    - name: publish-slo-report
      description: Fetch all Datadog SLO statuses for the current week and post a compliance report to the engineering leadership Teams channel. Use for weekly engineering reviews and executive briefings.
      steps:
      - name: get-slos
        type: call
        call: datadog-slo.list-slos
      - name: post-report
        type: call
        call: msteams-slo.post-message
        with:
          channel_id: $secrets.eng_leadership_channel_id
          text: 'Weekly SLO Report: {{get-slos.count}} SLOs monitored. See Datadog for full compliance details.'
  consumes:
  - type: http
    namespace: datadog-slo
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo
      operations:
      - name: list-slos
        method: GET
  - type: http
    namespace: msteams-slo
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-compliance-report.yml

Fetches the current sprint status from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Status Report
  description: Fetches the current sprint status from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Teams channel.
  tags:
  - devops
  - project-management
  - jira
  - reporting
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sprint-reporting
    port: 8080
    tools:
    - name: get-sprint-status
      description: Given a Jira project key, fetch the active sprint and summarize issues by status, then post the report to Teams. Use for daily standups or weekly sprint reviews.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The Jira project key (e.g., ENG, TECH).
      steps:
      - name: get-sprint
        type: call
        call: jira-sprint.get-active-sprint
        with:
          project_key: '{{project_key}}'
      - name: get-issues
        type: call
        call: jira-sprint.search-issues
        with:
          sprint_id: '{{get-sprint.sprint_id}}'
          project_key: '{{project_key}}'
      - name: post-report
        type: call
        call: msteams-sprint.post-message
        with:
          channel_id: $secrets.engineering_channel_id
          text: 'Sprint {{get-sprint.sprint_name}} status: {{get-issues.todo_count}} To Do, {{get-issues.inprogress_count}} In Progress, {{get-issues.done_count}} Done.'
  consumes:
  - type: http
    namespace: jira-sprint
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /project/{{project_key}}/sprints
      inputParameters:
      - name: project_key
        in: path
      operations:
      - name: get-active-sprint
        method: GET
    - name: issues
      path: /search
      operations:
      - name: search-issues
        method: POST
  - type: http
    namespace: msteams-sprint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-status-report.yml

Retrieves Peacock app usage metrics from Google Analytics and posts to Slack.

naftiko: '0.5'
info:
  label: Google Analytics App Usage
  description: Retrieves Peacock app usage metrics from Google Analytics and posts to Slack.
  tags:
  - analytics
  - streaming
  - google-analytics
  - slack
capability:
  exposes:
  - type: mcp
    namespace: app-analytics
    port: 8080
    tools:
    - name: post-app-usage
      description: Fetch app usage metrics and post to Slack.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: GA property ID.
      steps:
      - name: get-report
        type: call
        call: ga.run-report
        with:
          property_id: '{{property_id}}'
          date_range: last7days
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: app-analytics
          text: 'App usage: {{get-report.sessions}} sessions, {{get-report.users}} users'
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → google-analytics-app-usage.yml

Retrieves an invoice from SAP by invoice number, returning status, amount, and payment date.

naftiko: '0.5'
info:
  label: SAP Invoice Status Lookup
  description: Retrieves an invoice from SAP by invoice number, returning status, amount, and payment date.
  tags:
  - finance
  - erp
  - sap
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: get-invoice-status
      description: Given an invoice number, return status, amount, and payment date.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP invoice number.
      call: sap.get-invoice
      with:
        invoice: '{{invoice_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.InvoiceStatus
      - name: amount
        type: number
        mapping: $.d.InvoiceAmount
  consumes:
  - type: http
    namespace: sap
    baseUri: https://nbc-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}}')
      inputParameters:
      - name: invoice
        in: path
      operations:
      - name: get-invoice
        method: GET
Open in Framework → View in Fleet → sap-invoice-status-lookup.yml

Uses OpenAI to generate searchable metadata tags for a media asset and stores them in Snowflake.

naftiko: '0.5'
info:
  label: OpenAI Content Metadata Generation
  description: Uses OpenAI to generate searchable metadata tags for a media asset and stores them in Snowflake.
  tags:
  - ai
  - content-management
  - openai
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: content-ai
    port: 8080
    tools:
    - name: generate-metadata
      description: Given a media asset description, generate metadata tags via OpenAI and store in Snowflake.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: Media asset ID.
      - name: description
        in: body
        type: string
        description: Asset description.
      steps:
      - name: generate-tags
        type: call
        call: openai.create-completion
        with:
          model: gpt-4
          prompt: 'Generate 10 searchable metadata tags for this media asset: {{description}}'
      - name: store-tags
        type: call
        call: snowflake.insert-row
        with:
          table: MEDIA_ASSET_TAGS
          values:
            asset_id: '{{asset_id}}'
            tags: '{{generate-tags.text}}'
  consumes:
  - 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: snowflake
    baseUri: https://nbc.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-row
        method: POST
Open in Framework → View in Fleet → openai-content-metadata-generation.yml

Pulls weekly advertising campaign metrics from Salesforce Marketing Cloud and publishes a performance digest to a Microsoft Teams channel for the ad sales team.

naftiko: '0.5'
info:
  label: Advertising Campaign Performance Digest
  description: Pulls weekly advertising campaign metrics from Salesforce Marketing Cloud and publishes a performance digest to a Microsoft Teams channel for the ad sales team.
  tags:
  - marketing
  - advertising
  - reporting
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: marketing-reporting
    port: 8080
    tools:
    - name: digest-campaign-performance
      description: Given a campaign ID and date range, fetch performance metrics from Salesforce Marketing Cloud and post a summary digest to the ad sales Teams channel. Use for weekly campaign reviews.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Salesforce Marketing Cloud campaign ID.
      - name: date_from
        in: body
        type: string
        description: Report start date in YYYY-MM-DD format.
      - name: date_to
        in: body
        type: string
        description: Report end date in YYYY-MM-DD format.
      steps:
      - name: get-metrics
        type: call
        call: sfmc.get-campaign-metrics
        with:
          campaign_id: '{{campaign_id}}'
          date_from: '{{date_from}}'
          date_to: '{{date_to}}'
      - name: post-digest
        type: call
        call: msteams-mkt.post-message
        with:
          channel_id: $secrets.ad_sales_channel_id
          text: 'Campaign {{campaign_id}} digest ({{date_from}} to {{date_to}}): Impressions={{get-metrics.impressions}}, Clicks={{get-metrics.clicks}}, CTR={{get-metrics.ctr}}'
  consumes:
  - type: http
    namespace: sfmc
    baseUri: https://api.salesforce.com/marketing/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaign-metrics
      path: /campaigns/{{campaign_id}}/metrics
      inputParameters:
      - name: campaign_id
        in: path
      - name: date_from
        in: query
      - name: date_to
        in: query
      operations:
      - name: get-campaign-metrics
        method: GET
  - type: http
    namespace: msteams-mkt
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → advertising-campaign-performance-digest.yml

Retrieves latest Postman API monitor run results.

naftiko: '0.5'
info:
  label: Postman API Monitor Check
  description: Retrieves latest Postman API monitor run results.
  tags:
  - engineering
  - api-management
  - postman
capability:
  exposes:
  - type: mcp
    namespace: api-ops
    port: 8080
    tools:
    - name: get-monitor-status
      description: Given a monitor ID, return pass/fail.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Postman monitor ID.
      call: postman.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.monitor.lastRun.status
  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: monitors
      path: /monitors/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → postman-api-monitor-check.yml

Retrieves the status of an AWS Elemental MediaConvert transcoding job.

naftiko: '0.5'
info:
  label: AWS MediaConvert Job Status
  description: Retrieves the status of an AWS Elemental MediaConvert transcoding job.
  tags:
  - media
  - cloud
  - aws
capability:
  exposes:
  - type: mcp
    namespace: media-ops
    port: 8080
    tools:
    - name: get-transcode-status
      description: Given a MediaConvert job ID, return the transcoding status and output URL.
      inputParameters:
      - name: job_id
        in: body
        type: string
        description: MediaConvert job ID.
      call: mediaconvert.get-job
      with:
        job_id: '{{job_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Job.Status
      - name: output_uri
        type: string
        mapping: $.Job.Settings.OutputGroups[0].OutputGroupSettings.HlsGroupSettings.Destination
  consumes:
  - type: http
    namespace: mediaconvert
    baseUri: https://mediaconvert.us-east-1.amazonaws.com/2017-08-29
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    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 → aws-mediaconvert-job-status.yml

When AWS Cost Explorer detects a spending anomaly, queries the anomaly details, creates a Jira cost-review ticket, and posts an alert to the FinOps Teams channel.

naftiko: '0.5'
info:
  label: AWS Cost Anomaly Responder
  description: When AWS Cost Explorer detects a spending anomaly, queries the anomaly details, creates a Jira cost-review ticket, and posts an alert to the FinOps Teams channel.
  tags:
  - cloud
  - finops
  - aws
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given an AWS Cost Explorer anomaly ID, fetch anomaly details, open a Jira cost-review ticket, and alert the FinOps team in Teams. Invoke when AWS detects unexpected spend spikes.
      inputParameters:
      - name: anomaly_id
        in: body
        type: string
        description: The AWS Cost Explorer anomaly ID.
      - name: service_name
        in: body
        type: string
        description: The AWS service name associated with the anomaly.
      - name: estimated_cost
        in: body
        type: string
        description: The estimated excess cost in USD.
      steps:
      - name: create-review-ticket
        type: call
        call: jira-finops.create-issue
        with:
          project_key: FINOPS
          issuetype: Task
          summary: 'AWS cost anomaly: {{service_name}} - ${{estimated_cost}} excess'
          description: 'Anomaly ID: {{anomaly_id}}

            Service: {{service_name}}

            Estimated excess: ${{estimated_cost}}'
      - name: alert-finops
        type: call
        call: msteams-finops.post-message
        with:
          channel_id: $secrets.finops_channel_id
          text: 'Cost Anomaly Detected: {{service_name}} — ${{estimated_cost}} excess. Jira: {{create-review-ticket.key}}'
  consumes:
  - type: http
    namespace: jira-finops
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams-finops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → aws-cost-anomaly-responder.yml

Creates a Slack incident channel and posts the incident summary.

naftiko: '0.5'
info:
  label: Slack Incident Channel Creation
  description: Creates a Slack incident channel and posts the incident summary.
  tags:
  - incident-management
  - collaboration
  - slack
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: create-incident-channel
      description: Create a Slack incident channel with PagerDuty context.
      inputParameters:
      - name: incident_title
        in: body
        type: string
        description: Incident title.
      - name: pd_incident_id
        in: body
        type: string
        description: PagerDuty incident ID.
      steps:
      - name: get-pd
        type: call
        call: pagerduty.get-incident
        with:
          incident_id: '{{pd_incident_id}}'
      - name: create-channel
        type: call
        call: slack.create-channel
        with:
          name: inc-{{incident_title}}
      - name: post-brief
        type: call
        call: slack.post-message
        with:
          channel: '{{create-channel.id}}'
          text: 'Incident: {{get-pd.title}} | PD: {{pd_incident_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: channels
      path: /conversations.create
      operations:
      - name: create-channel
        method: POST
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-incident-channel-creation.yml

Retrieves manager and direct reports for a Workday employee.

naftiko: '0.5'
info:
  label: Workday Org Chart Lookup
  description: Retrieves manager and direct reports for a Workday employee.
  tags:
  - hr
  - workforce
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: get-org-chart
      description: Given an employee ID, return manager and direct reports.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-worker
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: manager
        type: string
        mapping: $.Worker.Manager.Name
      - name: direct_reports
        type: array
        mapping: $.Worker.DirectReports[*].Name
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/nbc
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: workers
      path: /Human_Resources/v40.0/Get_Workers
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-org-chart-lookup.yml

Searches the content index in Elasticsearch for shows, episodes, and clips.

naftiko: '0.5'
info:
  label: Elasticsearch Content Search
  description: Searches the content index in Elasticsearch for shows, episodes, and clips.
  tags:
  - media
  - search
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: content-ops
    port: 8080
    tools:
    - name: search-content
      description: Given a search query, return matching content from the index.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      call: elasticsearch.search
      with:
        index: content
        q: '{{query}}'
      outputParameters:
      - name: hits
        type: array
        mapping: $.hits.hits[*]._source
      - name: total
        type: integer
        mapping: $.hits.total.value
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://nbc-es.us-east-1.es.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: search
      path: /content/_search
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → elasticsearch-content-search.yml

When a compensation change is approved, notifies HR via Slack.

naftiko: '0.5'
info:
  label: Workday Compensation Alert
  description: When a compensation change is approved, notifies HR via Slack.
  tags:
  - hr
  - compensation
  - workday
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: notify-comp-change
      description: Fetch comp event and notify HR Slack.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: event_id
        in: body
        type: string
        description: Comp event ID.
      steps:
      - name: get-event
        type: call
        call: workday.get-comp-event
        with:
          employee_id: '{{employee_id}}'
          event_id: '{{event_id}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: hr-notifications
          text: 'Comp change for {{employee_id}}: effective {{get-event.effective_date}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/nbc
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: compensation
      path: /Compensation/v40.0
      operations:
      - name: get-comp-event
        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 → workday-compensation-alert.yml

Retrieves the production schedule from Airtable for a given show.

naftiko: '0.5'
info:
  label: Airtable Production Schedule Lookup
  description: Retrieves the production schedule from Airtable for a given show.
  tags:
  - content-production
  - scheduling
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: get-production-schedule
      description: Given a show name, return the production schedule from Airtable.
      inputParameters:
      - name: show_name
        in: body
        type: string
        description: Show name.
      call: airtable.list-records
      with:
        base_id: $secrets.airtable_base_id
        table: Production Schedule
        filter: Show = '{{show_name}}'
      outputParameters:
      - name: records
        type: array
        mapping: $.records
  consumes:
  - type: http
    namespace: airtable
    baseUri: https://api.airtable.com/v0
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: records
      path: /{{base_id}}/Production%20Schedule
      inputParameters:
      - name: base_id
        in: path
      operations:
      - name: list-records
        method: GET
Open in Framework → View in Fleet → airtable-production-schedule-lookup.yml

When an employee's role changes in Workday, updates their Okta group memberships to match the new role's access profile and creates a ServiceNow change record.

naftiko: '0.5'
info:
  label: Workday Role Change Access Sync
  description: When an employee's role changes in Workday, updates their Okta group memberships to match the new role's access profile and creates a ServiceNow change record.
  tags:
  - hr
  - identity
  - role-change
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-identity
    port: 8080
    tools:
    - name: sync-role-change-access
      description: Given a Workday employee ID and new role, update Okta group memberships to align with the new role's access profile and log the change in ServiceNow. Invoke when an employee's position or department changes in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the employee whose role changed.
      - name: new_role
        in: body
        type: string
        description: The new job title or role name.
      - name: new_department
        in: body
        type: string
        description: The new department the employee is moving to.
      steps:
      - name: get-employee
        type: call
        call: workday-role.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: update-okta-groups
        type: call
        call: okta-role.update-user-groups
        with:
          login: '{{get-employee.work_email}}'
          department: '{{new_department}}'
          role: '{{new_role}}'
      - name: log-change
        type: call
        call: servicenow-role.create-change
        with:
          short_description: 'Role change: {{get-employee.full_name}} → {{new_role}} in {{new_department}}'
          category: hr_role_change
  consumes:
  - type: http
    namespace: workday-role
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /nbc/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-role
    baseUri: https://nbc.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: user-groups
      path: /users/{{login}}/groups
      inputParameters:
      - name: login
        in: path
      operations:
      - name: update-user-groups
        method: PUT
  - type: http
    namespace: servicenow-role
    baseUri: https://nbc.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
Open in Framework → View in Fleet → workday-role-change-access-sync.yml

Retrieves the current on-call engineer for a PagerDuty schedule.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Lookup
  description: Retrieves the current on-call engineer for a PagerDuty schedule.
  tags:
  - engineering
  - incident-management
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: get-on-call
      description: Given a schedule ID, return the on-call engineer.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: PagerDuty schedule ID.
      call: pagerduty.get-on-call
      with:
        schedule_id: '{{schedule_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.schedule.final_schedule.rendered_schedule_entries[0].user.summary
      - name: email
        type: string
        mapping: $.schedule.final_schedule.rendered_schedule_entries[0].user.email
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: schedules
      path: /schedules/{{schedule_id}}
      inputParameters:
      - name: schedule_id
        in: path
      operations:
      - name: get-on-call
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-lookup.yml

Fetches Dependabot alerts and posts summary to security Slack.

naftiko: '0.5'
info:
  label: GitHub Dependabot Alert Summary
  description: Fetches Dependabot alerts and posts summary to security Slack.
  tags:
  - security
  - engineering
  - github
  - slack
capability:
  exposes:
  - type: mcp
    namespace: appsec
    port: 8080
    tools:
    - name: summarize-alerts
      description: Fetch open Dependabot alerts and post summary to Slack.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repo.
      steps:
      - name: get-alerts
        type: call
        call: github.list-alerts
        with:
          repo: '{{repo}}'
          state: open
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: security-alerts
          text: 'Dependabot for {{repo}}: {{get-alerts.total}} open'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: alerts
      path: /repos/{{repo}}/dependabot/alerts
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: list-alerts
        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-dependabot-alert-summary.yml

When a GitHub Actions workflow fails on a protected branch, opens a Jira bug, creates a Datadog event, and alerts the engineering team in Microsoft Teams.

naftiko: '0.5'
info:
  label: GitHub Pipeline Failure Handler
  description: When a GitHub Actions workflow fails on a protected branch, opens a Jira bug, creates a Datadog event, and alerts the engineering team in Microsoft Teams.
  tags:
  - devops
  - ci-cd
  - github
  - jira
  - datadog
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops-ci
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions run ID, repository, branch, and failing job name, open a Jira bug, create a Datadog deployment event, and alert the engineering Teams channel. Invoke on any protected-branch workflow failure.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch on which the workflow failed.
      - name: job_name
        in: body
        type: string
        description: The name of the failed job.
      - name: commit_sha
        in: body
        type: string
        description: The commit SHA that triggered the run.
      steps:
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repository}} / {{branch}} - {{job_name}}'
          description: 'Run ID: {{run_id}}

            Commit: {{commit_sha}}'
      - name: create-dd-event
        type: call
        call: datadog-ci.create-event
        with:
          title: 'CI failure: {{repository}} {{branch}}'
          alert_type: error
          tags: repo:{{repository}},branch:{{branch}}
      - name: alert-engineering
        type: call
        call: msteams-ci.post-message
        with:
          channel_id: $secrets.engineering_channel_id
          text: 'Build Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: datadog-ci
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams-ci
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-pipeline-failure-handler.yml

Triggers a GitHub Actions workflow and notifies the engineering Slack channel.

naftiko: '0.5'
info:
  label: GitHub CI/CD Pipeline Trigger
  description: Triggers a GitHub Actions workflow and notifies the engineering Slack channel.
  tags:
  - engineering
  - cicd
  - github-actions
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cicd-ops
    port: 8080
    tools:
    - name: trigger-workflow
      description: Trigger a GitHub Actions workflow dispatch and notify Slack.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repo.
      - name: workflow_id
        in: body
        type: string
        description: Workflow file.
      - name: ref
        in: body
        type: string
        description: Git ref.
      steps:
      - name: dispatch
        type: call
        call: github.create-workflow-dispatch
        with:
          repo: '{{repo}}'
          workflow_id: '{{workflow_id}}'
          ref: '{{ref}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: engineering
          text: Workflow {{workflow_id}} triggered on {{repo}} ({{ref}})
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dispatches
      path: /repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: create-workflow-dispatch
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-ci-cd-pipeline-trigger.yml

Searches SharePoint media library for production assets by keyword.

naftiko: '0.5'
info:
  label: SharePoint Media Library Search
  description: Searches SharePoint media library for production assets by keyword.
  tags:
  - media
  - document-management
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: media-ops
    port: 8080
    tools:
    - name: search-media-library
      description: Search SharePoint for media production assets.
      inputParameters:
      - name: keyword
        in: body
        type: string
        description: Search keyword.
      call: sharepoint.search
      with:
        query: '{{keyword}}'
      outputParameters:
      - name: files
        type: array
        mapping: $.value
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: search
      path: /sites/nbc.sharepoint.com/drive/root/search(q='{{query}}')
      inputParameters:
      - name: query
        in: path
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → sharepoint-media-library-search.yml

Retrieves vendor payment status from SAP.

naftiko: '0.5'
info:
  label: SAP Vendor Payment Lookup
  description: Retrieves vendor payment status from SAP.
  tags:
  - finance
  - erp
  - sap
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: get-payment-status
      description: Given a vendor and invoice number, return payment status.
      inputParameters:
      - name: vendor
        in: body
        type: string
        description: SAP vendor number.
      - name: invoice
        in: body
        type: string
        description: Invoice number.
      call: sap.get-payment
      with:
        vendor: '{{vendor}}'
        invoice: '{{invoice}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.PaymentStatus
  consumes:
  - type: http
    namespace: sap
    baseUri: https://nbc-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: payments
      path: /A_SupplierInvoice
      operations:
      - name: get-payment
        method: GET
Open in Framework → View in Fleet → sap-vendor-payment-lookup.yml

When a P1 incident is created in ServiceNow, creates a Datadog event marker, assigns on-call engineers via PagerDuty, and posts an incident bridge link to the IT ops Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Response
  description: When a P1 incident is created in ServiceNow, creates a Datadog event marker, assigns on-call engineers via PagerDuty, and posts an incident bridge link to the IT ops Teams channel.
  tags:
  - itsm
  - incident-response
  - servicenow
  - datadog
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm-ops
    port: 8080
    tools:
    - name: handle-p1-incident
      description: Given a ServiceNow incident number and severity, trigger PagerDuty on-call escalation, create a Datadog event, and notify the IT ops Teams channel. Invoke for all P1 and P2 incidents.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number (e.g., INC0012345).
      - name: severity
        in: body
        type: string
        description: 'Incident severity: P1 or P2.'
      - name: short_description
        in: body
        type: string
        description: Brief description of the incident.
      steps:
      - name: escalate-oncall
        type: call
        call: pagerduty.trigger-incident
        with:
          title: '{{short_description}}'
          severity: '{{severity}}'
          incident_key: '{{incident_number}}'
      - name: create-dd-event
        type: call
        call: datadog.create-event
        with:
          title: 'Incident {{incident_number}}: {{short_description}}'
          alert_type: error
          tags: severity:{{severity}},source:servicenow
      - name: notify-it-ops
        type: call
        call: msteams-it.post-message
        with:
          channel_id: $secrets.it_ops_channel_id
          text: 'P1 Incident {{incident_number}}: {{short_description}} | PagerDuty: {{escalate-oncall.incident_url}} | Datadog: {{create-dd-event.event_url}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: trigger-incident
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams-it
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-it-incident-response.yml

Queries Snowflake for weekly business KPIs and posts to Slack.

naftiko: '0.5'
info:
  label: Snowflake Weekly KPI Report
  description: Queries Snowflake for weekly business KPIs and posts to Slack.
  tags:
  - analytics
  - reporting
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: analytics-ops
    port: 8080
    tools:
    - name: post-weekly-kpis
      description: Fetch weekly KPIs and post to Slack.
      inputParameters:
      - name: slack_channel
        in: body
        type: string
        description: Slack channel.
      steps:
      - name: fetch
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT metric, value FROM weekly_kpis WHERE report_date = CURRENT_DATE
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Weekly KPIs: {{fetch.data}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nbc.snowflakecomputing.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 → snowflake-weekly-kpi-report.yml

Fetches weekly post engagement metrics from the NBC LinkedIn organization page and posts a performance summary to the social media team's Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Social Content Performance
  description: Fetches weekly post engagement metrics from the NBC LinkedIn organization page and posts a performance summary to the social media team's Teams channel.
  tags:
  - social
  - content
  - linkedin
  - marketing
  - reporting
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: social-reporting
    port: 8080
    tools:
    - name: digest-linkedin-performance
      description: Given an NBC LinkedIn organization URN and date range, fetch post engagement stats and post a weekly performance digest to the social team Teams channel. Use for weekly social media reviews.
      inputParameters:
      - name: org_urn
        in: body
        type: string
        description: The LinkedIn organization URN (e.g., urn:li:organization:12345).
      - name: date_from
        in: body
        type: string
        description: Start date for the report in YYYY-MM-DD format.
      - name: date_to
        in: body
        type: string
        description: End date for the report in YYYY-MM-DD format.
      steps:
      - name: get-post-stats
        type: call
        call: linkedin.get-share-statistics
        with:
          org_urn: '{{org_urn}}'
          date_from: '{{date_from}}'
          date_to: '{{date_to}}'
      - name: post-digest
        type: call
        call: msteams-social.post-message
        with:
          channel_id: $secrets.social_team_channel_id
          text: 'LinkedIn Weekly Digest ({{date_from}}–{{date_to}}): Impressions={{get-post-stats.impressions}}, Engagement={{get-post-stats.engagement_rate}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: share-statistics
      path: /organizationalEntityShareStatistics
      inputParameters:
      - name: org_urn
        in: query
      - name: date_from
        in: query
      - name: date_to
        in: query
      operations:
      - name: get-share-statistics
        method: GET
  - type: http
    namespace: msteams-social
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → linkedin-social-content-performance.yml

Retrieves the signing status of a DocuSign talent contract envelope.

naftiko: '0.5'
info:
  label: DocuSign Talent Contract Status
  description: Retrieves the signing status of a DocuSign talent contract envelope.
  tags:
  - legal
  - talent
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: legal-ops
    port: 8080
    tools:
    - name: get-contract-status
      description: Given a DocuSign envelope ID, return signing status.
      inputParameters:
      - name: envelope_id
        in: body
        type: string
        description: DocuSign envelope ID.
      call: docusign.get-envelope
      with:
        envelope_id: '{{envelope_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: completed
        type: string
        mapping: $.completedDateTime
  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-talent-contract-status.yml

Retrieves CloudWatch alarm state for streaming infrastructure.

naftiko: '0.5'
info:
  label: AWS CloudWatch Streaming Alarm
  description: Retrieves CloudWatch alarm state for streaming infrastructure.
  tags:
  - monitoring
  - streaming
  - aws
  - cloudwatch
capability:
  exposes:
  - type: mcp
    namespace: streaming-ops
    port: 8080
    tools:
    - name: get-alarm-state
      description: Given an alarm name, return state and reason.
      inputParameters:
      - name: alarm_name
        in: body
        type: string
        description: Alarm name.
      call: cloudwatch.describe-alarm
      with:
        alarm_name: '{{alarm_name}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.MetricAlarms[0].StateValue
      - name: reason
        type: string
        mapping: $.MetricAlarms[0].StateReason
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: alarms
      path: /
      operations:
      - name: describe-alarm
        method: POST
Open in Framework → View in Fleet → aws-cloudwatch-streaming-alarm.yml

Searches Confluence for runbooks by keyword.

naftiko: '0.5'
info:
  label: Confluence Runbook Search
  description: Searches Confluence for runbooks by keyword.
  tags:
  - documentation
  - engineering
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: docs-ops
    port: 8080
    tools:
    - name: search-runbooks
      description: Search Confluence for runbook articles.
      inputParameters:
      - name: keyword
        in: body
        type: string
        description: Search keyword.
      call: confluence.search
      with:
        cql: type=page AND text~'{{keyword}}' AND space=RUNBOOKS
      outputParameters:
      - name: results
        type: array
        mapping: $.results[*]
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://nbc.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-runbook-search.yml

Creates a position requisition in Workday and notifies recruiting via Slack.

naftiko: '0.5'
info:
  label: Workday New Position Requisition
  description: Creates a position requisition in Workday and notifies recruiting via Slack.
  tags:
  - hr
  - recruiting
  - workday
  - slack
capability:
  exposes:
  - type: mcp
    namespace: recruiting-ops
    port: 8080
    tools:
    - name: create-requisition
      description: Create a Workday requisition and notify Slack.
      inputParameters:
      - name: job_title
        in: body
        type: string
        description: Job title.
      - name: department
        in: body
        type: string
        description: Department.
      steps:
      - name: create-req
        type: call
        call: workday.create-requisition
        with:
          title: '{{job_title}}'
          department: '{{department}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: recruiting
          text: 'New req: {{job_title}} in {{department}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/nbc
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: requisitions
      path: /Recruiting/v40.0
      operations:
      - name: create-requisition
        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 → workday-new-position-requisition.yml

Lists media assets in an S3 bucket by prefix for content management.

naftiko: '0.5'
info:
  label: AWS S3 Media Asset Lookup
  description: Lists media assets in an S3 bucket by prefix for content management.
  tags:
  - media
  - storage
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: media-ops
    port: 8080
    tools:
    - name: list-media-assets
      description: Given an S3 bucket and prefix, list available media assets.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: S3 bucket.
      - name: prefix
        in: body
        type: string
        description: S3 key prefix.
      call: s3.list-objects
      with:
        bucket: '{{bucket}}'
        prefix: '{{prefix}}'
      outputParameters:
      - name: objects
        type: array
        mapping: $.Contents[*].Key
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{bucket}}
      inputParameters:
      - name: bucket
        in: path
      operations:
      - name: list-objects
        method: GET
Open in Framework → View in Fleet → aws-s3-media-asset-lookup.yml

Triggers a Tableau extract refresh for the viewership analytics dashboard and notifies Slack.

naftiko: '0.5'
info:
  label: Tableau Viewership Dashboard Refresh
  description: Triggers a Tableau extract refresh for the viewership analytics dashboard and notifies Slack.
  tags:
  - analytics
  - streaming
  - tableau
  - slack
capability:
  exposes:
  - type: mcp
    namespace: bi-ops
    port: 8080
    tools:
    - name: refresh-viewership-dashboard
      description: Trigger a Tableau refresh and notify Slack.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau workbook ID.
      steps:
      - name: refresh
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: '{{workbook_id}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: analytics
          text: 'Viewership dashboard refresh triggered. Job: {{refresh.job.id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.nbc.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
  - type: http
    namespace: slack
    baseUri: 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 → tableau-viewership-dashboard-refresh.yml

Uploads a content asset to S3 for CDN delivery and notifies the content ops Slack channel.

naftiko: '0.5'
info:
  label: AWS S3 Content Delivery Upload
  description: Uploads a content asset to S3 for CDN delivery and notifies the content ops Slack channel.
  tags:
  - media
  - content-delivery
  - amazon-s3
  - slack
capability:
  exposes:
  - type: mcp
    namespace: content-delivery
    port: 8080
    tools:
    - name: upload-content-asset
      description: Upload a content asset to S3 and notify Slack.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: S3 bucket.
      - name: key
        in: body
        type: string
        description: S3 key.
      - name: source_url
        in: body
        type: string
        description: Source URL.
      steps:
      - name: upload
        type: call
        call: s3.put-object
        with:
          bucket: '{{bucket}}'
          key: '{{key}}'
          source: '{{source_url}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: content-ops
          text: 'Content uploaded: s3://{{bucket}}/{{key}}'
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
  - type: http
    namespace: slack
    baseUri: 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 → aws-s3-content-delivery-upload.yml

Reports overdue Jira tickets to the engineering Slack channel.

naftiko: '0.5'
info:
  label: Jira Overdue Ticket Report
  description: Reports overdue Jira tickets to the engineering Slack channel.
  tags:
  - engineering
  - project-management
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: eng-ops
    port: 8080
    tools:
    - name: report-overdue
      description: Search Jira for overdue tickets and post count to Slack.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      steps:
      - name: search
        type: call
        call: jira.search-issues
        with:
          jql: project={{project_key}} AND duedate < now() AND status != Done
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: engineering
          text: 'Overdue in {{project_key}}: {{search.total}} tickets'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nbc.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
  - type: http
    namespace: slack
    baseUri: 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 → jira-overdue-ticket-report.yml

Invokes a Lambda function for content processing tasks.

naftiko: '0.5'
info:
  label: AWS Lambda Content Processor
  description: Invokes a Lambda function for content processing tasks.
  tags:
  - engineering
  - serverless
  - aws
  - aws-lambda
capability:
  exposes:
  - type: mcp
    namespace: content-ops
    port: 8080
    tools:
    - name: invoke-content-processor
      description: Invoke a content processing Lambda with a JSON payload.
      inputParameters:
      - name: function_name
        in: body
        type: string
        description: Lambda function name.
      - name: payload
        in: body
        type: string
        description: JSON payload.
      call: lambda.invoke-function
      with:
        function_name: '{{function_name}}'
        payload: '{{payload}}'
      outputParameters:
      - name: status_code
        type: integer
        mapping: $.StatusCode
      - name: result
        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-function
        method: POST
Open in Framework → View in Fleet → aws-lambda-content-processor.yml

Submits a batch of news scripts or documents to Anthropic Claude for summarization and writes the output back to a SharePoint document library for editorial review.

naftiko: '0.5'
info:
  label: Anthropic Content Summarization
  description: Submits a batch of news scripts or documents to Anthropic Claude for summarization and writes the output back to a SharePoint document library for editorial review.
  tags:
  - ai
  - content
  - anthropic
  - sharepoint
  - editorial
capability:
  exposes:
  - type: mcp
    namespace: ai-content
    port: 8080
    tools:
    - name: summarize-content
      description: Given a document URL and content type, send the text to Anthropic Claude for summarization and save the summary to a SharePoint library. Use for news script review, briefing prep, or editorial content processing.
      inputParameters:
      - name: content_text
        in: body
        type: string
        description: The raw text content to be summarized.
      - name: content_type
        in: body
        type: string
        description: 'Content type hint: news_script, briefing, or report.'
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID where the summary will be saved.
      steps:
      - name: generate-summary
        type: call
        call: anthropic.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Summarize the following {{content_type}} in 3-5 sentences: {{content_text}}'
      - name: save-summary
        type: call
        call: sharepoint-ai.create-file
        with:
          site_id: '{{sharepoint_site_id}}'
          content: '{{generate-summary.text}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: sharepoint-ai
    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
Open in Framework → View in Fleet → anthropic-content-summarization.yml

When an employee submits an expense report in SAP Concur that exceeds the policy threshold, creates a ServiceNow approval task for the finance manager and notifies them in Teams.

naftiko: '0.5'
info:
  label: Concur Expense Report Approval
  description: When an employee submits an expense report in SAP Concur that exceeds the policy threshold, creates a ServiceNow approval task for the finance manager and notifies them in Teams.
  tags:
  - finance
  - expense-management
  - sap-concur
  - servicenow
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: finance-expenses
    port: 8080
    tools:
    - name: route-expense-approval
      description: Given a Concur expense report ID and total amount, check if amount exceeds policy threshold and route to the finance manager via ServiceNow task and Teams notification. Use for automated expense approval routing.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      - name: total_amount
        in: body
        type: number
        description: The total expense amount in USD.
      - name: policy_threshold
        in: body
        type: number
        description: The approval threshold in USD. Reports above this require manager approval.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: create-approval
        type: call
        call: servicenow-exp.create-task
        with:
          short_description: 'Expense approval required: Report {{report_id}} - ${{total_amount}}'
          category: finance_expense
      - name: notify-manager
        type: call
        call: msteams-exp.send-message
        with:
          recipient_upn: '{{get-report.manager_email}}'
          text: 'Expense report {{report_id}} for ${{total_amount}} requires your approval. ServiceNow task: {{create-approval.number}}'
  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-exp
    baseUri: https://nbc.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-exp
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → concur-expense-report-approval.yml

When AWS Cost Anomaly Detection fires, creates a Jira FinOps ticket and posts to Slack.

naftiko: '0.5'
info:
  label: AWS Cost Anomaly Alert
  description: When AWS Cost Anomaly Detection fires, creates a Jira FinOps ticket and posts to Slack.
  tags:
  - finops
  - cloud
  - aws
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Create a Jira ticket and alert Slack for a cost anomaly.
      inputParameters:
      - name: anomaly_id
        in: body
        type: string
        description: Anomaly ID.
      - name: service_name
        in: body
        type: string
        description: AWS service.
      - name: overage_usd
        in: body
        type: number
        description: Estimated overage.
      steps:
      - name: create-jira
        type: call
        call: jira.create-issue
        with:
          project_key: FINOPS
          issuetype: Task
          summary: 'Cost anomaly: {{service_name}} +${{overage_usd}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: cloud-finops
          text: 'Cost anomaly on {{service_name}}: +${{overage_usd}} | Jira: {{create-jira.key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → aws-cost-anomaly-alert.yml

Queries Salesforce for current quarter ad sales pipeline and posts to Slack.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Pipeline
  description: Queries Salesforce for current quarter ad sales pipeline and posts to Slack.
  tags:
  - sales
  - advertising
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ad-sales
    port: 8080
    tools:
    - name: post-pipeline
      description: Query Salesforce pipeline and post to Slack.
      inputParameters:
      - name: slack_channel
        in: body
        type: string
        description: Slack channel.
      steps:
      - name: query
        type: call
        call: salesforce.query
        with:
          q: SELECT StageName, SUM(Amount) total FROM Opportunity WHERE CloseDate = THIS_QUARTER GROUP BY StageName
      - name: post
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Pipeline: {{query.records}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: slack
    baseUri: 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-opportunity-pipeline.yml

Retrieves the state of a Grafana alert monitoring streaming infrastructure.

naftiko: '0.5'
info:
  label: Grafana Streaming Alert Status
  description: Retrieves the state of a Grafana alert monitoring streaming infrastructure.
  tags:
  - monitoring
  - streaming
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-alert-status
      description: Given a Grafana alert UID, return its state.
      inputParameters:
      - name: rule_uid
        in: body
        type: string
        description: Alert rule UID.
      call: grafana.get-alert-rule
      with:
        uid: '{{rule_uid}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.nbc.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: alert-rules
      path: /v1/provisioning/alert-rules/{{uid}}
      inputParameters:
      - name: uid
        in: path
      operations:
      - name: get-alert-rule
        method: GET
Open in Framework → View in Fleet → grafana-streaming-alert-status.yml

Retrieves all Okta group memberships for a user for quarterly access certification.

naftiko: '0.5'
info:
  label: Okta Quarterly Access Certification
  description: Retrieves all Okta group memberships for a user for quarterly access certification.
  tags:
  - identity
  - access-management
  - okta
capability:
  exposes:
  - type: mcp
    namespace: iam
    port: 8080
    tools:
    - name: get-user-access
      description: Given an Okta user ID, return all group memberships for certification.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: Okta user ID.
      call: okta.list-groups
      with:
        user_id: '{{user_id}}'
      outputParameters:
      - name: groups
        type: array
        mapping: $.[*].profile.name
  consumes:
  - type: http
    namespace: okta
    baseUri: https://nbc.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: user-groups
      path: /users/{{user_id}}/groups
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: list-groups
        method: GET
Open in Framework → View in Fleet → okta-quarterly-access-certification.yml

At the start of performance review season, queries Workday for eligible employees and creates review tasks in ServiceNow for each manager to complete.

naftiko: '0.5'
info:
  label: Workday Performance Review Initiator
  description: At the start of performance review season, queries Workday for eligible employees and creates review tasks in ServiceNow for each manager to complete.
  tags:
  - hr
  - performance-management
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: initiate-performance-reviews
      description: Given a review cycle name and department, fetch eligible employees from Workday and create individual performance review tasks in ServiceNow for their managers. Use at the start of each review cycle.
      inputParameters:
      - name: review_cycle
        in: body
        type: string
        description: Name of the performance review cycle (e.g., 2026-H1).
      - name: department
        in: body
        type: string
        description: Department name to scope the review initiation.
      steps:
      - name: get-eligible-employees
        type: call
        call: workday-perf.get-workers-by-department
        with:
          department: '{{department}}'
      - name: create-review-tasks
        type: call
        call: servicenow-perf.create-task
        with:
          short_description: Performance review {{review_cycle}} for {{department}}
          category: hr_performance
  consumes:
  - type: http
    namespace: workday-perf
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers-by-department
      path: /nbc/workers
      inputParameters:
      - name: department
        in: query
      operations:
      - name: get-workers-by-department
        method: GET
  - type: http
    namespace: servicenow-perf
    baseUri: https://nbc.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → workday-performance-review-initiator.yml

Retrieves a talent or vendor contract from SAP Ariba by contract ID.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Lookup
  description: Retrieves a talent or vendor contract from SAP Ariba by contract ID.
  tags:
  - procurement
  - contracts
  - sap-ariba
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: get-contract
      description: Given an Ariba contract ID, return status and expiry.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: SAP Ariba contract ID.
      call: ariba.get-contract
      with:
        contract_id: '{{contract_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: expiry
        type: string
        mapping: $.expirationDate
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/contract-compliance/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: contracts
      path: /contracts/{{contract_id}}
      inputParameters:
      - name: contract_id
        in: path
      operations:
      - name: get-contract
        method: GET
Open in Framework → View in Fleet → sap-ariba-contract-lookup.yml

Queries Snowflake for Peacock streaming engagement metrics and posts a daily digest to Slack.

naftiko: '0.5'
info:
  label: Peacock Streaming Metrics Report
  description: Queries Snowflake for Peacock streaming engagement metrics and posts a daily digest to Slack.
  tags:
  - streaming
  - analytics
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: streaming-ops
    port: 8080
    tools:
    - name: post-streaming-digest
      description: Fetch daily streaming metrics and post to the streaming analytics Slack channel.
      inputParameters:
      - name: slack_channel
        in: body
        type: string
        description: Slack channel.
      steps:
      - name: fetch-metrics
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT total_streams, unique_viewers, avg_watch_time_min FROM daily_streaming_metrics WHERE date = CURRENT_DATE - 1
      - name: post-digest
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Peacock daily metrics: {{fetch-metrics.data}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nbc.snowflakecomputing.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 → peacock-streaming-metrics-report.yml

Queries Salesforce for ad sales pipeline and posts quarterly forecast to Slack.

naftiko: '0.5'
info:
  label: Salesforce Ad Revenue Forecast
  description: Queries Salesforce for ad sales pipeline and posts quarterly forecast to Slack.
  tags:
  - advertising
  - sales
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ad-sales
    port: 8080
    tools:
    - name: post-revenue-forecast
      description: Query Salesforce ad pipeline and post forecast to Slack.
      inputParameters:
      - name: slack_channel
        in: body
        type: string
        description: Slack channel.
      steps:
      - name: query-pipeline
        type: call
        call: salesforce.query
        with:
          q: SELECT StageName, SUM(Amount) total FROM Opportunity WHERE RecordType.Name = 'Ad Sales' AND CloseDate = THIS_QUARTER GROUP BY StageName
      - name: post-forecast
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Ad revenue forecast: {{query-pipeline.records}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: slack
    baseUri: 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-ad-revenue-forecast.yml

Retrieves the status of a Databricks content analytics job run.

naftiko: '0.5'
info:
  label: Databricks Content Analytics Pipeline
  description: Retrieves the status of a Databricks content analytics job run.
  tags:
  - data-engineering
  - analytics
  - databricks
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Given a run ID, return Databricks job status.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: Databricks run ID.
      call: databricks.get-run
      with:
        run_id: '{{run_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.state.life_cycle_state
      - name: result
        type: string
        mapping: $.state.result_state
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://nbc.cloud.databricks.com/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: runs
      path: /jobs/runs/get
      inputParameters:
      - name: run_id
        in: query
      operations:
      - name: get-run
        method: GET
Open in Framework → View in Fleet → databricks-content-analytics-pipeline.yml

Retrieves the running state of an EC2 instance.

naftiko: '0.5'
info:
  label: AWS EC2 Instance Status
  description: Retrieves the running state of an EC2 instance.
  tags:
  - cloud
  - infrastructure
  - aws
  - ec2
capability:
  exposes:
  - type: mcp
    namespace: cloud-ops
    port: 8080
    tools:
    - name: get-ec2-status
      description: Given an instance ID, return state and type.
      inputParameters:
      - name: instance_id
        in: body
        type: string
        description: EC2 instance ID.
      call: ec2.describe-instance
      with:
        instance_id: '{{instance_id}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.Reservations[0].Instances[0].State.Name
  consumes:
  - type: http
    namespace: ec2
    baseUri: https://ec2.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: instances
      path: /
      operations:
      - name: describe-instance
        method: GET
Open in Framework → View in Fleet → aws-ec2-instance-status.yml

When a change request is submitted in ServiceNow, notifies approvers via Microsoft Teams and awaits approval or rejection before proceeding with the deployment window.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Approval
  description: When a change request is submitted in ServiceNow, notifies approvers via Microsoft Teams and awaits approval or rejection before proceeding with the deployment window.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: itsm-change
    port: 8080
    tools:
    - name: submit-change-request
      description: Given a change description, risk level, and planned start time, create a ServiceNow change request and notify the CAB approvers via Teams. Use before any production deployment or infrastructure change.
      inputParameters:
      - name: change_description
        in: body
        type: string
        description: Human-readable description of the change.
      - name: risk
        in: body
        type: string
        description: 'Change risk level: low, medium, or high.'
      - name: planned_start
        in: body
        type: string
        description: Planned start datetime in ISO 8601 format.
      steps:
      - name: create-change
        type: call
        call: servicenow-chg.create-change
        with:
          short_description: '{{change_description}}'
          risk: '{{risk}}'
          start_date: '{{planned_start}}'
      - name: notify-approvers
        type: call
        call: msteams-chg.post-message
        with:
          channel_id: $secrets.cab_channel_id
          text: 'Change Request {{create-change.number}} submitted for approval. Risk: {{risk}}. Planned: {{planned_start}}. Description: {{change_description}}'
  consumes:
  - type: http
    namespace: servicenow-chg
    baseUri: https://nbc.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: msteams-chg
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-approval.yml

When a new job requisition is approved in Workday, creates a corresponding LinkedIn job posting and notifies the talent acquisition team in Teams.

naftiko: '0.5'
info:
  label: Workday Job Requisition Publisher
  description: When a new job requisition is approved in Workday, creates a corresponding LinkedIn job posting and notifies the talent acquisition team in Teams.
  tags:
  - hr
  - recruiting
  - workday
  - linkedin
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition
    port: 8080
    tools:
    - name: publish-job-requisition
      description: Given a Workday job requisition ID, fetch job details and publish the posting to LinkedIn, then notify the talent acquisition Teams channel. Use when a new requisition is approved in Workday.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition ID.
      steps:
      - name: get-requisition
        type: call
        call: workday-rec.get-job-requisition
        with:
          req_id: '{{requisition_id}}'
      - name: post-to-linkedin
        type: call
        call: linkedin-jobs.create-job-posting
        with:
          title: '{{get-requisition.job_title}}'
          description: '{{get-requisition.description}}'
          location: '{{get-requisition.location}}'
          company_urn: $secrets.nbc_linkedin_org_urn
      - name: notify-ta-team
        type: call
        call: msteams-ta.post-message
        with:
          channel_id: $secrets.ta_channel_id
          text: 'New job posted: {{get-requisition.job_title}} | LinkedIn posting: {{post-to-linkedin.job_url}}'
  consumes:
  - type: http
    namespace: workday-rec
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /nbc/jobRequisitions/{{req_id}}
      inputParameters:
      - name: req_id
        in: path
      operations:
      - name: get-job-requisition
        method: GET
  - type: http
    namespace: linkedin-jobs
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-postings
      path: /jobPostings
      operations:
      - name: create-job-posting
        method: POST
  - type: http
    namespace: msteams-ta
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-job-requisition-publisher.yml

Queries Snowflake for failed or stalled data pipeline runs and creates a Jira incident ticket, then posts a summary to the data engineering Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Check
  description: Queries Snowflake for failed or stalled data pipeline runs and creates a Jira incident ticket, then posts a summary to the data engineering Teams channel.
  tags:
  - data
  - analytics
  - snowflake
  - jira
  - microsoft-teams
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Query Snowflake task history for failed or stalled tasks within a time window and create a Jira incident if failures are found. Use for automated data pipeline monitoring.
      inputParameters:
      - name: lookback_hours
        in: body
        type: integer
        description: Number of hours to look back for failed pipeline tasks.
      steps:
      - name: query-failures
        type: call
        call: snowflake.query-task-history
        with:
          lookback_hours: '{{lookback_hours}}'
      - name: create-incident
        type: call
        call: jira-data.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: Snowflake pipeline failures detected in last {{lookback_hours}}h
      - name: notify-data-team
        type: call
        call: msteams-data.post-message
        with:
          channel_id: $secrets.data_eng_channel_id
          text: 'Pipeline health check: failures detected. Jira: {{create-incident.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://nbc.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /statements
      operations:
      - name: query-task-history
        method: POST
  - type: http
    namespace: jira-data
    baseUri: https://nbc.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams-data
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-health-check.yml

Searches Datadog logs by query string for debugging.

naftiko: '0.5'
info:
  label: Datadog Log Search
  description: Searches Datadog logs by query string for debugging.
  tags:
  - engineering
  - observability
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: search-logs
      description: Given a log query, return matching entries.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Log search query.
      call: datadog.search-logs
      with:
        query: '{{query}}'
      outputParameters:
      - name: logs
        type: array
        mapping: $.data
  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: logs
      path: /logs/events/search
      operations:
      - name: search-logs
        method: POST
Open in Framework → View in Fleet → datadog-log-search.yml

Posts a show premiere announcement to the marketing Slack channel with viewership goals.

naftiko: '0.5'
info:
  label: Slack Show Premiere Announcement
  description: Posts a show premiere announcement to the marketing Slack channel with viewership goals.
  tags:
  - marketing
  - content-production
  - slack
capability:
  exposes:
  - type: mcp
    namespace: content-ops
    port: 8080
    tools:
    - name: announce-premiere
      description: Post a premiere announcement to Slack with details.
      inputParameters:
      - name: show_name
        in: body
        type: string
        description: Show name.
      - name: premiere_date
        in: body
        type: string
        description: Premiere date.
      - name: viewership_goal
        in: body
        type: string
        description: Target viewership.
      call: slack.post-message
      with:
        channel: marketing-content
        text: 'Premiere alert: {{show_name}} — {{premiere_date}} | Viewership goal: {{viewership_goal}}'
      outputParameters:
      - name: message_ts
        type: string
        mapping: $.ts
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-show-premiere-announcement.yml

At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow checklist task for the accounting team.

naftiko: '0.5'
info:
  label: Period-End Close Checklist
  description: At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow checklist task for the accounting team.
  tags:
  - finance
  - period-close
  - sap
  - servicenow
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: run-period-close-checklist
      description: Given a fiscal period and year, query SAP for open items and unposted journals, then generate a ServiceNow period-close checklist task. Use at month-end or quarter-end to support the accounting team.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: The fiscal period number (e.g., '006' for June).
      - name: fiscal_year
        in: body
        type: string
        description: The fiscal year (e.g., '2026').
      steps:
      - name: get-open-items
        type: call
        call: sap-close.get-open-items
        with:
          period: '{{fiscal_period}}'
          year: '{{fiscal_year}}'
      - name: create-checklist
        type: call
        call: servicenow-close.create-task
        with:
          short_description: Period close checklist FY{{fiscal_year}}/P{{fiscal_period}}
          description: 'Open items count: {{get-open-items.count}}. Review and clear all items before period close.'
          category: finance_close
  consumes:
  - type: http
    namespace: sap-close
    baseUri: https://nbc-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: journal-entries
      path: /A_JournalEntryItem
      inputParameters:
      - name: period
        in: query
      - name: year
        in: query
      operations:
      - name: get-open-items
        method: GET
  - type: http
    namespace: servicenow-close
    baseUri: https://nbc.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 → period-end-close-checklist.yml

Creates a Notion page for a new show bible and shares the link via Slack.

naftiko: '0.5'
info:
  label: Notion Show Bible Creation
  description: Creates a Notion page for a new show bible and shares the link via Slack.
  tags:
  - content-production
  - documentation
  - notion
  - slack
capability:
  exposes:
  - type: mcp
    namespace: content-ops
    port: 8080
    tools:
    - name: create-show-bible
      description: Create a Notion show bible page and share on Slack.
      inputParameters:
      - name: show_name
        in: body
        type: string
        description: Show name.
      - name: database_id
        in: body
        type: string
        description: Notion database ID.
      steps:
      - name: create-page
        type: call
        call: notion.create-page
        with:
          parent_database_id: '{{database_id}}'
          title: '{{show_name}} — Show Bible'
      - name: share
        type: call
        call: slack.post-message
        with:
          channel: production
          text: 'Show bible created: {{show_name}} — {{create-page.url}}'
  consumes:
  - type: http
    namespace: notion
    baseUri: https://api.notion.com/v1
    authentication:
      type: bearer
      token: $secrets.notion_token
    resources:
    - name: pages
      path: /pages
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: slack
    baseUri: 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 → notion-show-bible-creation.yml

When a vendor invoice is received in SAP Ariba, checks the matching purchase order status in SAP S/4HANA and routes the invoice for approval or exception handling via ServiceNow.

naftiko: '0.5'
info:
  label: SAP Invoice Approval Workflow
  description: When a vendor invoice is received in SAP Ariba, checks the matching purchase order status in SAP S/4HANA and routes the invoice for approval or exception handling via ServiceNow.
  tags:
  - finance
  - accounts-payable
  - sap
  - sap-ariba
  - servicenow
  - approval
capability:
  exposes:
  - type: mcp
    namespace: finance-ap
    port: 8080
    tools:
    - name: route-invoice-approval
      description: Given an Ariba invoice ID and PO number, verify PO status in SAP S/4HANA and create a ServiceNow approval task or exception ticket. Use for automated invoice matching and escalation.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: The SAP Ariba invoice document ID.
      - name: po_number
        in: body
        type: string
        description: The associated SAP purchase order number.
      steps:
      - name: get-invoice
        type: call
        call: ariba.get-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: check-po
        type: call
        call: sap-erp.get-po
        with:
          po_number: '{{po_number}}'
      - name: create-approval-task
        type: call
        call: servicenow-ap.create-task
        with:
          short_description: 'Invoice approval: {{invoice_id}} vs PO {{po_number}}'
          category: accounts_payable
          po_status: '{{check-po.status}}'
  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-erp
    baseUri: https://nbc-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: servicenow-ap
    baseUri: https://nbc.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-invoice-approval-workflow.yml

Retrieves a Zendesk viewer support ticket by ID.

naftiko: '0.5'
info:
  label: Zendesk Viewer Support Lookup
  description: Retrieves a Zendesk viewer support ticket by ID.
  tags:
  - support
  - customer-service
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: support-ops
    port: 8080
    tools:
    - name: get-viewer-ticket
      description: Given a ticket ID, return subject, status, and priority.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: 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://nbc.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}.json
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: get-ticket
        method: GET
Open in Framework → View in Fleet → zendesk-viewer-support-lookup.yml

Retrieves an advertising campaign from Salesforce by campaign ID, returning advertiser, budget, and flight dates.

naftiko: '0.5'
info:
  label: Salesforce Advertiser Campaign Lookup
  description: Retrieves an advertising campaign from Salesforce by campaign ID, returning advertiser, budget, and flight dates.
  tags:
  - advertising
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: ad-sales
    port: 8080
    tools:
    - name: get-campaign
      description: Given a Salesforce campaign ID, return advertiser, budget, and start/end dates.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Salesforce campaign ID.
      call: salesforce.get-campaign
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: advertiser
        type: string
        mapping: $.Account.Name
      - name: budget
        type: number
        mapping: $.BudgetedCost
      - name: start_date
        type: string
        mapping: $.StartDate
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
Open in Framework → View in Fleet → salesforce-advertiser-campaign-lookup.yml

Retrieves Microsoft 365 license usage data via Microsoft Graph.

naftiko: '0.5'
info:
  label: Microsoft 365 License Report
  description: Retrieves Microsoft 365 license usage data via Microsoft Graph.
  tags:
  - it-operations
  - license-management
  - microsoft-365
capability:
  exposes:
  - type: mcp
    namespace: it-ops
    port: 8080
    tools:
    - name: get-license-report
      description: Retrieve M365 license usage.
      inputParameters:
      - name: period
        in: body
        type: string
        description: Report period.
      call: msgraph.get-license-report
      with:
        period: '{{period}}'
      outputParameters:
      - name: data
        type: array
        mapping: $.value
  consumes:
  - type: http
    namespace: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: reports
      path: /reports/getOffice365ActiveUserDetail(period='{{period}}')
      inputParameters:
      - name: period
        in: path
      operations:
      - name: get-license-report
        method: GET
Open in Framework → View in Fleet → microsoft-365-license-report.yml

Retrieves ad serving metrics from Google Campaign Manager 360.

naftiko: '0.5'
info:
  label: Google Campaign Manager Report
  description: Retrieves ad serving metrics from Google Campaign Manager 360.
  tags:
  - advertising
  - analytics
  - google-campaign-manager
capability:
  exposes:
  - type: mcp
    namespace: ad-ops
    port: 8080
    tools:
    - name: get-campaign-report
      description: Given a Campaign Manager profile and report ID, return serving metrics.
      inputParameters:
      - name: profile_id
        in: body
        type: string
        description: CM360 profile ID.
      - name: report_id
        in: body
        type: string
        description: Report ID.
      call: cm360.get-report
      with:
        profile_id: '{{profile_id}}'
        report_id: '{{report_id}}'
      outputParameters:
      - name: data
        type: object
        mapping: $.rows
  consumes:
  - type: http
    namespace: cm360
    baseUri: https://dfareporting.googleapis.com/dfareporting/v4
    authentication:
      type: bearer
      token: $secrets.google_cm360_token
    resources:
    - name: reports
      path: /userprofiles/{{profile_id}}/reports/{{report_id}}/files
      inputParameters:
      - name: profile_id
        in: path
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → google-campaign-manager-report.yml

Creates a Zoom meeting for production crews and shares the link via Slack.

naftiko: '0.5'
info:
  label: Zoom Production Meeting Scheduler
  description: Creates a Zoom meeting for production crews and shares the link via Slack.
  tags:
  - collaboration
  - content-production
  - zoom
  - slack
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: schedule-production-meeting
      description: Create a Zoom meeting and share on Slack.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      - name: duration
        in: body
        type: integer
        description: Duration in minutes.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}}'
          duration: '{{duration}}'
      - name: share-link
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Production meeting: {{topic}} — {{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: slack
    baseUri: 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 → zoom-production-meeting-scheduler.yml

Assigns an Okta user to an application and logs to ServiceNow.

naftiko: '0.5'
info:
  label: Okta App Provisioning
  description: Assigns an Okta user to an application and logs to ServiceNow.
  tags:
  - identity
  - provisioning
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: iam-ops
    port: 8080
    tools:
    - name: assign-app
      description: Assign user to Okta app and log to ServiceNow.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: Okta user ID.
      - name: app_id
        in: body
        type: string
        description: Okta app ID.
      steps:
      - name: assign
        type: call
        call: okta.assign-app
        with:
          app_id: '{{app_id}}'
          user_id: '{{user_id}}'
      - name: log
        type: call
        call: servicenow.create-record
        with:
          table: u_access_audit
          user_id: '{{user_id}}'
          app: '{{app_id}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://nbc.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: app-users
      path: /apps/{{app_id}}/users
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: assign-app
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://nbc.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 → okta-app-provisioning.yml

Posts a show or event announcement to the NBC Discord community server.

naftiko: '0.5'
info:
  label: Discord Community Announcement
  description: Posts a show or event announcement to the NBC Discord community server.
  tags:
  - marketing
  - community
  - discord
capability:
  exposes:
  - type: mcp
    namespace: community-ops
    port: 8080
    tools:
    - name: post-discord-announcement
      description: Post an announcement to a Discord channel.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: Discord channel ID.
      - name: content
        in: body
        type: string
        description: Announcement content.
      call: discord.create-message
      with:
        channel_id: '{{channel_id}}'
        content: '{{content}}'
      outputParameters:
      - name: message_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: messages
      path: /channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: create-message
        method: POST
Open in Framework → View in Fleet → discord-community-announcement.yml

Triggers a dataset refresh in Power BI after a Snowflake data load completes and notifies the business intelligence team in Teams upon completion or failure.

naftiko: '0.5'
info:
  label: Power BI Report Refresh Trigger
  description: Triggers a dataset refresh in Power BI after a Snowflake data load completes and notifies the business intelligence team in Teams upon completion or failure.
  tags:
  - data
  - analytics
  - power-bi
  - snowflake
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: trigger-report-refresh
      description: Given a Power BI dataset ID and workspace ID, trigger a dataset refresh and post completion status to the BI team Teams channel. Use after Snowflake data loads complete.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID to refresh.
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace (group) ID containing the dataset.
      steps:
      - name: refresh-dataset
        type: call
        call: powerbi.trigger-refresh
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-bi-team
        type: call
        call: msteams-bi.post-message
        with:
          channel_id: $secrets.bi_team_channel_id
          text: Power BI dataset {{dataset_id}} refresh triggered in workspace {{workspace_id}}.
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: 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-bi
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → power-bi-report-refresh-trigger.yml

Sends a WhatsApp template message to viewers for show alerts.

naftiko: '0.5'
info:
  label: WhatsApp Viewer Notification
  description: Sends a WhatsApp template message to viewers for show alerts.
  tags:
  - communications
  - marketing
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: viewer-comms
    port: 8080
    tools:
    - name: send-viewer-alert
      description: Send a WhatsApp template message.
      inputParameters:
      - name: phone_number
        in: body
        type: string
        description: Viewer phone in E.164.
      - name: template_name
        in: body
        type: string
        description: Template name.
      call: whatsapp.send-template
      with:
        to: '{{phone_number}}'
        template: '{{template_name}}'
      outputParameters:
      - name: message_id
        type: string
        mapping: $.messages[0].id
  consumes:
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /{{phone_number_id}}/messages
      operations:
      - name: send-template
        method: POST
Open in Framework → View in Fleet → whatsapp-viewer-notification.yml

Submits a media frame to AWS Rekognition for content moderation analysis.

naftiko: '0.5'
info:
  label: AWS Rekognition Content Moderation
  description: Submits a media frame to AWS Rekognition for content moderation analysis.
  tags:
  - content-safety
  - ai
  - aws
capability:
  exposes:
  - type: mcp
    namespace: trust-safety
    port: 8080
    tools:
    - name: moderate-media-frame
      description: Given an S3 bucket and key for a media frame, run content moderation.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: S3 bucket.
      - name: key
        in: body
        type: string
        description: S3 object key.
      call: rekognition.detect-moderation-labels
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
      outputParameters:
      - name: labels
        type: array
        mapping: $.ModerationLabels
  consumes:
  - type: http
    namespace: rekognition
    baseUri: https://rekognition.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: moderation
      path: /
      operations:
      - name: detect-moderation-labels
        method: POST
Open in Framework → View in Fleet → aws-rekognition-content-moderation.yml

During open enrollment, pulls active employees from Workday and syncs their benefit elections to the ADP benefits module, then confirms enrollment status via Teams notification.

naftiko: '0.5'
info:
  label: Open Enrollment Benefits Sync
  description: During open enrollment, pulls active employees from Workday and syncs their benefit elections to the ADP benefits module, then confirms enrollment status via Teams notification.
  tags:
  - hr
  - benefits
  - open-enrollment
  - workday
  - adp
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-benefits
    port: 8080
    tools:
    - name: sync-benefit-elections
      description: Given an employee ID and a set of benefit election choices, sync the elections from Workday to ADP and send a Teams confirmation. Use during open enrollment or qualifying life events.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the enrolling employee.
      - name: benefit_plan_id
        in: body
        type: string
        description: The ADP benefit plan identifier selected by the employee.
      steps:
      - name: get-employee
        type: call
        call: workday-ben.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: submit-election
        type: call
        call: adp.update-benefit-election
        with:
          associate_oid: '{{get-employee.adp_oid}}'
          plan_id: '{{benefit_plan_id}}'
      - name: confirm-enrollment
        type: call
        call: msteams-ben.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: Your benefit election for plan {{benefit_plan_id}} has been submitted successfully.
  consumes:
  - type: http
    namespace: workday-ben
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /nbc/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: adp
    baseUri: https://api.adp.com
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: benefit-elections
      path: /benefits/v2/workers/{{associate_oid}}/benefit-elections
      inputParameters:
      - name: associate_oid
        in: path
      operations:
      - name: update-benefit-election
        method: POST
  - type: http
    namespace: msteams-ben
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → open-enrollment-benefits-sync.yml

Fetches resolved Jira issues for a version and creates a Confluence release notes page.

naftiko: '0.5'
info:
  label: Jira Release Notes Creation
  description: Fetches resolved Jira issues for a version and creates a Confluence release notes page.
  tags:
  - engineering
  - release-management
  - jira
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: release-ops
    port: 8080
    tools:
    - name: create-release-notes
      description: Given a project and version, create Confluence release notes.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      - name: version
        in: body
        type: string
        description: Fix version.
      steps:
      - name: get-issues
        type: call
        call: jira.search-issues
        with:
          jql: project={{project_key}} AND fixVersion='{{version}}' AND status=Done
      - name: create-page
        type: call
        call: confluence.create-content
        with:
          space_key: RELEASES
          title: Release Notes — {{version}}
          body: '{{get-issues.formatted}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nbc.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
  - type: http
    namespace: confluence
    baseUri: https://nbc.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: content
      path: /content
      operations:
      - name: create-content
        method: POST
Open in Framework → View in Fleet → jira-release-notes-creation.yml

Retrieves the status of an AWS Elemental MediaPackage live channel.

naftiko: '0.5'
info:
  label: AWS MediaPackage Channel Status
  description: Retrieves the status of an AWS Elemental MediaPackage live channel.
  tags:
  - streaming
  - media
  - aws
capability:
  exposes:
  - type: mcp
    namespace: streaming-ops
    port: 8080
    tools:
    - name: get-channel-status
      description: Given a MediaPackage channel ID, return status and endpoints.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: MediaPackage channel ID.
      call: mediapackage.describe-channel
      with:
        id: '{{channel_id}}'
      outputParameters:
      - name: arn
        type: string
        mapping: $.Arn
      - name: hls_ingest
        type: string
        mapping: $.HlsIngest.IngestEndpoints[0].Url
  consumes:
  - type: http
    namespace: mediapackage
    baseUri: https://mediapackage.us-east-1.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: channels
      path: /channels/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: describe-channel
        method: GET
Open in Framework → View in Fleet → aws-mediapackage-channel-status.yml

Retrieves Google Ads campaign performance metrics for media promotion campaigns.

naftiko: '0.5'
info:
  label: Google Ads Media Campaign Performance
  description: Retrieves Google Ads campaign performance metrics for media promotion campaigns.
  tags:
  - marketing
  - advertising
  - google-ads
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Given a Google Ads customer and campaign ID, return performance metrics.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Google Ads customer ID.
      - name: campaign_id
        in: body
        type: string
        description: Campaign ID.
      call: google-ads.get-campaign
      with:
        customer_id: '{{customer_id}}'
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: integer
        mapping: $.results[0].metrics.impressions
      - name: clicks
        type: integer
        mapping: $.results[0].metrics.clicks
      - name: cost_micros
        type: number
        mapping: $.results[0].metrics.costMicros
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v15
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/{{customer_id}}/googleAds:searchStream
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-campaign
        method: POST
Open in Framework → View in Fleet → google-ads-media-campaign-performance.yml

Pulls account activity, open opportunities, and support case counts from Salesforce to generate an account health scorecard posted to the account team in Teams.

naftiko: '0.5'
info:
  label: Salesforce Account Health Scorecard
  description: Pulls account activity, open opportunities, and support case counts from Salesforce to generate an account health scorecard posted to the account team in Teams.
  tags:
  - sales
  - crm
  - account-management
  - salesforce
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: crm-reporting
    port: 8080
    tools:
    - name: get-account-health
      description: Given a Salesforce account ID, aggregate open opportunities, recent activity, and open cases into a health scorecard and post to the account team in Teams. Use for quarterly business reviews.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID (18-character).
      steps:
      - name: get-account
        type: call
        call: salesforce-acct.get-account
        with:
          account_id: '{{account_id}}'
      - name: get-opportunities
        type: call
        call: salesforce-opps.search-opportunities
        with:
          account_id: '{{account_id}}'
      - name: post-scorecard
        type: call
        call: msteams-crm.post-message
        with:
          channel_id: $secrets.sales_channel_id
          text: 'Account Health: {{get-account.name}} | Open Opps: {{get-opportunities.count}} | ACV: {{get-opportunities.total_acv}}'
  consumes:
  - type: http
    namespace: salesforce-acct
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: salesforce-opps
    baseUri: https://nbc.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query
      operations:
      - name: search-opportunities
        method: GET
  - type: http
    namespace: msteams-crm
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-account-health-scorecard.yml

Retrieves PTO and sick leave balances from Workday.

naftiko: '0.5'
info:
  label: Workday Absence Balance Lookup
  description: Retrieves PTO and sick leave balances from Workday.
  tags:
  - hr
  - leave-management
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: get-absence-balance
      description: Given an employee ID, return PTO and sick leave balances.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-balance
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: pto_balance
        type: number
        mapping: $.Worker.TimeOff.PTO_Balance
      - name: sick_balance
        type: number
        mapping: $.Worker.TimeOff.Sick_Balance
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/nbc
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: absence
      path: /Human_Resources/v40.0/Get_Workers
      operations:
      - name: get-balance
        method: GET
Open in Framework → View in Fleet → workday-absence-balance-lookup.yml

Moves documents older than a specified age from active SharePoint document libraries to an archive site and creates a Jira record of the archival action.

naftiko: '0.5'
info:
  label: SharePoint Content Archive
  description: Moves documents older than a specified age from active SharePoint document libraries to an archive site and creates a Jira record of the archival action.
  tags:
  - content-management
  - sharepoint
  - jira
  - archival
capability:
  exposes:
  - type: mcp
    namespace: content-mgmt
    port: 8080
    tools:
    - name: archive-sharepoint-documents
      description: Given a SharePoint site ID, library name, and age threshold, move qualifying documents to the archive library and log the action in Jira. Use for automated content lifecycle management.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID containing the source library.
      - name: library_name
        in: body
        type: string
        description: The name of the document library to archive from.
      - name: age_days
        in: body
        type: integer
        description: Documents older than this number of days will be archived.
      steps:
      - name: move-documents
        type: call
        call: sharepoint.copy-item
        with:
          site_id: '{{site_id}}'
          library: '{{library_name}}'
          age_days: '{{age_days}}'
      - name: log-archival
        type: call
        call: jira-content.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Content archive: {{library_name}} documents >{{age_days}} days'
  consumes:
  - 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}}/drives
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: copy-item
        method: POST
  - type: http
    namespace: jira-content
    baseUri: https://nbc.atlassian.net/rest/api/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 → sharepoint-content-archive.yml

Retrieves sprint status for the content engineering Jira board.

naftiko: '0.5'
info:
  label: Jira Content Engineering Sprint Status
  description: Retrieves sprint status for the content engineering Jira board.
  tags:
  - engineering
  - jira
  - content
capability:
  exposes:
  - type: mcp
    namespace: content-eng
    port: 8080
    tools:
    - name: get-sprint-status
      description: Given a board ID, return sprint status.
      inputParameters:
      - name: board_id
        in: body
        type: integer
        description: Jira board ID.
      call: jira-content.get-sprints
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: sprints
        type: array
        mapping: $.values
  consumes:
  - type: http
    namespace: jira-content
    baseUri: https://netflix.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-sprints
        method: GET
Open in Framework → View in Fleet → jira-content-engineering-sprint-status.yml

Returns open bug count in the recommendation engine Jira project.

naftiko: '0.5'
info:
  label: Jira Recommendation Engine Bug Count
  description: Returns open bug count in the recommendation engine Jira project.
  tags:
  - ai
  - jira
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: rec-eng
    port: 8080
    tools:
    - name: get-rec-bugs
      description: Given a priority, return recommendation engine bug count.
      inputParameters:
      - name: priority
        in: body
        type: string
        description: Priority filter.
      call: jira-rec.search-issues
      with:
        jql: project = REC AND type = Bug AND status != Done AND priority = {{priority}}
      outputParameters:
      - name: total
        type: number
        mapping: $.total
  consumes:
  - type: http
    namespace: jira-rec
    baseUri: https://netflix.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-recommendation-engine-bug-count.yml

Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team.

naftiko: '0.5'
info:
  label: Netflix Content Pipeline Throughput Monitor
  description: Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - content-pipeline
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_pipe
    port: 8080
    tools:
    - name: handle-event
      description: Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-pipeline-throughput-monitor.yml

When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team.

naftiko: '0.5'
info:
  label: Netflix CDN Cache Purge Workflow
  description: When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team.
  tags:
  - streaming
  - new-relic
  - jira
  - slack
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: netflix_cdn_cache_pu
    port: 8080
    tools:
    - name: handle-event
      description: When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-cdn-cache-purge-workflow.yml

Queries Snowflake for the content acquisition pipeline funnel metrics.

naftiko: '0.5'
info:
  label: Snowflake Content Acquisition Funnel
  description: Queries Snowflake for the content acquisition pipeline funnel metrics.
  tags:
  - content
  - snowflake
  - acquisition
capability:
  exposes:
  - type: mcp
    namespace: snowflake_content_ac
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for the content acquisition pipeline funnel metrics.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-content-acquisition-funnel.yml

When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security.

naftiko: '0.5'
info:
  label: Netflix Security Vulnerability Response
  description: When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security.
  tags:
  - security
  - new-relic
  - jira
  - slack
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: netflix_security_vul
    port: 8080
    tools:
    - name: handle-event
      description: When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[security] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: security-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-security-vulnerability-response.yml

Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team.

naftiko: '0.5'
info:
  label: Netflix Open Connect Appliance Health
  description: Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - open-connect
capability:
  exposes:
  - type: mcp
    namespace: netflix_open_connect
    port: 8080
    tools:
    - name: handle-event
      description: Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-open-connect-appliance-health.yml

Checks video playback error rates from Datadog.

naftiko: '0.5'
info:
  label: Datadog Playback Error Rate Check
  description: Checks video playback error rates from Datadog.
  tags:
  - streaming
  - datadog
  - playback
capability:
  exposes:
  - type: mcp
    namespace: playback-ops
    port: 8080
    tools:
    - name: get-playback-errors
      description: Given a device type, return playback error rates.
      inputParameters:
      - name: device_type
        in: body
        type: string
        description: Device type (e.g. smart_tv, mobile).
      call: dd-playback.get-metrics
      with:
        query: avg:playback.error_rate{device:{{device_type}}}
      outputParameters:
      - name: series
        type: array
        mapping: $.series
  consumes:
  - type: http
    namespace: dd-playback
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → datadog-playback-error-rate-check.yml

When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team.

naftiko: '0.5'
info:
  label: Netflix Video Quality Degradation Handler
  description: When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team.
  tags:
  - streaming
  - new-relic
  - jira
  - slack
  - video-quality
capability:
  exposes:
  - type: mcp
    namespace: netflix_video_qualit
    port: 8080
    tools:
    - name: handle-event
      description: When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-video-quality-degradation-handler.yml

When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team.

naftiko: '0.5'
info:
  label: Netflix Content Moderation Escalation
  description: When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - moderation
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_mode
    port: 8080
    tools:
    - name: handle-event
      description: When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-moderation-escalation.yml

When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team.

naftiko: '0.5'
info:
  label: Netflix Encoding Pipeline Failure Handler
  description: When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - encoding
capability:
  exposes:
  - type: mcp
    namespace: netflix_encoding_pip
    port: 8080
    tools:
    - name: handle-event
      description: When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-encoding-pipeline-failure-handler.yml

Queries recommendation algorithm quality metrics from Snowflake.

naftiko: '0.5'
info:
  label: Snowflake Content Recommendation Quality
  description: Queries recommendation algorithm quality metrics from Snowflake.
  tags:
  - ai
  - snowflake
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: rec-analytics
    port: 8080
    tools:
    - name: get-rec-quality
      description: Given a model version, return recommendation quality metrics.
      inputParameters:
      - name: model_version
        in: body
        type: string
        description: Model version.
      call: snowflake-rec.run-query
      with:
        model: '{{model_version}}'
      outputParameters:
      - name: quality
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-rec
    baseUri: https://netflix.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-content-recommendation-quality.yml

When New Relic detects a service anomaly or SLO breach, opens a high-priority Jira incident, pages the on-call engineer via PagerDuty, and posts a war-room link to Slack.

naftiko: '0.5'
info:
  label: New Relic Service Anomaly Response
  description: When New Relic detects a service anomaly or SLO breach, opens a high-priority Jira incident, pages the on-call engineer via PagerDuty, and posts a war-room link to Slack.
  tags:
  - observability
  - incident-response
  - new-relic
  - jira
  - pagerduty
  - slack
capability:
  exposes:
  - type: mcp
    namespace: observability-ops
    port: 8080
    tools:
    - name: handle-service-anomaly
      description: Given a New Relic alert ID and affected service name, create a Jira P1 incident, trigger PagerDuty on-call escalation, and post a war-room Slack message. Invoke for any SLO breach or critical service anomaly.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The New Relic alert incident ID.
      - name: service_name
        in: body
        type: string
        description: The name of the affected Netflix service.
      - name: alert_message
        in: body
        type: string
        description: Human-readable description of the anomaly.
      steps:
      - name: create-incident
        type: call
        call: jira-incident.create-issue
        with:
          project_key: OPS
          issuetype: Incident
          summary: '[P1] Service anomaly: {{service_name}}'
          description: 'New Relic alert: {{alert_id}}

            {{alert_message}}'
          priority: Highest
      - name: page-oncall
        type: call
        call: pagerduty.trigger-incident
        with:
          title: '{{service_name}} anomaly: {{alert_message}}'
          severity: critical
          incident_key: nr-{{alert_id}}
      - name: post-warroom
        type: call
        call: slack-incident.post-message
        with:
          channel: incidents
          text: 'P1 Incident: {{service_name}} | {{alert_message}} | Jira: {{create-incident.key}} | PD: {{page-oncall.incident_url}}'
  consumes:
  - type: http
    namespace: jira-incident
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: trigger-incident
        method: POST
  - type: http
    namespace: slack-incident
    baseUri: 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-service-anomaly-response.yml

Queries Snowflake for recommendation engine accuracy metrics by algorithm variant.

naftiko: '0.5'
info:
  label: Snowflake Recommendation Accuracy Query
  description: Queries Snowflake for recommendation engine accuracy metrics by algorithm variant.
  tags:
  - streaming
  - snowflake
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: snowflake_recommenda
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for recommendation engine accuracy metrics by algorithm variant.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-recommendation-accuracy-query.yml

Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team.

naftiko: '0.5'
info:
  label: Netflix Partner Device Certification
  description: Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - partnerships
capability:
  exposes:
  - type: mcp
    namespace: netflix_partner_devi
    port: 8080
    tools:
    - name: handle-event
      description: Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-partner-device-certification.yml

Returns content team headcount and open positions from Workday.

naftiko: '0.5'
info:
  label: Workday Content Team Headcount Lookup
  description: Returns content team headcount and open positions from Workday.
  tags:
  - hr
  - workday
  - workforce
capability:
  exposes:
  - type: mcp
    namespace: workday_content_team
    port: 8080
    tools:
    - name: query-data
      description: Returns content team headcount and open positions from Workday.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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 → workday-content-team-headcount-lookup.yml

Returns status and details of a content engineering Jira ticket.

naftiko: '0.5'
info:
  label: Jira Content Engineering Ticket Lookup
  description: Returns status and details of a content engineering Jira ticket.
  tags:
  - devops
  - jira
  - content-engineering
capability:
  exposes:
  - type: mcp
    namespace: jira_content_enginee
    port: 8080
    tools:
    - name: query-data
      description: Returns status and details of a content engineering Jira ticket.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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 → jira-content-engineering-ticket-lookup.yml

Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack.

naftiko: '0.5'
info:
  label: Netflix Data Platform Health Digest
  description: Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack.
  tags:
  - data-engineering
  - snowflake
  - new-relic
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: netflix_data_platfor
    port: 8080
    tools:
    - name: handle-event
      description: Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[data-engineering] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: data-engineering-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-data-platform-health-digest.yml

Queries Datadog for streaming CDN latency metrics by region.

naftiko: '0.5'
info:
  label: Datadog Streaming CDN Latency Check
  description: Queries Datadog for streaming CDN latency metrics by region.
  tags:
  - streaming
  - datadog
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: cdn-ops
    port: 8080
    tools:
    - name: get-cdn-latency
      description: Given a region, return streaming CDN latency metrics from Datadog.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Geographic region.
      call: dd-cdn.get-metrics
      with:
        query: avg:cdn.latency{region:{{region}}}
      outputParameters:
      - name: series
        type: array
        mapping: $.series
  consumes:
  - type: http
    namespace: dd-cdn
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → datadog-streaming-cdn-latency-check.yml

Returns health status and error rates for a Netflix microservice from New Relic.

naftiko: '0.5'
info:
  label: New Relic Microservice Health Check
  description: Returns health status and error rates for a Netflix microservice from New Relic.
  tags:
  - observability
  - new-relic
  - microservices
capability:
  exposes:
  - type: mcp
    namespace: new_relic_microservi
    port: 8080
    tools:
    - name: query-data
      description: Returns health status and error rates for a Netflix microservice from New Relic.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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 → new-relic-microservice-health-check.yml

Returns active Netflix headcount grouped by cost center and department from Workday, used for workforce planning and finance allocation.

naftiko: '0.5'
info:
  label: Workday Headcount by Cost Center
  description: Returns active Netflix headcount grouped by cost center and department from Workday, used for workforce planning and finance allocation.
  tags:
  - hr
  - workforce-planning
  - reporting
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns all active Netflix employees grouped by cost center and department from Workday. Use for headcount planning, budget allocation, and executive workforce reports.
      call: workday-hc.list-workers
      outputParameters:
      - name: workers
        type: array
        mapping: $.data[*]
  consumes:
  - type: http
    namespace: workday-hc
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /netflix/workers
      operations:
      - name: list-workers
        method: GET
Open in Framework → View in Fleet → workday-headcount-by-cost-center.yml

Queries Snowflake for A/B test results including conversion rates and statistical significance.

naftiko: '0.5'
info:
  label: Snowflake A/B Test Results Query
  description: Queries Snowflake for A/B test results including conversion rates and statistical significance.
  tags:
  - analytics
  - snowflake
  - experimentation
capability:
  exposes:
  - type: mcp
    namespace: snowflake_ab_test_re
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for A/B test results including conversion rates and statistical significance.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-a-b-test-results-query.yml

When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team.

naftiko: '0.5'
info:
  label: Netflix Subscriber Churn Alert
  description: When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team.
  tags:
  - analytics
  - snowflake
  - jira
  - slack
  - retention
capability:
  exposes:
  - type: mcp
    namespace: netflix_subscriber_c
    port: 8080
    tools:
    - name: handle-event
      description: When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[analytics] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: analytics-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-subscriber-churn-alert.yml

Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack.

naftiko: '0.5'
info:
  label: Netflix Content Recommendation Refresh
  description: Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_reco
    port: 8080
    tools:
    - name: handle-event
      description: Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-recommendation-refresh.yml

When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team.

naftiko: '0.5'
info:
  label: Netflix Device Compatibility Regression
  description: When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - devices
capability:
  exposes:
  - type: mcp
    namespace: netflix_device_compa
    port: 8080
    tools:
    - name: handle-event
      description: When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-device-compatibility-regression.yml

Creates or updates an incident runbook page in Confluence from a structured template and posts the link to the relevant Slack on-call channel.

naftiko: '0.5'
info:
  label: Confluence Runbook Publisher
  description: Creates or updates an incident runbook page in Confluence from a structured template and posts the link to the relevant Slack on-call channel.
  tags:
  - itsm
  - documentation
  - confluence
  - slack
  - runbooks
capability:
  exposes:
  - type: mcp
    namespace: runbook-ops
    port: 8080
    tools:
    - name: publish-runbook
      description: Given a service name, runbook content, and Confluence space key, create or update the runbook page and post the page link to the on-call Slack channel. Use when a new service is deployed or when runbooks need updating.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The name of the service the runbook covers.
      - name: space_key
        in: body
        type: string
        description: The Confluence space key where the runbook will be published.
      - name: runbook_content
        in: body
        type: string
        description: The runbook body content in Confluence wiki markup or HTML.
      steps:
      - name: create-page
        type: call
        call: confluence.create-page
        with:
          space_key: '{{space_key}}'
          title: 'Runbook: {{service_name}}'
          body: '{{runbook_content}}'
      - name: notify-oncall
        type: call
        call: slack-runbook.post-message
        with:
          channel: on-call
          text: 'Runbook published for {{service_name}}: {{create-page.page_url}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://netflix.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: slack-runbook
    baseUri: 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 → confluence-runbook-publisher.yml

Queries Snowflake for subscriber growth metrics by region and tier.

naftiko: '0.5'
info:
  label: Snowflake Subscriber Growth Query
  description: Queries Snowflake for subscriber growth metrics by region and tier.
  tags:
  - analytics
  - snowflake
  - subscribers
capability:
  exposes:
  - type: mcp
    namespace: sub-analytics
    port: 8080
    tools:
    - name: get-subscriber-growth
      description: Given a region and period, return subscriber growth from Snowflake.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Region.
      - name: period
        in: body
        type: string
        description: Period.
      call: snowflake-subs.run-query
      with:
        region: '{{region}}'
        period: '{{period}}'
      outputParameters:
      - name: growth
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-subs
    baseUri: https://netflix.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-subscriber-growth-query.yml

Checks CI status for a branch in the Conductor workflow repository.

naftiko: '0.5'
info:
  label: GitHub Conductor Workflow Branch Status
  description: Checks CI status for a branch in the Conductor workflow repository.
  tags:
  - engineering
  - github
  - conductor
capability:
  exposes:
  - type: mcp
    namespace: conductor-dev
    port: 8080
    tools:
    - name: get-conductor-branch
      description: Given a branch name, return CI status.
      inputParameters:
      - name: branch_name
        in: body
        type: string
        description: Branch name.
      call: github-conductor.get-branch
      with:
        branch_name: '{{branch_name}}'
      outputParameters:
      - name: branch
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: github-conductor
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: branches
      path: /repos/Netflix/conductor/branches/{{branch_name}}
      inputParameters:
      - name: branch_name
        in: path
      operations:
      - name: get-branch
        method: GET
Open in Framework → View in Fleet → github-conductor-workflow-branch-status.yml

When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team.

naftiko: '0.5'
info:
  label: Netflix Chaos Engineering Experiment Tracker
  description: When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team.
  tags:
  - devops
  - new-relic
  - jira
  - slack
  - chaos-engineering
capability:
  exposes:
  - type: mcp
    namespace: netflix_chaos_engine
    port: 8080
    tools:
    - name: handle-event
      description: When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[devops] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: devops-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-chaos-engineering-experiment-tracker.yml

Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team.

naftiko: '0.5'
info:
  label: Netflix Accessibility Compliance Checker
  description: Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - accessibility
capability:
  exposes:
  - type: mcp
    namespace: netflix_accessibilit
    port: 8080
    tools:
    - name: handle-event
      description: Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-accessibility-compliance-checker.yml

Polls Snowflake task history for failed or stalled tasks over a configurable lookback window and publishes a pipeline health summary to the data platform Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Pipeline Run Monitor
  description: Polls Snowflake task history for failed or stalled tasks over a configurable lookback window and publishes a pipeline health summary to the data platform Slack channel.
  tags:
  - data
  - pipeline-monitoring
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-pipeline-ops
    port: 8080
    tools:
    - name: monitor-pipeline-runs
      description: Query Snowflake task execution history for failures within a lookback window and post a health summary to the data platform Slack channel. Use for scheduled pipeline health monitoring or on-demand triage.
      inputParameters:
      - name: lookback_hours
        in: body
        type: integer
        description: Number of hours to look back for failed Snowflake tasks.
      steps:
      - name: query-task-history
        type: call
        call: snowflake-monitor.execute-statement
        with:
          statement: SELECT * FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE state='FAILED' AND scheduled_time > DATEADD(hour, -{{lookback_hours}}, CURRENT_TIMESTAMP())
      - name: post-health-summary
        type: call
        call: slack-pipeline.post-message
        with:
          channel: data-platform-ops
          text: 'Pipeline Monitor (last {{lookback_hours}}h): {{query-task-history.row_count}} failed tasks detected.'
  consumes:
  - type: http
    namespace: snowflake-monitor
    baseUri: https://netflix.snowflakecomputing.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-pipeline
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-pipeline-run-monitor.yml

Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team.

naftiko: '0.5'
info:
  label: Netflix Content Launch Readiness Check
  description: Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - content-launch
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_laun
    port: 8080
    tools:
    - name: handle-event
      description: Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-launch-readiness-check.yml

Runs a data quality assertion query against a Snowflake table and opens a Jira data quality incident if row counts or null rates exceed thresholds, notifying the data engineering team in Slack.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Gate
  description: Runs a data quality assertion query against a Snowflake table and opens a Jira data quality incident if row counts or null rates exceed thresholds, notifying the data engineering team in Slack.
  tags:
  - data
  - data-quality
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Given a Snowflake table name and quality thresholds, execute a quality assertion query and open a Jira incident if thresholds are breached. Post results to the data engineering Slack channel. Use for automated pipeline quality gates.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: The fully qualified Snowflake table name (database.schema.table).
      - name: null_rate_threshold
        in: body
        type: number
        description: Maximum acceptable null rate (0.0 to 1.0) for key columns.
      - name: min_row_count
        in: body
        type: integer
        description: Minimum expected row count for the table.
      steps:
      - name: run-quality-query
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT COUNT(*) as row_count FROM {{table_name}}
      - name: open-incident
        type: call
        call: jira-dq.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: 'Data quality failure: {{table_name}}'
          description: 'Row count: {{run-quality-query.row_count}}. Threshold: {{min_row_count}}'
      - name: notify-data-team
        type: call
        call: slack-dq.post-message
        with:
          channel: data-quality-alerts
          text: 'DQ Check: {{table_name}} | Rows: {{run-quality-query.row_count}} | Jira: {{open-incident.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://netflix.snowflakecomputing.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-dq
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-dq
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-gate.yml

Queries content engagement funnel metrics from Snowflake.

naftiko: '0.5'
info:
  label: Snowflake Content Engagement Funnel
  description: Queries content engagement funnel metrics from Snowflake.
  tags:
  - analytics
  - snowflake
  - engagement
capability:
  exposes:
  - type: mcp
    namespace: engagement-analytics
    port: 8080
    tools:
    - name: get-engagement-funnel
      description: Given a title ID, return engagement funnel metrics.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: Netflix title ID.
      call: snowflake-engage.run-query
      with:
        title_id: '{{title_id}}'
      outputParameters:
      - name: funnel
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-engage
    baseUri: https://netflix.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-content-engagement-funnel.yml

When a GitHub pull request is opened against a main branch, triggers a security scan, posts findings as a PR comment, and opens a Jira security ticket for any critical findings.

naftiko: '0.5'
info:
  label: GitHub Pull Request Security Scan Orchestrator
  description: When a GitHub pull request is opened against a main branch, triggers a security scan, posts findings as a PR comment, and opens a Jira security ticket for any critical findings.
  tags:
  - devops
  - security
  - github
  - jira
  - code-review
capability:
  exposes:
  - type: mcp
    namespace: devops-security
    port: 8080
    tools:
    - name: scan-pull-request
      description: Given a GitHub repository, PR number, and branch, trigger a security scan via the GitHub Security API, post findings to the PR as a review comment, and open a Jira issue for critical vulnerabilities. Invoke on every PR opened against main or release branches.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: pr_number
        in: body
        type: integer
        description: The pull request number.
      - name: commit_sha
        in: body
        type: string
        description: The head commit SHA of the pull request.
      steps:
      - name: get-pr
        type: call
        call: github-pr.get-pull-request
        with:
          repo: '{{repository}}'
          pr_number: '{{pr_number}}'
      - name: get-scan-alerts
        type: call
        call: github-sec.list-code-scanning-alerts
        with:
          repo: '{{repository}}'
          ref: '{{commit_sha}}'
      - name: post-review-comment
        type: call
        call: github-review.create-review-comment
        with:
          repo: '{{repository}}'
          pr_number: '{{pr_number}}'
          body: 'Security scan complete. Alerts: {{get-scan-alerts.count}}. Critical: {{get-scan-alerts.critical_count}}'
      - name: open-security-ticket
        type: call
        call: jira-sec.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: Security findings in {{repository}} PR#{{pr_number}}
          priority: High
  consumes:
  - type: http
    namespace: github-pr
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /repos/{{repo}}/pulls/{{pr_number}}
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: get-pull-request
        method: GET
  - 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: ref
        in: query
      operations:
      - name: list-code-scanning-alerts
        method: GET
  - type: http
    namespace: github-review
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: review-comments
      path: /repos/{{repo}}/pulls/{{pr_number}}/reviews
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: create-review-comment
        method: POST
  - type: http
    namespace: jira-sec
    baseUri: https://netflix.atlassian.net/rest/api/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-orchestrator.yml

Identifies Okta users without MFA enrolled in a target group and sends each user a Slack reminder message with enrollment instructions, plus creates a compliance Jira ticket.

naftiko: '0.5'
info:
  label: Okta MFA Compliance Enforcer
  description: Identifies Okta users without MFA enrolled in a target group and sends each user a Slack reminder message with enrollment instructions, plus creates a compliance Jira ticket.
  tags:
  - identity
  - security
  - okta
  - jira
  - slack
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: mfa-compliance
    port: 8080
    tools:
    - name: enforce-mfa-enrollment
      description: Given an Okta group ID, identify users without MFA enrolled, send each user a Slack reminder, and create a Jira compliance remediation ticket. Use for monthly MFA enforcement cycles.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Okta group ID to check for MFA enrollment.
      steps:
      - name: get-non-mfa-users
        type: call
        call: okta-compliance.list-users-without-mfa
        with:
          group_id: '{{group_id}}'
      - name: send-reminder
        type: call
        call: slack-mfa.post-message
        with:
          channel: security-reminders
          text: 'MFA enforcement: {{get-non-mfa-users.count}} users in group {{group_id}} still need to enroll in MFA. Reminder messages sent.'
      - name: create-compliance-ticket
        type: call
        call: jira-compliance.create-issue
        with:
          project_key: SEC
          issuetype: Task
          summary: 'MFA non-compliance: {{get-non-mfa-users.count}} users in group {{group_id}}'
  consumes:
  - type: http
    namespace: okta-compliance
    baseUri: https://netflix.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users-without-mfa
      path: /groups/{{group_id}}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: list-users-without-mfa
        method: GET
  - type: http
    namespace: slack-mfa
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: jira-compliance
    baseUri: https://netflix.atlassian.net/rest/api/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-mfa-compliance-enforcer.yml

Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack.

naftiko: '0.5'
info:
  label: Netflix Interactive Content Performance
  description: Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - interactive
capability:
  exposes:
  - type: mcp
    namespace: netflix_interactive_
    port: 8080
    tools:
    - name: handle-event
      description: Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-interactive-content-performance.yml

At the start of a performance review cycle, fetches eligible employees from Workday by department and creates a Jira task for each manager to complete their team's reviews.

naftiko: '0.5'
info:
  label: Workday Performance Review Campaign
  description: At the start of a performance review cycle, fetches eligible employees from Workday by department and creates a Jira task for each manager to complete their team's reviews.
  tags:
  - hr
  - performance-management
  - workday
  - jira
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: launch-review-campaign
      description: Given a review cycle name and department, fetch eligible employees from Workday and create individual performance review Jira tasks for each manager. Use to kick off annual or bi-annual performance cycles.
      inputParameters:
      - name: review_cycle
        in: body
        type: string
        description: Name of the performance review cycle (e.g., 2026-Annual).
      - name: department
        in: body
        type: string
        description: Department name to scope the launch.
      steps:
      - name: get-eligible-employees
        type: call
        call: workday-pr.get-workers-by-department
        with:
          department: '{{department}}'
      - name: create-review-tasks
        type: call
        call: jira-pr.create-issue
        with:
          project_key: HR
          issuetype: Task
          summary: 'Performance reviews {{review_cycle}}: {{department}}'
          description: 'Eligible employees: {{get-eligible-employees.count}}'
  consumes:
  - type: http
    namespace: workday-pr
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers-by-department
      path: /netflix/workers
      inputParameters:
      - name: department
        in: query
      operations:
      - name: get-workers-by-department
        method: GET
  - type: http
    namespace: jira-pr
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → workday-performance-review-campaign.yml

Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team.

naftiko: '0.5'
info:
  label: Netflix Content Localization Quality Check
  description: Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - localization
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_loca
    port: 8080
    tools:
    - name: handle-event
      description: Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-localization-quality-check.yml

Retrieves engineering team headcount from Workday.

naftiko: '0.5'
info:
  label: Workday Engineering Headcount
  description: Retrieves engineering team headcount from Workday.
  tags:
  - hr
  - workday
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: hr-analytics
    port: 8080
    tools:
    - name: get-eng-headcount
      description: Given a department, return headcount from Workday.
      inputParameters:
      - name: department
        in: body
        type: string
        description: Department name.
      call: workday-eng.get-headcount
      with:
        department: '{{department}}'
      outputParameters:
      - name: headcount
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: workday-eng
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/netflix
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: headcount
      path: /headcountReport
      inputParameters:
      - name: department
        in: query
      operations:
      - name: get-headcount
        method: GET
Open in Framework → View in Fleet → workday-engineering-headcount.yml

Queries Snowflake for studio production budget utilization by project.

naftiko: '0.5'
info:
  label: Snowflake Studio Production Budget Query
  description: Queries Snowflake for studio production budget utilization by project.
  tags:
  - finance
  - snowflake
  - studio
capability:
  exposes:
  - type: mcp
    namespace: snowflake_studio_pro
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for studio production budget utilization by project.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-studio-production-budget-query.yml

Retrieves compensation band details from Workday.

naftiko: '0.5'
info:
  label: Workday Compensation Band Lookup
  description: Retrieves compensation band details from Workday.
  tags:
  - hr
  - workday
  - compensation
capability:
  exposes:
  - type: mcp
    namespace: comp-ops
    port: 8080
    tools:
    - name: get-comp-band
      description: Given a job profile ID, return compensation band.
      inputParameters:
      - name: job_profile_id
        in: body
        type: string
        description: Job profile ID.
      call: workday-comp.get-band
      with:
        job_profile_id: '{{job_profile_id}}'
      outputParameters:
      - name: band
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: workday-comp
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/netflix
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: bands
      path: /compensationBands/{{job_profile_id}}
      inputParameters:
      - name: job_profile_id
        in: path
      operations:
      - name: get-band
        method: GET
Open in Framework → View in Fleet → workday-compensation-band-lookup.yml

Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack.

naftiko: '0.5'
info:
  label: Netflix Talent Engagement Tracker
  description: Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack.
  tags:
  - content
  - snowflake
  - salesforce
  - slack
  - talent
capability:
  exposes:
  - type: mcp
    namespace: netflix_talent_engag
    port: 8080
    tools:
    - name: handle-event
      description: Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-talent-engagement-tracker.yml

Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team.

naftiko: '0.5'
info:
  label: Netflix Ad Tier Revenue Monitor
  description: Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: netflix_ad_tier_reve
    port: 8080
    tools:
    - name: handle-event
      description: Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-ad-tier-revenue-monitor.yml

Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack.

naftiko: '0.5'
info:
  label: Netflix Global Launch Coordination
  description: Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - global-launch
capability:
  exposes:
  - type: mcp
    namespace: netflix_global_launc
    port: 8080
    tools:
    - name: handle-event
      description: Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-global-launch-coordination.yml

Returns the status and metrics for a content encoding job from Snowflake.

naftiko: '0.5'
info:
  label: Snowflake Encoding Job Status
  description: Returns the status and metrics for a content encoding job from Snowflake.
  tags:
  - streaming
  - snowflake
  - encoding
capability:
  exposes:
  - type: mcp
    namespace: snowflake_encoding_j
    port: 8080
    tools:
    - name: query-data
      description: Returns the status and metrics for a content encoding job from Snowflake.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-encoding-job-status.yml

When a job requisition is approved in Workday, publishes the role to LinkedIn and notifies the talent acquisition team in Slack with the posting URL.

naftiko: '0.5'
info:
  label: Workday Job Requisition to LinkedIn Publisher
  description: When a job requisition is approved in Workday, publishes the role to LinkedIn and notifies the talent acquisition team in Slack with the posting URL.
  tags:
  - hr
  - recruiting
  - workday
  - linkedin
  - slack
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition
    port: 8080
    tools:
    - name: publish-job-posting
      description: Given a Workday job requisition ID, fetch job details and publish the posting to LinkedIn, then notify the TA team in Slack. Use when a new requisition is approved in Workday.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition ID.
      steps:
      - name: get-requisition
        type: call
        call: workday-rec.get-job-requisition
        with:
          req_id: '{{requisition_id}}'
      - name: post-linkedin
        type: call
        call: linkedin.create-job-posting
        with:
          title: '{{get-requisition.job_title}}'
          description: '{{get-requisition.description}}'
          location: '{{get-requisition.location}}'
          company_urn: $secrets.netflix_linkedin_org_urn
      - name: notify-ta
        type: call
        call: slack-ta.post-message
        with:
          channel: talent-acquisition
          text: 'New role posted: {{get-requisition.job_title}} | LinkedIn: {{post-linkedin.job_url}}'
  consumes:
  - type: http
    namespace: workday-rec
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /netflix/jobRequisitions/{{req_id}}
      inputParameters:
      - name: req_id
        in: path
      operations:
      - name: get-job-requisition
        method: GET
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-postings
      path: /jobPostings
      operations:
      - name: create-job-posting
        method: POST
  - type: http
    namespace: slack-ta
    baseUri: 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 → workday-job-requisition-to-linkedin-publisher.yml

Queries Snowflake for subscriber retention and churn cohort analysis.

naftiko: '0.5'
info:
  label: Snowflake Subscriber Retention Query
  description: Queries Snowflake for subscriber retention and churn cohort analysis.
  tags:
  - analytics
  - snowflake
  - retention
capability:
  exposes:
  - type: mcp
    namespace: snowflake_subscriber
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for subscriber retention and churn cohort analysis.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-subscriber-retention-query.yml

Checks streaming service SLO status from New Relic.

naftiko: '0.5'
info:
  label: New Relic Streaming Service SLO Check
  description: Checks streaming service SLO status from New Relic.
  tags:
  - reliability
  - new-relic
  - slo
capability:
  exposes:
  - type: mcp
    namespace: slo-ops
    port: 8080
    tools:
    - name: get-streaming-slo
      description: Given an SLI name, return SLO status from New Relic.
      inputParameters:
      - name: sli_name
        in: body
        type: string
        description: SLI name.
      call: nr-slo.get-sli
      with:
        name: '{{sli_name}}'
      outputParameters:
      - name: slo
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: nr-slo
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: Api-Key
      value: $secrets.newrelic_api_key
      placement: header
    resources:
    - name: slis
      path: /sli
      inputParameters:
      - name: name
        in: query
      operations:
      - name: get-sli
        method: GET
Open in Framework → View in Fleet → new-relic-streaming-service-slo-check.yml

When Dependabot raises a critical or high vulnerability alert in a GitHub repository, opens a Jira security ticket and notifies the responsible team in Slack.

naftiko: '0.5'
info:
  label: GitHub Dependabot Alert Triage
  description: When Dependabot raises a critical or high vulnerability alert in a GitHub repository, opens a Jira security ticket and notifies the responsible team in Slack.
  tags:
  - security
  - devops
  - github
  - jira
  - slack
  - dependency-management
capability:
  exposes:
  - type: mcp
    namespace: security-vuln
    port: 8080
    tools:
    - name: triage-dependabot-alert
      description: Given a GitHub repository, Dependabot alert number, and severity, open a Jira security ticket and notify the repository owners in Slack. Use for automated vulnerability triage on critical and high severity Dependabot alerts.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: alert_number
        in: body
        type: integer
        description: The Dependabot security alert number.
      - name: severity
        in: body
        type: string
        description: 'Alert severity: critical, high, medium, or low.'
      - name: package_name
        in: body
        type: string
        description: The vulnerable package name.
      steps:
      - name: get-alert
        type: call
        call: github-vuln.get-dependabot-alert
        with:
          repo: '{{repository}}'
          alert_number: '{{alert_number}}'
      - name: create-ticket
        type: call
        call: jira-vuln.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: '[{{severity}}] Dependabot: {{package_name}} in {{repository}}'
          priority: High
      - name: notify-owners
        type: call
        call: slack-vuln.post-message
        with:
          channel: security-alerts
          text: 'Dependabot alert ({{severity}}): {{package_name}} in {{repository}}. Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: github-vuln
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alerts
      path: /repos/{{repo}}/dependabot/alerts/{{alert_number}}
      inputParameters:
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-dependabot-alert
        method: GET
  - type: http
    namespace: jira-vuln
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-vuln
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-dependabot-alert-triage.yml

When AWS Cost Explorer detects unusual spend on a service, creates a Jira FinOps review ticket and posts an alert to the cloud cost Slack channel with estimated overage details.

naftiko: '0.5'
info:
  label: AWS Cloud Cost Anomaly Responder
  description: When AWS Cost Explorer detects unusual spend on a service, creates a Jira FinOps review ticket and posts an alert to the cloud cost Slack channel with estimated overage details.
  tags:
  - cloud
  - finops
  - aws
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given an AWS service name, anomaly ID, and estimated excess cost, create a Jira cost-review task and notify the FinOps Slack channel. Invoke when AWS Cost Anomaly Detection fires an alert.
      inputParameters:
      - name: anomaly_id
        in: body
        type: string
        description: The AWS Cost Explorer anomaly detection ID.
      - name: service_name
        in: body
        type: string
        description: The AWS service experiencing the cost anomaly.
      - name: excess_cost_usd
        in: body
        type: number
        description: The estimated excess spend in USD.
      steps:
      - name: create-review-ticket
        type: call
        call: jira-finops.create-issue
        with:
          project_key: FINOPS
          issuetype: Task
          summary: 'AWS cost anomaly: {{service_name}} — ${{excess_cost_usd}} excess'
          description: 'Anomaly ID: {{anomaly_id}}'
      - name: alert-finops
        type: call
        call: slack-finops.post-message
        with:
          channel: cloud-cost-alerts
          text: 'Cost Anomaly: {{service_name}} | Excess: ${{excess_cost_usd}} | Jira: {{create-review-ticket.key}}'
  consumes:
  - type: http
    namespace: jira-finops
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: 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-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 → aws-cloud-cost-anomaly-responder.yml

Retrieves the latest Zuul gateway release from GitHub.

naftiko: '0.5'
info:
  label: GitHub Zuul Gateway Release Lookup
  description: Retrieves the latest Zuul gateway release from GitHub.
  tags:
  - engineering
  - github
  - zuul
capability:
  exposes:
  - type: mcp
    namespace: zuul-ops
    port: 8080
    tools:
    - name: get-zuul-release
      description: Return the latest Zuul release from GitHub.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: Repository name.
      call: github-zuul.get-release
      with:
        repo_name: '{{repo_name}}'
      outputParameters:
      - name: release
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: github-zuul
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/Netflix/{{repo_name}}/releases/latest
      inputParameters:
      - name: repo_name
        in: path
      operations:
      - name: get-release
        method: GET
Open in Framework → View in Fleet → github-zuul-gateway-release-lookup.yml

Fetches current SLO compliance metrics from New Relic and posts a weekly service health report to the engineering leadership Slack channel.

naftiko: '0.5'
info:
  label: New Relic SLO Weekly Report
  description: Fetches current SLO compliance metrics from New Relic and posts a weekly service health report to the engineering leadership Slack channel.
  tags:
  - observability
  - slo
  - new-relic
  - reporting
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slo-reporting
    port: 8080
    tools:
    - name: publish-slo-report
      description: Query New Relic for all SLO statuses and post a weekly compliance report to the engineering leadership Slack channel. Use for weekly engineering reviews and board-level reliability briefings.
      steps:
      - name: get-slo-status
        type: call
        call: newrelic-slo.list-service-levels
      - name: post-report
        type: call
        call: slack-slo.post-message
        with:
          channel: engineering-leadership
          text: 'Weekly SLO Report: {{get-slo-status.count}} service levels monitored. Compliant: {{get-slo-status.compliant_count}}.'
  consumes:
  - type: http
    namespace: newrelic-slo
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: X-Api-Key
      value: $secrets.newrelic_api_key
      placement: header
    resources:
    - name: service-levels
      path: /service_levels.json
      operations:
      - name: list-service-levels
        method: GET
  - type: http
    namespace: slack-slo
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-relic-slo-weekly-report.yml

Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team.

naftiko: '0.5'
info:
  label: Netflix Audio Quality Validation Workflow
  description: Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - audio
capability:
  exposes:
  - type: mcp
    namespace: netflix_audio_qualit
    port: 8080
    tools:
    - name: handle-event
      description: Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-audio-quality-validation-workflow.yml

Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team.

naftiko: '0.5'
info:
  label: Netflix Content Metadata Quality Audit
  description: Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - metadata
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_meta
    port: 8080
    tools:
    - name: handle-event
      description: Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-metadata-quality-audit.yml

After a P1 incident is resolved in Jira, automatically creates a Confluence post-mortem page from a template and links it back to the original Jira incident.

naftiko: '0.5'
info:
  label: Jira Incident Post-Mortem Creator
  description: After a P1 incident is resolved in Jira, automatically creates a Confluence post-mortem page from a template and links it back to the original Jira incident.
  tags:
  - itsm
  - incident-management
  - jira
  - confluence
  - post-mortem
capability:
  exposes:
  - type: mcp
    namespace: postmortem-ops
    port: 8080
    tools:
    - name: create-post-mortem
      description: Given a resolved Jira incident key, create a Confluence post-mortem page pre-filled with incident timeline, impact, and resolution details, then link the page back to the Jira issue. Use after every P1 or P2 incident is resolved.
      inputParameters:
      - name: incident_key
        in: body
        type: string
        description: The Jira incident issue key (e.g., OPS-1234).
      steps:
      - name: get-incident
        type: call
        call: jira-pm.get-issue
        with:
          issue_key: '{{incident_key}}'
      - name: create-pm-page
        type: call
        call: confluence-pm.create-page
        with:
          space_key: POSTMORTEMS
          title: 'Post-Mortem: {{get-incident.summary}} ({{incident_key}})'
          body: 'Incident: {{incident_key}}

            Summary: {{get-incident.summary}}

            Resolved: {{get-incident.resolution_date}}'
      - name: link-to-jira
        type: call
        call: jira-pm-link.add-remote-link
        with:
          issue_key: '{{incident_key}}'
          url: '{{create-pm-page.page_url}}'
          title: Post-Mortem Document
  consumes:
  - type: http
    namespace: jira-pm
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue/{{issue_key}}
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: get-issue
        method: GET
  - type: http
    namespace: confluence-pm
    baseUri: https://netflix.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: jira-pm-link
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: remote-links
      path: /issue/{{issue_key}}/remotelink
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: add-remote-link
        method: POST
Open in Framework → View in Fleet → jira-incident-post-mortem-creator.yml

When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team.

naftiko: '0.5'
info:
  label: Netflix Content Ratings Anomaly Detector
  description: When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - trust-safety
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_rati
    port: 8080
    tools:
    - name: handle-event
      description: When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-ratings-anomaly-detector.yml

Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack.

naftiko: '0.5'
info:
  label: Netflix Infrastructure Cost Optimization
  description: Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack.
  tags:
  - finops
  - snowflake
  - jira
  - slack
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: netflix_infrastructu
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[finops] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: finops-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-infrastructure-cost-optimization.yml

When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team.

naftiko: '0.5'
info:
  label: Netflix A/B Test Graduation Workflow
  description: When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team.
  tags:
  - analytics
  - snowflake
  - jira
  - slack
  - experimentation
capability:
  exposes:
  - type: mcp
    namespace: netflix_ab_test_grad
    port: 8080
    tools:
    - name: handle-event
      description: When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[analytics] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: analytics-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-a-b-test-graduation-workflow.yml

Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack.

naftiko: '0.5'
info:
  label: Netflix Subscriber Growth Forecast
  description: Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack.
  tags:
  - analytics
  - snowflake
  - jira
  - slack
  - growth
capability:
  exposes:
  - type: mcp
    namespace: netflix_subscriber_g
    port: 8080
    tools:
    - name: handle-event
      description: Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[analytics] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: analytics-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-subscriber-growth-forecast.yml

Submits user-generated content or subtitle text to Anthropic Claude for moderation analysis, logs the result in Snowflake, and flags problematic content for human review in Jira.

naftiko: '0.5'
info:
  label: Anthropic Content Moderation Assistant
  description: Submits user-generated content or subtitle text to Anthropic Claude for moderation analysis, logs the result in Snowflake, and flags problematic content for human review in Jira.
  tags:
  - ai
  - content-moderation
  - anthropic
  - snowflake
  - jira
capability:
  exposes:
  - type: mcp
    namespace: ai-moderation
    port: 8080
    tools:
    - name: moderate-content
      description: Given a piece of user-generated content or subtitle text and a content ID, submit it to Anthropic Claude for safety analysis, log the result in Snowflake, and open a Jira review task if flagged. Use for automated content safety screening.
      inputParameters:
      - name: content_id
        in: body
        type: string
        description: Unique identifier for the content being moderated.
      - name: content_text
        in: body
        type: string
        description: The text to be moderated.
      - name: content_type
        in: body
        type: string
        description: 'Type of content: user_review, subtitle, or comment.'
      steps:
      - name: analyze-content
        type: call
        call: anthropic.create-message
        with:
          model: claude-3-5-sonnet-20241022
          content: 'Analyze the following {{content_type}} for policy violations. Return JSON with fields: safe (boolean), reason (string). Content: {{content_text}}'
      - name: log-result
        type: call
        call: snowflake-mod.execute-statement
        with:
          statement: INSERT INTO content_moderation_log VALUES ('{{content_id}}', '{{analyze-content.safe}}', '{{analyze-content.reason}}', CURRENT_TIMESTAMP())
      - name: open-review-task
        type: call
        call: jira-mod.create-issue
        with:
          project_key: TRUST
          issuetype: Task
          summary: 'Content review required: {{content_id}}'
          description: 'AI moderation flag reason: {{analyze-content.reason}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: snowflake-mod
    baseUri: https://netflix.snowflakecomputing.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-mod
    baseUri: https://netflix.atlassian.net/rest/api/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 → anthropic-content-moderation-assistant.yml

When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team.

naftiko: '0.5'
info:
  label: Netflix Playback Error Spike Handler
  description: When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team.
  tags:
  - streaming
  - new-relic
  - pagerduty
  - slack
  - playback
capability:
  exposes:
  - type: mcp
    namespace: netflix_playback_err
    port: 8080
    tools:
    - name: handle-event
      description: When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-playback-error-spike-handler.yml

When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance.

naftiko: '0.5'
info:
  label: Netflix Studio Production Budget Alert
  description: When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance.
  tags:
  - finance
  - snowflake
  - jira
  - slack
  - studio
capability:
  exposes:
  - type: mcp
    namespace: netflix_studio_produ
    port: 8080
    tools:
    - name: handle-event
      description: When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[finance] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: finance-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-studio-production-budget-alert.yml

Before a payroll run, queries Workday for employees with missing or incomplete pay data (bank accounts, tax forms) and creates a Jira checklist for the payroll team to resolve.

naftiko: '0.5'
info:
  label: Workday Payroll Pre-Run Validation
  description: Before a payroll run, queries Workday for employees with missing or incomplete pay data (bank accounts, tax forms) and creates a Jira checklist for the payroll team to resolve.
  tags:
  - hr
  - payroll
  - workday
  - jira
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: validate-payroll-pre-run
      description: Given a payroll period and country code, query Workday for workers with incomplete pay data and create a Jira resolution checklist. Use before each payroll processing run.
      inputParameters:
      - name: payroll_period
        in: body
        type: string
        description: The payroll period identifier (e.g., 2026-06).
      - name: country_code
        in: body
        type: string
        description: Two-letter country code for the payroll run (e.g., US, GB).
      steps:
      - name: get-incomplete-workers
        type: call
        call: workday-payroll.get-workers-incomplete
        with:
          period: '{{payroll_period}}'
          country: '{{country_code}}'
      - name: create-checklist
        type: call
        call: jira-payroll.create-issue
        with:
          project_key: PAYROLL
          issuetype: Task
          summary: Payroll pre-run validation {{payroll_period}} ({{country_code}})
          description: 'Workers with incomplete data: {{get-incomplete-workers.count}}'
  consumes:
  - type: http
    namespace: workday-payroll
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers-incomplete
      path: /netflix/workers
      inputParameters:
      - name: period
        in: query
      - name: country
        in: query
      operations:
      - name: get-workers-incomplete
        method: GET
  - type: http
    namespace: jira-payroll
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → workday-payroll-pre-run-validation.yml

During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack.

naftiko: '0.5'
info:
  label: Netflix Live Event Monitoring Workflow
  description: During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack.
  tags:
  - streaming
  - new-relic
  - pagerduty
  - slack
  - live-events
capability:
  exposes:
  - type: mcp
    namespace: netflix_live_event_m
    port: 8080
    tools:
    - name: handle-event
      description: During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-live-event-monitoring-workflow.yml

Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack.

naftiko: '0.5'
info:
  label: Netflix Regional Content Strategy Digest
  description: Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - strategy
capability:
  exposes:
  - type: mcp
    namespace: netflix_regional_con
    port: 8080
    tools:
    - name: handle-event
      description: Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-regional-content-strategy-digest.yml

Audits GitHub repositories in the Netflix organization for missing branch protection rules and security policies, then opens Jira remediation tasks for non-compliant repos.

naftiko: '0.5'
info:
  label: GitHub Repository Security Policy Enforcer
  description: Audits GitHub repositories in the Netflix organization for missing branch protection rules and security policies, then opens Jira remediation tasks for non-compliant repos.
  tags:
  - security
  - github
  - compliance
  - jira
capability:
  exposes:
  - type: mcp
    namespace: security-enforcement
    port: 8080
    tools:
    - name: audit-repo-security-policy
      description: Given a GitHub organization and repository name, check for required branch protection and secret scanning policies. Open a Jira security remediation task for any gaps found. Use for monthly security compliance audits.
      inputParameters:
      - name: org
        in: body
        type: string
        description: The GitHub organization name.
      - name: repo_name
        in: body
        type: string
        description: The repository name to audit.
      steps:
      - name: get-branch-protection
        type: call
        call: github-policy.get-branch-protection
        with:
          org: '{{org}}'
          repo: '{{repo_name}}'
          branch: main
      - name: open-remediation-task
        type: call
        call: jira-policy.create-issue
        with:
          project_key: SEC
          issuetype: Task
          summary: 'Security policy gap: {{org}}/{{repo_name}}'
          description: 'Branch protection status: {{get-branch-protection.enabled}}'
  consumes:
  - type: http
    namespace: github-policy
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: branch-protection
      path: /repos/{{org}}/{{repo}}/branches/{{branch}}/protection
      inputParameters:
      - name: org
        in: path
      - name: repo
        in: path
      - name: branch
        in: path
      operations:
      - name: get-branch-protection
        method: GET
  - type: http
    namespace: jira-policy
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-repository-security-policy-enforcer.yml

Returns CDN performance metrics including cache hit rates and latency from New Relic.

naftiko: '0.5'
info:
  label: New Relic CDN Performance Check
  description: Returns CDN performance metrics including cache hit rates and latency from New Relic.
  tags:
  - streaming
  - new-relic
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: new_relic_cdn_perfor
    port: 8080
    tools:
    - name: query-data
      description: Returns CDN performance metrics including cache hit rates and latency from New Relic.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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 → new-relic-cdn-performance-check.yml

When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team.

naftiko: '0.5'
info:
  label: Netflix Recommendation Model Drift Alert
  description: When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: netflix_recommendati
    port: 8080
    tools:
    - name: handle-event
      description: When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-recommendation-model-drift-alert.yml

Queries Snowflake for title performance metrics including views, completion rate, and audience demographics.

naftiko: '0.5'
info:
  label: Snowflake Title Performance Query
  description: Queries Snowflake for title performance metrics including views, completion rate, and audience demographics.
  tags:
  - streaming
  - snowflake
  - content-analytics
capability:
  exposes:
  - type: mcp
    namespace: snowflake_title_perf
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for title performance metrics including views, completion rate, and audience demographics.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-title-performance-query.yml

Retrieves studio production tracking status from Jira.

naftiko: '0.5'
info:
  label: Jira Studio Production Tracker
  description: Retrieves studio production tracking status from Jira.
  tags:
  - content
  - jira
  - production
capability:
  exposes:
  - type: mcp
    namespace: studio-ops
    port: 8080
    tools:
    - name: get-production-status
      description: Given a project key, return studio production status.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      call: jira-studio.search-issues
      with:
        jql: project = {{project_key}} AND type = Story
      outputParameters:
      - name: issues
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: jira-studio
    baseUri: https://netflix.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-studio-production-tracker.yml

Queries Snowflake for content localization progress by language and title.

naftiko: '0.5'
info:
  label: Snowflake Content Localization Status
  description: Queries Snowflake for content localization progress by language and title.
  tags:
  - streaming
  - snowflake
  - localization
capability:
  exposes:
  - type: mcp
    namespace: snowflake_content_lo
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for content localization progress by language and title.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-content-localization-status.yml

Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team.

naftiko: '0.5'
info:
  label: Netflix Gaming Performance Monitor
  description: Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team.
  tags:
  - gaming
  - snowflake
  - jira
  - slack
  - performance
capability:
  exposes:
  - type: mcp
    namespace: netflix_gaming_perfo
    port: 8080
    tools:
    - name: handle-event
      description: Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[gaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: gaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-gaming-performance-monitor.yml

Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement.

naftiko: '0.5'
info:
  label: Snowflake Ad Tier Performance Query
  description: Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement.
  tags:
  - streaming
  - snowflake
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: snowflake_ad_tier_pe
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-ad-tier-performance-query.yml

When an employee termination is recorded in Workday, deactivates their Okta account, removes GitHub organization membership, archives their Confluence profile, and notifies their manager in Slack.

naftiko: '0.5'
info:
  label: Employee Offboarding Deprovisioner
  description: When an employee termination is recorded in Workday, deactivates their Okta account, removes GitHub organization membership, archives their Confluence profile, and notifies their manager in Slack.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - github
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID, deactivate Okta account, remove from GitHub org, and notify the manager in Slack. Invoke on confirmed termination in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the departing employee.
      steps:
      - name: get-employee
        type: call
        call: workday-off.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta-off.deactivate-user
        with:
          login: '{{get-employee.work_email}}'
      - name: remove-github
        type: call
        call: github-off.remove-org-member
        with:
          org: netflix
          username: '{{get-employee.github_username}}'
      - name: notify-manager
        type: call
        call: slack-off.post-message
        with:
          channel: '{{get-employee.manager_slack_id}}'
          text: Offboarding complete for {{get-employee.full_name}}. Okta and GitHub access have been revoked.
  consumes:
  - type: http
    namespace: workday-off
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /netflix/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-off
    baseUri: https://netflix.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: user-lifecycle
      path: /users/{{login}}/lifecycle/deactivate
      inputParameters:
      - name: login
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: github-off
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: org-members
      path: /orgs/{{org}}/members/{{username}}
      inputParameters:
      - name: org
        in: path
      - name: username
        in: path
      operations:
      - name: remove-org-member
        method: DELETE
  - type: http
    namespace: slack-off
    baseUri: 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 → employee-offboarding-deprovisioner.yml

Queries Snowflake for playback compatibility rates by device type and OS version.

naftiko: '0.5'
info:
  label: Snowflake Device Compatibility Query
  description: Queries Snowflake for playback compatibility rates by device type and OS version.
  tags:
  - streaming
  - snowflake
  - devices
capability:
  exposes:
  - type: mcp
    namespace: snowflake_device_com
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for playback compatibility rates by device type and OS version.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-device-compatibility-query.yml

Checks video encoding pipeline health from Datadog monitors.

naftiko: '0.5'
info:
  label: Datadog Encoding Pipeline Health Check
  description: Checks video encoding pipeline health from Datadog monitors.
  tags:
  - encoding
  - datadog
  - video
capability:
  exposes:
  - type: mcp
    namespace: encoding-ops
    port: 8080
    tools:
    - name: get-encoding-health
      description: Given a service name, return encoding pipeline health.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Encoding service name.
      call: dd-encode.get-monitors
      with:
        name: '{{service_name}}'
      outputParameters:
      - name: monitors
        type: array
        mapping: $.monitors
  consumes:
  - type: http
    namespace: dd-encode
    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: name
        in: query
      operations:
      - name: get-monitors
        method: GET
Open in Framework → View in Fleet → datadog-encoding-pipeline-health-check.yml

Schedules a company all-hands Zoom meeting, creates a Confluence agenda page, and sends Slack announcements to all-company channels.

naftiko: '0.5'
info:
  label: Zoom All-Hands Meeting Scheduler
  description: Schedules a company all-hands Zoom meeting, creates a Confluence agenda page, and sends Slack announcements to all-company channels.
  tags:
  - communication
  - zoom
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: comms-ops
    port: 8080
    tools:
    - name: schedule-all-hands
      description: Given an all-hands title, datetime, duration, and agenda content, schedule a Zoom meeting, publish the agenda to Confluence, and announce in Slack. Use for quarterly all-hands, town halls, and leadership briefings.
      inputParameters:
      - name: meeting_title
        in: body
        type: string
        description: Title of the all-hands meeting.
      - name: meeting_start
        in: body
        type: string
        description: Meeting start time in ISO 8601 format.
      - name: duration_minutes
        in: body
        type: integer
        description: Duration of the meeting in minutes.
      - name: agenda_content
        in: body
        type: string
        description: Agenda content in plain text or Confluence wiki markup.
      steps:
      - name: create-zoom-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{meeting_title}}'
          start_time: '{{meeting_start}}'
          duration: '{{duration_minutes}}'
      - name: publish-agenda
        type: call
        call: confluence-comms.create-page
        with:
          space_key: ALLHANDS
          title: 'Agenda: {{meeting_title}}'
          body: 'Join URL: {{create-zoom-meeting.join_url}}


            {{agenda_content}}'
      - name: announce-slack
        type: call
        call: slack-comms.post-message
        with:
          channel: company-all
          text: 'All-Hands: {{meeting_title}} scheduled for {{meeting_start}}. Join: {{create-zoom-meeting.join_url}} | Agenda: {{publish-agenda.page_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: confluence-comms
    baseUri: https://netflix.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: slack-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 → zoom-all-hands-meeting-scheduler.yml

Retrieves the latest Chaos Monkey release from GitHub.

naftiko: '0.5'
info:
  label: GitHub Chaos Monkey Release Lookup
  description: Retrieves the latest Chaos Monkey release from GitHub.
  tags:
  - reliability
  - github
  - chaos-engineering
capability:
  exposes:
  - type: mcp
    namespace: chaos-ops
    port: 8080
    tools:
    - name: get-chaos-release
      description: Return the latest Chaos Monkey release.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: Repository name.
      call: github-chaos.get-release
      with:
        repo_name: '{{repo_name}}'
      outputParameters:
      - name: release
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: github-chaos
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/Netflix/{{repo_name}}/releases/latest
      inputParameters:
      - name: repo_name
        in: path
      operations:
      - name: get-release
        method: GET
Open in Framework → View in Fleet → github-chaos-monkey-release-lookup.yml

Queries Snowflake for parental controls adoption and configuration rates.

naftiko: '0.5'
info:
  label: Snowflake Parental Controls Usage Query
  description: Queries Snowflake for parental controls adoption and configuration rates.
  tags:
  - streaming
  - snowflake
  - safety
capability:
  exposes:
  - type: mcp
    namespace: snowflake_parental_c
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for parental controls adoption and configuration rates.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-parental-controls-usage-query.yml

On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a New Relic deployment marker, and alerts the responsible team in Slack.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Failure Handler
  description: On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a New Relic deployment marker, and alerts the responsible team in Slack.
  tags:
  - devops
  - ci-cd
  - github
  - jira
  - new-relic
  - slack
capability:
  exposes:
  - type: mcp
    namespace: devops-ci
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions run ID, repository, branch, failing job name, and commit SHA, open a Jira bug, create a New Relic deployment event, and post an alert to the team's Slack channel. Invoke on any protected-branch pipeline failure.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch on which the failure occurred.
      - name: job_name
        in: body
        type: string
        description: The name of the failed job.
      - name: commit_sha
        in: body
        type: string
        description: The commit SHA that triggered the run.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel ID or name to notify.
      steps:
      - name: create-bug
        type: call
        call: jira-ci.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repository}} / {{branch}} — {{job_name}}'
          description: 'Run: {{run_id}}

            Commit: {{commit_sha}}'
      - name: create-nr-event
        type: call
        call: newrelic.create-deployment-marker
        with:
          entity_name: '{{repository}}'
          version: '{{commit_sha}}'
          description: 'Pipeline failure on {{branch}}: {{job_name}}'
      - name: alert-team
        type: call
        call: slack-ci.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}'
  consumes:
  - type: http
    namespace: jira-ci
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: X-Api-Key
      value: $secrets.newrelic_api_key
      placement: header
    resources:
    - name: deployments
      path: /deployments.json
      operations:
      - name: create-deployment-marker
        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 → ci-cd-pipeline-failure-handler.yml

Looks up content licensing deal details in Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Content Licensing Deal Lookup
  description: Looks up content licensing deal details in Salesforce.
  tags:
  - content
  - salesforce
  - licensing
capability:
  exposes:
  - type: mcp
    namespace: licensing-ops
    port: 8080
    tools:
    - name: get-licensing-deal
      description: Given an opportunity ID, return licensing deal details.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: Salesforce opportunity ID.
      call: sf-licensing.get-opportunity
      with:
        opportunity_id: '{{opportunity_id}}'
      outputParameters:
      - name: opportunity
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: sf-licensing
    baseUri: https://netflix.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
Open in Framework → View in Fleet → salesforce-content-licensing-deal-lookup.yml

When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition.

naftiko: '0.5'
info:
  label: Netflix Content Licensing Expiry Handler
  description: When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition.
  tags:
  - content
  - snowflake
  - jira
  - slack
  - content-licensing
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_lice
    port: 8080
    tools:
    - name: handle-event
      description: When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[content] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: content-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-licensing-expiry-handler.yml

Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack.

naftiko: '0.5'
info:
  label: Netflix Content Cost Per View Analysis
  description: Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack.
  tags:
  - finance
  - snowflake
  - jira
  - slack
  - content-analytics
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_cost
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[finance] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: finance-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-cost-per-view-analysis.yml

Pulls all active Okta users assigned to a specified application group and cross-references with Workday active workers to flag stale or orphaned access.

naftiko: '0.5'
info:
  label: Okta Access Review — Application Group Audit
  description: Pulls all active Okta users assigned to a specified application group and cross-references with Workday active workers to flag stale or orphaned access.
  tags:
  - identity
  - security
  - okta
  - workday
  - access-review
capability:
  exposes:
  - type: mcp
    namespace: identity-review
    port: 8080
    tools:
    - name: run-access-review
      description: Given an Okta group ID, list all group members and compare against active Workday workers to identify orphaned accounts. Use for quarterly access reviews and SOX compliance audits.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Okta group ID to audit.
      - name: app_name
        in: body
        type: string
        description: Human-readable application name for audit logging.
      steps:
      - name: get-group-members
        type: call
        call: okta-audit.get-group-members
        with:
          group_id: '{{group_id}}'
      - name: get-active-workers
        type: call
        call: workday-audit.list-workers
  consumes:
  - type: http
    namespace: okta-audit
    baseUri: https://netflix.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-members
      path: /groups/{{group_id}}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: get-group-members
        method: GET
  - type: http
    namespace: workday-audit
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: active-workers
      path: /netflix/workers
      operations:
      - name: list-workers
        method: GET
Open in Framework → View in Fleet → okta-access-review-application-group-audit.yml

When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team.

naftiko: '0.5'
info:
  label: Netflix Microservice Deployment Tracker
  description: When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team.
  tags:
  - devops
  - new-relic
  - servicenow
  - slack
  - deployments
capability:
  exposes:
  - type: mcp
    namespace: netflix_microservice
    port: 8080
    tools:
    - name: handle-event
      description: When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[devops] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: devops-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-microservice-deployment-tracker.yml

Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack.

naftiko: '0.5'
info:
  label: Netflix Content Premiere Analytics Digest
  description: Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - content-analytics
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_prem
    port: 8080
    tools:
    - name: handle-event
      description: Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-premiere-analytics-digest.yml

Retrieves PR review status in the streaming platform repository.

naftiko: '0.5'
info:
  label: GitHub Streaming Platform PR Status
  description: Retrieves PR review status in the streaming platform repository.
  tags:
  - engineering
  - github
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: stream-dev
    port: 8080
    tools:
    - name: get-stream-pr
      description: Given a PR number, return review status.
      inputParameters:
      - name: pr_number
        in: body
        type: integer
        description: PR number.
      call: github-stream.get-pr
      with:
        pr_number: '{{pr_number}}'
      outputParameters:
      - name: pr
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: github-stream
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pulls
      path: /repos/Netflix/streaming-platform/pulls/{{pr_number}}
      inputParameters:
      - name: pr_number
        in: path
      operations:
      - name: get-pr
        method: GET
Open in Framework → View in Fleet → github-streaming-platform-pr-status.yml

Returns open job requisitions from Workday.

naftiko: '0.5'
info:
  label: Workday Open Requisitions
  description: Returns open job requisitions from Workday.
  tags:
  - hr
  - workday
  - recruiting
capability:
  exposes:
  - type: mcp
    namespace: talent-ops
    port: 8080
    tools:
    - name: get-open-reqs
      description: Given a team, return open requisitions.
      inputParameters:
      - name: team
        in: body
        type: string
        description: Team name.
      call: workday-recruit.get-requisitions
      with:
        team: '{{team}}'
      outputParameters:
      - name: requisitions
        type: object
        mapping: $
  consumes:
  - type: http
    namespace: workday-recruit
    baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/netflix
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /jobRequisitions
      inputParameters:
      - name: team
        in: query
      operations:
      - name: get-requisitions
        method: GET
Open in Framework → View in Fleet → workday-open-requisitions.yml

Pulls competitive talent movement and hiring trend data from LinkedIn to generate a quarterly talent intelligence report, posted to the recruiting leadership Slack channel.

naftiko: '0.5'
info:
  label: LinkedIn Talent Intelligence Digest
  description: Pulls competitive talent movement and hiring trend data from LinkedIn to generate a quarterly talent intelligence report, posted to the recruiting leadership Slack channel.
  tags:
  - hr
  - recruiting
  - linkedin
  - talent-intelligence
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: talent-intelligence
    port: 8080
    tools:
    - name: digest-talent-trends
      description: Given a LinkedIn organization URN and date range, fetch talent flow and competitor hiring signals and post a quarterly intelligence summary to the recruiting leadership Slack channel. Use for strategic workforce planning.
      inputParameters:
      - name: org_urn
        in: body
        type: string
        description: The Netflix LinkedIn organization URN.
      - name: date_from
        in: body
        type: string
        description: Start date for the talent trend analysis in YYYY-MM-DD format.
      - name: date_to
        in: body
        type: string
        description: End date for the analysis in YYYY-MM-DD format.
      steps:
      - name: get-follower-stats
        type: call
        call: linkedin-talent.get-follower-statistics
        with:
          org_urn: '{{org_urn}}'
      - name: post-digest
        type: call
        call: slack-talent.post-message
        with:
          channel: recruiting-leadership
          text: 'Talent Intelligence Digest ({{date_from}}–{{date_to}}): Followers={{get-follower-stats.total_count}}, Growth={{get-follower-stats.growth_rate}}'
  consumes:
  - type: http
    namespace: linkedin-talent
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: follower-statistics
      path: /organizationalEntityFollowerStatistics
      inputParameters:
      - name: org_urn
        in: query
      operations:
      - name: get-follower-statistics
        method: GET
  - type: http
    namespace: slack-talent
    baseUri: 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 → linkedin-talent-intelligence-digest.yml

On a successful GitHub Actions deployment to production, creates a New Relic deployment marker, transitions the linked Jira issue to Done, and posts a release note to the engineering Slack channel.

naftiko: '0.5'
info:
  label: GitHub Deployment to Production Tracker
  description: On a successful GitHub Actions deployment to production, creates a New Relic deployment marker, transitions the linked Jira issue to Done, and posts a release note to the engineering Slack channel.
  tags:
  - devops
  - deployment
  - github
  - new-relic
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: devops-deploy
    port: 8080
    tools:
    - name: record-production-deployment
      description: Given a repository, commit SHA, environment, and Jira issue key, record a New Relic deployment marker, close the Jira issue, and post a release note to Slack. Use after every successful production deployment.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: commit_sha
        in: body
        type: string
        description: The deployed commit SHA.
      - name: environment
        in: body
        type: string
        description: The deployment environment (e.g., production, canary).
      - name: jira_issue_key
        in: body
        type: string
        description: Jira issue key to mark as Done (e.g., ENG-4321).
      steps:
      - name: create-nr-marker
        type: call
        call: newrelic-deploy.create-deployment-marker
        with:
          entity_name: '{{repository}}'
          version: '{{commit_sha}}'
          description: Deployed to {{environment}}
      - name: close-jira
        type: call
        call: jira-deploy.transition-issue
        with:
          issue_key: '{{jira_issue_key}}'
          transition_id: '31'
      - name: post-release
        type: call
        call: slack-deploy.post-message
        with:
          channel: releases
          text: 'Deployed {{repository}} ({{commit_sha}}) to {{environment}}. Jira: {{jira_issue_key}} closed.'
  consumes:
  - type: http
    namespace: newrelic-deploy
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: X-Api-Key
      value: $secrets.newrelic_api_key
      placement: header
    resources:
    - name: deployments
      path: /deployments.json
      operations:
      - name: create-deployment-marker
        method: POST
  - type: http
    namespace: jira-deploy
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issue-transitions
      path: /issue/{{issue_key}}/transitions
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: transition-issue
        method: POST
  - type: http
    namespace: slack-deploy
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-deployment-to-production-tracker.yml

Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team.

naftiko: '0.5'
info:
  label: Netflix ML Model Training Pipeline Monitor
  description: Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team.
  tags:
  - ml
  - snowflake
  - jira
  - slack
  - ml-ops
capability:
  exposes:
  - type: mcp
    namespace: netflix_ml_model_tra
    port: 8080
    tools:
    - name: handle-event
      description: Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[ml] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: ml-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-ml-model-training-pipeline-monitor.yml

Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack.

naftiko: '0.5'
info:
  label: Netflix Content Delivery Optimization
  description: Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack.
  tags:
  - streaming
  - snowflake
  - jira
  - slack
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: netflix_content_deli
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[streaming] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: streaming-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://netflix.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → netflix-content-delivery-optimization.yml

Queries Snowflake for content licensing costs by region and content category.

naftiko: '0.5'
info:
  label: Snowflake Content Licensing Cost Query
  description: Queries Snowflake for content licensing costs by region and content category.
  tags:
  - finance
  - snowflake
  - content-licensing
capability:
  exposes:
  - type: mcp
    namespace: snowflake_content_li
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for content licensing costs by region and content category.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-content-licensing-cost-query.yml

Queries Snowflake for adaptive bitrate streaming quality metrics by region.

naftiko: '0.5'
info:
  label: Snowflake Adaptive Bitrate Metrics
  description: Queries Snowflake for adaptive bitrate streaming quality metrics by region.
  tags:
  - streaming
  - snowflake
  - video-quality
capability:
  exposes:
  - type: mcp
    namespace: snowflake_adaptive_b
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for adaptive bitrate streaming quality metrics by region.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://netflix.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-adaptive-bitrate-metrics.yml

Lists all public or unarchived repositories in the Netflix GitHub organization and flags any that are missing required topics, descriptions, or CODEOWNERS files.

naftiko: '0.5'
info:
  label: GitHub Org Repo Audit
  description: Lists all public or unarchived repositories in the Netflix GitHub organization and flags any that are missing required topics, descriptions, or CODEOWNERS files.
  tags:
  - devops
  - github
  - compliance
  - audit
capability:
  exposes:
  - type: mcp
    namespace: github-audit
    port: 8080
    tools:
    - name: audit-org-repos
      description: Given a GitHub organization name, list all repositories and identify those missing required metadata (description, topics, CODEOWNERS). Returns a list of non-compliant repos for remediation. Use for quarterly repository governance audits.
      inputParameters:
      - name: org
        in: body
        type: string
        description: The GitHub organization name to audit.
      call: github-org.list-repos
      with:
        org: '{{org}}'
      outputParameters:
      - name: repos
        type: array
        mapping: $.items[*]
  consumes:
  - type: http
    namespace: github-org
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /orgs/{{org}}/repos
      inputParameters:
      - name: org
        in: path
      operations:
      - name: list-repos
        method: GET
Open in Framework → View in Fleet → github-org-repo-audit.yml

Creates a Zoom meeting and posts the join link to a Slack channel.

naftiko: '0.5'
info:
  label: Zoom Meeting Creator
  description: Creates a Zoom meeting and posts the join link to a Slack channel.
  tags:
  - communications
  - zoom
  - slack
capability:
  exposes:
  - type: mcp
    namespace: meeting-ops
    port: 8080
    tools:
    - name: create-zoom-meeting
      description: Create a Zoom meeting and share in Slack.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      - name: start_time
        in: body
        type: string
        description: Start time in ISO 8601.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel to post link.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}}'
          start_time: '{{start_time}}'
      - name: post-link
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Zoom meeting: {{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: slack
    baseUri: 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 → zoom-meeting-creator.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 7
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-7
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-7
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: media
          message: 'Workflow 7 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-7.yml

Pulls affiliate sign-up and conversion data from the affiliate platform, joins with subscription revenue in Snowflake, and updates the partnerships dashboard in Tableau.

naftiko: '0.5'
info:
  label: Affiliate Partner Performance Report
  description: Pulls affiliate sign-up and conversion data from the affiliate platform, joins with subscription revenue in Snowflake, and updates the partnerships dashboard in Tableau.
  tags:
  - marketing
  - advertising
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: affiliate-ops
    port: 8080
    tools:
    - name: report-affiliate-performance
      description: Generate an affiliate partner performance report.
      inputParameters:
      - name: partner_id
        in: body
        type: string
        description: The affiliate partner identifier.
      - name: date_start
        in: body
        type: string
        description: Report start date.
      - name: date_end
        in: body
        type: string
        description: Report end date.
      steps:
      - name: get-affiliate-data
        type: call
        call: affiliate-platform.get-partner-stats
        with:
          partner_id: '{{partner_id}}'
          start_date: '{{date_start}}'
          end_date: '{{date_end}}'
      - name: get-revenue-data
        type: call
        call: snowflake.execute-query
        with:
          query: SELECT SUM(revenue) as total_revenue FROM affiliate_subscriptions WHERE partner_id='{{partner_id}}'
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: affiliate_performance_ds
  consumes:
  - type: http
    namespace: affiliate-platform
    baseUri: https://api.paramount.com/affiliates/v1
    authentication:
      type: bearer
      token: $secrets.paramount_affiliate_token
    resources:
    - name: partners
      path: /partners/{{partner_id}}/stats
      inputParameters:
      - name: partner_id
        in: path
      operations:
      - name: get-partner-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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.paramount.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/paramount/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → affiliate-partner-performance-report.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 6
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-6
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-6
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MEDI
          summary: Task from workflow 6
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-6
        method: POST
  - type: http
    namespace: jira
    baseUri: https://paramount.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 → paramount-workflow-6.yml

Retrieves Paramount+ website traffic metrics from Google Analytics. Returns sessions, page views, average session duration, and top landing pages.

naftiko: '0.5'
info:
  label: Google Analytics Web Traffic Report
  description: Retrieves Paramount+ website traffic metrics from Google Analytics. Returns sessions, page views, average session duration, and top landing pages.
  tags:
  - marketing
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-web-traffic
      description: Get Paramount+ web traffic metrics from Google Analytics.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Report start date.
      - name: end_date
        in: body
        type: string
        description: Report end date.
      call: google-analytics.run-report
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: sessions
        type: integer
        mapping: $.rows[0].metricValues[0].value
      - name: page_views
        type: integer
        mapping: $.rows[0].metricValues[1].value
      - name: avg_session_duration
        type: number
        mapping: $.rows[0].metricValues[2].value
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/paramount/runReport
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-web-traffic-report.yml

Uploads a document to Box and creates a shared link for distribution.

naftiko: '0.5'
info:
  label: Box File Upload and Share
  description: Uploads a document to Box and creates a shared link for distribution.
  tags:
  - document-management
  - box
capability:
  exposes:
  - type: mcp
    namespace: file-sharing
    port: 8080
    tools:
    - name: upload-and-share-file
      description: Upload a file to Box and create a shared link.
      inputParameters:
      - name: folder_id
        in: body
        type: string
        description: The Box folder ID.
      - name: file_name
        in: body
        type: string
        description: The file name.
      steps:
      - name: upload-file
        type: call
        call: box.upload-file
        with:
          folder_id: '{{folder_id}}'
          file_name: '{{file_name}}'
      - name: create-link
        type: call
        call: box.create-shared-link
        with:
          file_id: '{{upload-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/content
      operations:
      - name: upload-file
        method: POST
    - name: shared-links
      path: /files/{{file_id}}?fields=shared_link
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: create-shared-link
        method: PUT
Open in Framework → View in Fleet → box-file-upload-and-share.yml

Retrieves licensing deal details from Salesforce, cross-references content availability windows, and stores licensing reports in Snowflake for the business affairs team.

naftiko: '0.5'
info:
  label: Content Licensing Agreement Tracker
  description: Retrieves licensing deal details from Salesforce, cross-references content availability windows, and stores licensing reports in Snowflake for the business affairs team.
  tags:
  - licensing
  - salesforce
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: licensing-ops
    port: 8080
    tools:
    - name: track-licensing-agreement
      description: Track a content licensing agreement and generate availability reports.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: The Salesforce licensing deal identifier.
      steps:
      - name: get-deal
        type: call
        call: salesforce.get-deal
        with:
          deal_id: '{{deal_id}}'
      - name: get-content-windows
        type: call
        call: cms.get-licensing-windows
        with:
          deal_id: '{{deal_id}}'
      - name: store-report
        type: call
        call: snowflake.insert-record
        with:
          table: licensing_reports
          data:
            deal_id: '{{deal_id}}'
            partner: '{{get-deal.partner_name}}'
            territories: '{{get-deal.territories}}'
            window_start: '{{get-content-windows.start_date}}'
            window_end: '{{get-content-windows.end_date}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://paramount.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: deals
      path: /sobjects/Licensing_Deal__c/{{deal_id}}
      inputParameters:
      - name: deal_id
        in: path
      operations:
      - name: get-deal
        method: GET
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: licensing
      path: /deals/{{deal_id}}/windows
      inputParameters:
      - name: deal_id
        in: path
      operations:
      - name: get-licensing-windows
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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 → content-licensing-agreement-tracker.yml

Publishes promotional content across Instagram, Facebook, and Twitter simultaneously from the creative asset library, and logs publication status in Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Social Media Content Publisher
  description: Publishes promotional content across Instagram, Facebook, and Twitter simultaneously from the creative asset library, and logs publication status in Salesforce Marketing Cloud.
  tags:
  - marketing
  - social-media
  - instagram
  - facebook
  - twitter
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: social-publishing
    port: 8080
    tools:
    - name: publish-social-content
      description: Publish promotional content across multiple social platforms and log status.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The creative asset identifier.
      - name: caption
        in: body
        type: string
        description: The post caption text.
      - name: campaign_id
        in: body
        type: string
        description: The marketing campaign identifier.
      steps:
      - name: get-asset
        type: call
        call: dam.get-asset
        with:
          asset_id: '{{asset_id}}'
      - name: post-instagram
        type: call
        call: meta-api.create-post
        with:
          platform: instagram
          media_url: '{{get-asset.url}}'
          caption: '{{caption}}'
      - name: post-facebook
        type: call
        call: meta-api.create-post
        with:
          platform: facebook
          media_url: '{{get-asset.url}}'
          caption: '{{caption}}'
      - name: post-twitter
        type: call
        call: twitter-api.create-tweet
        with:
          text: '{{caption}}'
          media_url: '{{get-asset.url}}'
      - name: log-publication
        type: call
        call: sfmc.create-data-extension-row
        with:
          data_extension: social_publications
          data:
            campaign_id: '{{campaign_id}}'
            asset_id: '{{asset_id}}'
            platforms: instagram,facebook,twitter
  consumes:
  - type: http
    namespace: dam
    baseUri: https://api.paramount.com/dam/v1
    authentication:
      type: bearer
      token: $secrets.paramount_dam_token
    resources:
    - name: assets
      path: /assets/{{asset_id}}
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: get-asset
        method: GET
  - type: http
    namespace: meta-api
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: posts
      path: /paramount/feed
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: twitter-api
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://paramount.rest.marketingcloudapis.com/data/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: data-extensions
      path: /customobjectdata/key/{{data_extension}}/rowset
      inputParameters:
      - name: data_extension
        in: path
      operations:
      - name: create-data-extension-row
        method: POST
Open in Framework → View in Fleet → social-media-content-publisher.yml

When a new title is approved for release, creates the catalog entry in the content management system, schedules distribution via the streaming platform, and notifies marketing in Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Release Orchestrator
  description: When a new title is approved for release, creates the catalog entry in the content management system, schedules distribution via the streaming platform, and notifies marketing in Microsoft Teams.
  tags:
  - content
  - streaming
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: content-release
    port: 8080
    tools:
    - name: orchestrate-content-release
      description: Orchestrate the release of a new title across content catalog, streaming platform, and marketing notification.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content title identifier.
      - name: release_date
        in: body
        type: string
        description: The planned release date in YYYY-MM-DD format.
      - name: content_type
        in: body
        type: string
        description: Type of content (movie, series, episode, special).
      steps:
      - name: create-catalog-entry
        type: call
        call: cms.create-title
        with:
          title_id: '{{title_id}}'
          release_date: '{{release_date}}'
          content_type: '{{content_type}}'
      - name: schedule-distribution
        type: call
        call: streaming-platform.schedule-release
        with:
          title_id: '{{title_id}}'
          release_date: '{{release_date}}'
          regions: all
      - name: notify-marketing
        type: call
        call: msteams.send-message
        with:
          channel_id: content-releases
          text: 'New release scheduled: {{title_id}} ({{content_type}}) on {{release_date}}. Distribution: {{schedule-distribution.status}}'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: titles
      path: /titles
      operations:
      - name: create-title
        method: POST
  - type: http
    namespace: streaming-platform
    baseUri: https://api.paramount.com/streaming/v1
    authentication:
      type: bearer
      token: $secrets.paramount_streaming_token
    resources:
    - name: releases
      path: /releases/schedule
      operations:
      - name: schedule-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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → content-release-orchestrator.yml

Pulls YouTube channel analytics for Paramount's official channels, aggregates with internal content performance data in Snowflake, and refreshes the content strategy dashboard.

naftiko: '0.5'
info:
  label: YouTube Channel Performance Report
  description: Pulls YouTube channel analytics for Paramount's official channels, aggregates with internal content performance data in Snowflake, and refreshes the content strategy dashboard.
  tags:
  - content
  - marketing
  - youtube
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: youtube-analytics
    port: 8080
    tools:
    - name: report-youtube-performance
      description: Generate a YouTube channel performance report with content strategy insights.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: The YouTube channel identifier.
      - name: start_date
        in: body
        type: string
        description: Report start date.
      - name: end_date
        in: body
        type: string
        description: Report end date.
      steps:
      - name: get-youtube-stats
        type: call
        call: youtube-api.get-channel-analytics
        with:
          channel_id: '{{channel_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: store-metrics
        type: call
        call: snowflake.insert-record
        with:
          table: youtube_analytics
          data:
            channel_id: '{{channel_id}}'
            views: '{{get-youtube-stats.views}}'
            subscribers_gained: '{{get-youtube-stats.subscribers_gained}}'
            watch_hours: '{{get-youtube-stats.watch_hours}}'
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: youtube_performance_ds
  consumes:
  - type: http
    namespace: youtube-api
    baseUri: https://youtubeanalytics.googleapis.com/v2
    authentication:
      type: bearer
      token: $secrets.google_youtube_token
    resources:
    - name: reports
      path: /reports?ids=channel==MINE
      operations:
      - name: get-channel-analytics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: tableau
    baseUri: https://tableau.paramount.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/paramount/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → youtube-channel-performance-report.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 4
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-4
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-4
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: MEDIA
          title: Report 4
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-4
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://paramount.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 → paramount-workflow-4.yml

Retrieves Google Ads campaign spending data by campaign ID. Returns total spend, impressions, clicks, and CPC.

naftiko: '0.5'
info:
  label: Google Ads Campaign Spend Lookup
  description: Retrieves Google Ads campaign spending data by campaign ID. Returns total spend, impressions, clicks, and CPC.
  tags:
  - advertising
  - google-ads
capability:
  exposes:
  - type: mcp
    namespace: ad-spending
    port: 8080
    tools:
    - name: get-campaign-spend
      description: Look up Google Ads campaign spend metrics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign identifier.
      - name: date
        in: body
        type: string
        description: The reporting date.
      call: google-ads.get-spend
      with:
        campaign_id: '{{campaign_id}}'
        date: '{{date}}'
      outputParameters:
      - name: total_spend
        type: number
        mapping: $.data.cost_micros
      - name: impressions
        type: integer
        mapping: $.data.impressions
      - name: clicks
        type: integer
        mapping: $.data.clicks
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/paramount/campaigns/{{campaign_id}}/metrics
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-spend
        method: GET
Open in Framework → View in Fleet → google-ads-campaign-spend-lookup.yml

Retrieves a digital asset (image, video, poster) from Paramount's DAM system by asset ID. Returns the asset URL, format, resolution, and usage rights.

naftiko: '0.5'
info:
  label: Digital Asset Retrieval
  description: Retrieves a digital asset (image, video, poster) from Paramount's DAM system by asset ID. Returns the asset URL, format, resolution, and usage rights.
  tags:
  - content
  - digital-assets
capability:
  exposes:
  - type: mcp
    namespace: asset-management
    port: 8080
    tools:
    - name: get-digital-asset
      description: Retrieve a digital asset and its metadata from the DAM.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The digital asset identifier.
      call: dam.get-asset
      with:
        asset_id: '{{asset_id}}'
      outputParameters:
      - name: url
        type: string
        mapping: $.data.download_url
      - name: format
        type: string
        mapping: $.data.format
      - name: resolution
        type: string
        mapping: $.data.resolution
      - name: rights
        type: object
        mapping: $.data.usage_rights
  consumes:
  - type: http
    namespace: dam
    baseUri: https://api.paramount.com/dam/v1
    authentication:
      type: bearer
      token: $secrets.paramount_dam_token
    resources:
    - name: assets
      path: /assets/{{asset_id}}
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: get-asset
        method: GET
Open in Framework → View in Fleet → digital-asset-retrieval.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 5
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-5
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-5.yml

Retrieves newsletter subscribers from MailChimp and syncs to Salesforce Marketing Cloud for unified audience management.

naftiko: '0.5'
info:
  label: MailChimp Newsletter Subscriber Sync
  description: Retrieves newsletter subscribers from MailChimp and syncs to Salesforce Marketing Cloud for unified audience management.
  tags:
  - marketing
  - mailchimp
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: subscriber-sync
    port: 8080
    tools:
    - name: sync-mailchimp-subscribers
      description: Sync MailChimp subscribers to SFMC.
      inputParameters:
      - name: list_id
        in: body
        type: string
        description: The MailChimp list identifier.
      steps:
      - name: get-subscribers
        type: call
        call: mailchimp.get-members
        with:
          list_id: '{{list_id}}'
      - name: sync-to-sfmc
        type: call
        call: sfmc.upsert-data-extension
        with:
          data_extension: mailchimp_subscribers
          rows: '{{get-subscribers.members}}'
  consumes:
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: lists
      path: /lists/{{list_id}}/members
      inputParameters:
      - name: list_id
        in: path
      operations:
      - name: get-members
        method: GET
  - type: http
    namespace: sfmc
    baseUri: https://paramount.rest.marketingcloudapis.com/data/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: data-extensions
      path: /customobjectdata/key/{{data_extension}}/rowset
      inputParameters:
      - name: data_extension
        in: path
      operations:
      - name: upsert-data-extension
        method: POST
Open in Framework → View in Fleet → mailchimp-newsletter-subscriber-sync.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 1
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-1
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-1
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://paramount.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 → paramount-workflow-1.yml

Triggers the media encoding pipeline for a new content asset, monitors progress via the encoding service, and updates the CMS with delivery URLs when complete.

naftiko: '0.5'
info:
  label: Content Encoding Pipeline Trigger
  description: Triggers the media encoding pipeline for a new content asset, monitors progress via the encoding service, and updates the CMS with delivery URLs when complete.
  tags:
  - content
  - streaming
  - encoding
capability:
  exposes:
  - type: mcp
    namespace: encoding-ops
    port: 8080
    tools:
    - name: trigger-encoding
      description: Trigger content encoding and update CMS with delivery URLs upon completion.
      inputParameters:
      - name: asset_id
        in: body
        type: string
        description: The source media asset identifier.
      - name: output_profiles
        in: body
        type: array
        description: List of encoding profiles (4K, HD, SD, mobile).
      steps:
      - name: start-encoding
        type: call
        call: encoding-service.submit-job
        with:
          asset_id: '{{asset_id}}'
          profiles: '{{output_profiles}}'
      - name: check-status
        type: call
        call: encoding-service.get-job-status
        with:
          job_id: '{{start-encoding.job_id}}'
      - name: update-cms
        type: call
        call: cms.update-delivery-urls
        with:
          asset_id: '{{asset_id}}'
          urls: '{{check-status.output_urls}}'
  consumes:
  - type: http
    namespace: encoding-service
    baseUri: https://api.paramount.com/encoding/v1
    authentication:
      type: bearer
      token: $secrets.paramount_encoding_token
    resources:
    - name: jobs
      path: /jobs
      operations:
      - name: submit-job
        method: POST
    - name: job-status
      path: /jobs/{{job_id}}
      inputParameters:
      - name: job_id
        in: path
      operations:
      - name: get-job-status
        method: GET
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: titles
      path: /titles/{{asset_id}}/delivery
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: update-delivery-urls
        method: PUT
Open in Framework → View in Fleet → content-encoding-pipeline-trigger.yml

Pulls ad impression and revenue data from Google Ads and the internal ad server, reconciles in Snowflake, and updates the advertising revenue dashboard in Tableau.

naftiko: '0.5'
info:
  label: Ad Campaign Revenue Tracker
  description: Pulls ad impression and revenue data from Google Ads and the internal ad server, reconciles in Snowflake, and updates the advertising revenue dashboard in Tableau.
  tags:
  - advertising
  - revenue
  - google-ads
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: ad-revenue
    port: 8080
    tools:
    - name: track-ad-revenue
      description: Track advertising revenue across platforms and update the revenue dashboard.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The advertising campaign identifier.
      - name: date
        in: body
        type: string
        description: The reporting date in YYYY-MM-DD format.
      steps:
      - name: get-google-ads-data
        type: call
        call: google-ads.get-campaign-revenue
        with:
          campaign_id: '{{campaign_id}}'
          date: '{{date}}'
      - name: get-internal-ad-data
        type: call
        call: ad-server.get-revenue
        with:
          campaign_id: '{{campaign_id}}'
          date: '{{date}}'
      - name: reconcile-revenue
        type: call
        call: snowflake.execute-query
        with:
          query: CALL reconcile_ad_revenue('{{campaign_id}}', '{{date}}')
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: ad_revenue_ds
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/paramount/campaigns/{{campaign_id}}/revenue
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-revenue
        method: GET
  - type: http
    namespace: ad-server
    baseUri: https://api.paramount.com/adserver/v1
    authentication:
      type: bearer
      token: $secrets.paramount_adserver_token
    resources:
    - name: revenue
      path: /campaigns/{{campaign_id}}/revenue
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-revenue
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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.paramount.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/paramount/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → ad-campaign-revenue-tracker.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 2
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-2
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-2
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://paramount.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 → paramount-workflow-2.yml

Pulls sprint progress from Jira and posts a daily summary to the engineering Slack channel.

naftiko: '0.5'
info:
  label: Jira Sprint Status Reporter
  description: Pulls sprint progress from Jira and posts a daily summary to the engineering Slack channel.
  tags:
  - development
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: dev-reporting
    port: 8080
    tools:
    - name: report-sprint-status
      description: Generate and post a Jira sprint status report to Slack.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board identifier.
      steps:
      - name: get-sprint
        type: call
        call: jira.get-active-sprint
        with:
          board_id: '{{board_id}}'
      - name: get-issues
        type: call
        call: jira.get-sprint-issues
        with:
          sprint_id: '{{get-sprint.id}}'
      - name: post-report
        type: call
        call: slack.post-message
        with:
          channel: engineering
          text: 'Sprint {{get-sprint.name}}: {{get-issues.done_count}}/{{get-issues.total_count}} done. {{get-issues.in_progress_count}} in progress.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://paramount.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
    - name: sprint-issues
      path: /sprint/{{sprint_id}}/issue
      inputParameters:
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint-issues
        method: GET
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-status-reporter.yml

Sends a transactional email via SendGrid. Reusable email primitive for Paramount workflows.

naftiko: '0.5'
info:
  label: SendGrid Email Sender
  description: Sends a transactional email via SendGrid. Reusable email primitive for Paramount workflows.
  tags:
  - communications
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: email-ops
    port: 8080
    tools:
    - name: send-email
      description: Send a transactional email via SendGrid.
      inputParameters:
      - name: to
        in: body
        type: string
        description: Recipient email.
      - name: subject
        in: body
        type: string
        description: Email subject.
      - name: body
        in: body
        type: string
        description: Email body.
      call: sendgrid.send-email
      with:
        to: '{{to}}'
        subject: '{{subject}}'
        body: '{{body}}'
  consumes:
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → sendgrid-email-sender.yml

Pulls user viewing history from the streaming platform, feeds it to the recommendation model in Snowflake, and updates personalized content rails in the CMS.

naftiko: '0.5'
info:
  label: Content Recommendation Engine Sync
  description: Pulls user viewing history from the streaming platform, feeds it to the recommendation model in Snowflake, and updates personalized content rails in the CMS.
  tags:
  - streaming
  - content
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: recommendations
    port: 8080
    tools:
    - name: sync-recommendations
      description: Update content recommendations based on viewing patterns.
      inputParameters:
      - name: user_segment
        in: body
        type: string
        description: The user segment identifier.
      - name: model_version
        in: body
        type: string
        description: The recommendation model version to use.
      steps:
      - name: get-viewing-data
        type: call
        call: streaming-platform.get-viewing-history
        with:
          segment: '{{user_segment}}'
      - name: run-model
        type: call
        call: snowflake.execute-query
        with:
          query: CALL generate_recommendations('{{user_segment}}', '{{model_version}}')
      - name: update-content-rails
        type: call
        call: cms.update-recommendation-rails
        with:
          segment: '{{user_segment}}'
          recommendations: '{{run-model.titles}}'
  consumes:
  - type: http
    namespace: streaming-platform
    baseUri: https://api.paramount.com/streaming/v1
    authentication:
      type: bearer
      token: $secrets.paramount_streaming_token
    resources:
    - name: viewing
      path: /subscribers/viewing-history
      operations:
      - name: get-viewing-history
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: recommendations
      path: /rails/recommendations
      operations:
      - name: update-recommendation-rails
        method: PUT
Open in Framework → View in Fleet → content-recommendation-engine-sync.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 3
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-3
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-3
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#media'
          text: 'Completed workflow 3: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-3.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 13
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-13
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-13
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-13
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://paramount.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 → paramount-workflow-13.yml

Queries the post-production workflow system for Adobe Premiere Pro project status. Returns edit progress, review status, and estimated delivery date.

naftiko: '0.5'
info:
  label: Adobe Premiere Pro Project Status
  description: Queries the post-production workflow system for Adobe Premiere Pro project status. Returns edit progress, review status, and estimated delivery date.
  tags:
  - content
  - post-production
  - adobe-premiere-pro
capability:
  exposes:
  - type: mcp
    namespace: post-production
    port: 8080
    tools:
    - name: get-edit-project-status
      description: Look up the status of a post-production editing project.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The post-production project identifier.
      call: postprod-api.get-project
      with:
        project_id: '{{project_id}}'
      outputParameters:
      - name: edit_progress
        type: number
        mapping: $.data.edit_progress_pct
      - name: review_status
        type: string
        mapping: $.data.review_status
      - name: estimated_delivery
        type: string
        mapping: $.data.estimated_delivery_date
  consumes:
  - type: http
    namespace: postprod-api
    baseUri: https://api.paramount.com/postproduction/v1
    authentication:
      type: bearer
      token: $secrets.paramount_postprod_token
    resources:
    - name: projects
      path: /projects/{{project_id}}
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: get-project
        method: GET
Open in Framework → View in Fleet → adobe-premiere-pro-project-status.yml

Creates a programmatic advertising deal in the ad server, registers the deal in Salesforce for billing, and notifies the ad ops team in Slack.

naftiko: '0.5'
info:
  label: Programmatic Ad Deal Creator
  description: Creates a programmatic advertising deal in the ad server, registers the deal in Salesforce for billing, and notifies the ad ops team in Slack.
  tags:
  - advertising
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: programmatic-ads
    port: 8080
    tools:
    - name: create-programmatic-deal
      description: Create a programmatic ad deal with billing registration and team notification.
      inputParameters:
      - name: advertiser_id
        in: body
        type: string
        description: The advertiser identifier.
      - name: deal_type
        in: body
        type: string
        description: Deal type (preferred, private-auction, guaranteed).
      - name: cpm_floor
        in: body
        type: number
        description: The CPM floor price.
      - name: impressions
        in: body
        type: integer
        description: The committed impression count.
      steps:
      - name: create-deal
        type: call
        call: ad-server.create-deal
        with:
          advertiser_id: '{{advertiser_id}}'
          deal_type: '{{deal_type}}'
          cpm_floor: '{{cpm_floor}}'
          impressions: '{{impressions}}'
      - name: register-billing
        type: call
        call: salesforce.create-opportunity
        with:
          name: Programmatic Deal - {{advertiser_id}}
          deal_id: '{{create-deal.deal_id}}'
          amount: '{{create-deal.estimated_revenue}}'
      - name: notify-ad-ops
        type: call
        call: slack.post-message
        with:
          channel: ad-ops
          text: 'New programmatic deal {{create-deal.deal_id}}: {{deal_type}} at ${{cpm_floor}} CPM, {{impressions}} impressions. SF: {{register-billing.id}}'
  consumes:
  - type: http
    namespace: ad-server
    baseUri: https://api.paramount.com/adserver/v1
    authentication:
      type: bearer
      token: $secrets.paramount_adserver_token
    resources:
    - name: deals
      path: /deals
      operations:
      - name: create-deal
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://paramount.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
  - type: http
    namespace: slack
    baseUri: 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 → programmatic-ad-deal-creator.yml

Syncs marketing qualified leads from HubSpot to Salesforce for the advertising sales team.

naftiko: '0.5'
info:
  label: HubSpot Marketing Lead Sync
  description: Syncs marketing qualified leads from HubSpot to Salesforce for the advertising sales team.
  tags:
  - marketing
  - hubspot
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: lead-sync
    port: 8080
    tools:
    - name: sync-hubspot-lead
      description: Sync a HubSpot marketing lead to Salesforce.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: The HubSpot contact ID.
      steps:
      - name: get-contact
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: create-lead
        type: call
        call: salesforce.create-lead
        with:
          first_name: '{{get-contact.firstname}}'
          last_name: '{{get-contact.lastname}}'
          email: '{{get-contact.email}}'
          company: '{{get-contact.company}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://paramount.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-sync.yml

Syncs the content release calendar from the CMS to Google Calendar and Microsoft Outlook for cross-team visibility.

naftiko: '0.5'
info:
  label: Content Scheduling Calendar Sync
  description: Syncs the content release calendar from the CMS to Google Calendar and Microsoft Outlook for cross-team visibility.
  tags:
  - content
  - scheduling
  - google-workspace
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: content-calendar
    port: 8080
    tools:
    - name: sync-release-calendar
      description: Sync content release dates to Google Calendar and Outlook.
      inputParameters:
      - name: month
        in: body
        type: string
        description: The month to sync (YYYY-MM format).
      steps:
      - name: get-releases
        type: call
        call: cms.get-release-calendar
        with:
          month: '{{month}}'
      - name: sync-google-cal
        type: call
        call: google-calendar.create-events
        with:
          calendar_id: content-releases
          events: '{{get-releases.titles}}'
      - name: sync-outlook
        type: call
        call: outlook.create-events
        with:
          calendar_id: content-releases
          events: '{{get-releases.titles}}'
  consumes:
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: calendar
      path: /releases/calendar?month={{month}}
      inputParameters:
      - name: month
        in: query
      operations:
      - name: get-release-calendar
        method: GET
  - type: http
    namespace: google-calendar
    baseUri: https://www.googleapis.com/calendar/v3
    authentication:
      type: bearer
      token: $secrets.google_calendar_token
    resources:
    - name: events
      path: /calendars/{{calendar_id}}/events
      inputParameters:
      - name: calendar_id
        in: path
      operations:
      - name: create-events
        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/calendars/{{calendar_id}}/events
      inputParameters:
      - name: calendar_id
        in: path
      operations:
      - name: create-events
        method: POST
Open in Framework → View in Fleet → content-scheduling-calendar-sync.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 12
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-12
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-12
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: media.workflow_12
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-12.yml

Retrieves Datadog monitor status for streaming infrastructure. Returns monitor name, overall state, and last triggered timestamp.

naftiko: '0.5'
info:
  label: Datadog Streaming Infrastructure Monitor
  description: Retrieves Datadog monitor status for streaming infrastructure. Returns monitor name, overall state, and last triggered timestamp.
  tags:
  - streaming
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-monitor-status
      description: Check Datadog monitor status for streaming infrastructure.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor identifier.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: status
        type: string
        mapping: $.overall_state
      - name: last_triggered
        type: string
        mapping: $.state.last_triggered_ts
  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: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-streaming-infrastructure-monitor.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 10
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-10
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-10
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-10
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://paramount.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 → paramount-workflow-10.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 8
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-8
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-8
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-8.yml

Uploads a document to a SharePoint site. Used for report publishing and document management across Paramount departments.

naftiko: '0.5'
info:
  label: SharePoint Document Upload
  description: Uploads a document to a SharePoint site. Used for report publishing and document management across Paramount departments.
  tags:
  - document-management
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: doc-management
    port: 8080
    tools:
    - name: upload-document
      description: Upload a document to a SharePoint site.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site identifier.
      - name: file_path
        in: body
        type: string
        description: The destination file path.
      call: sharepoint.upload-file
      with:
        site_id: '{{site_id}}'
        file_path: '{{file_path}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → sharepoint-document-upload.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 9
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-9
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-9
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-9.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 11
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-11
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-11.yml

Pulls approved expense reports from SAP Concur, creates journal entries in Oracle, and notifies the finance controller via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Sync
  description: Pulls approved expense reports from SAP Concur, creates journal entries in Oracle, and notifies the finance controller via Microsoft Teams.
  tags:
  - finance
  - sap-concur
  - oracle
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: expense-ops
    port: 8080
    tools:
    - name: sync-approved-expenses
      description: Sync approved SAP Concur expenses to Oracle and notify finance.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report identifier.
      steps:
      - name: get-expense-report
        type: call
        call: concur.get-report
        with:
          report_id: '{{report_id}}'
      - name: create-journal
        type: call
        call: oracle.create-journal-entry
        with:
          amount: '{{get-expense-report.total_amount}}'
          cost_center: '{{get-expense-report.cost_center}}'
          description: Expense report {{report_id}}
      - name: notify-controller
        type: call
        call: msteams.send-message
        with:
          channel_id: finance-ops
          text: 'Expense report {{report_id}} synced to Oracle. Amount: ${{get-expense-report.total_amount}}. Journal: {{create-journal.entry_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/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://paramount.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: journals
      path: /journalEntries
      operations:
      - name: create-journal-entry
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-sync.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 15
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-15
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-15
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#media'
          text: 'Completed workflow 15: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-15.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 29
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-29
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-29.yml

Executes a SQL query against Paramount's Snowflake data warehouse. Returns result rows and metadata for analytics workflows.

naftiko: '0.5'
info:
  label: Snowflake Query Runner
  description: Executes a SQL query against Paramount's Snowflake data warehouse. Returns result rows and metadata for analytics workflows.
  tags:
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: data-warehouse
    port: 8080
    tools:
    - name: run-snowflake-query
      description: Execute a SQL query against the Paramount Snowflake warehouse.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The SQL query to execute.
      call: snowflake.execute-query
      with:
        statement: '{{query}}'
      outputParameters:
      - name: rows
        type: array
        mapping: $.data
      - name: row_count
        type: integer
        mapping: $.resultSetMetaData.numRows
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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-runner.yml

Queries the analytics platform for streaming viewership metrics by title. Returns total views, unique viewers, average watch time, and completion rate.

naftiko: '0.5'
info:
  label: Streaming Viewership Lookup
  description: Queries the analytics platform for streaming viewership metrics by title. Returns total views, unique viewers, average watch time, and completion rate.
  tags:
  - streaming
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: viewership-analytics
    port: 8080
    tools:
    - name: get-viewership-metrics
      description: Look up streaming viewership metrics for a specific title.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content title identifier.
      - name: date_range
        in: body
        type: string
        description: Date range for the query (7d, 30d, 90d).
      call: analytics-platform.get-viewership
      with:
        title_id: '{{title_id}}'
        range: '{{date_range}}'
      outputParameters:
      - name: total_views
        type: integer
        mapping: $.data.total_views
      - name: unique_viewers
        type: integer
        mapping: $.data.unique_viewers
      - name: avg_watch_time
        type: number
        mapping: $.data.avg_watch_time_minutes
      - name: completion_rate
        type: number
        mapping: $.data.completion_rate
  consumes:
  - type: http
    namespace: analytics-platform
    baseUri: https://api.paramount.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.paramount_analytics_token
    resources:
    - name: viewership
      path: /titles/{{title_id}}/viewership
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: get-viewership
        method: GET
Open in Framework → View in Fleet → streaming-viewership-lookup.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 28
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-28
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-28
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: MEDIA
          title: Report 28
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-28
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://paramount.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 → paramount-workflow-28.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 14
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-14
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-14
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-14
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://paramount.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 → paramount-workflow-14.yml

Queries first-party streaming data in Snowflake to build audience segments, syncs them to the ad server for targeting, and logs the segment in Salesforce for advertiser proposals.

naftiko: '0.5'
info:
  label: Advertising Audience Segment Builder
  description: Queries first-party streaming data in Snowflake to build audience segments, syncs them to the ad server for targeting, and logs the segment in Salesforce for advertiser proposals.
  tags:
  - advertising
  - streaming
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: audience-ops
    port: 8080
    tools:
    - name: build-audience-segment
      description: Build an advertising audience segment from streaming data.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: Name for the new audience segment.
      - name: genre_affinity
        in: body
        type: string
        description: Genre affinity filter.
      - name: min_watch_hours
        in: body
        type: number
        description: Minimum watch hours threshold.
      steps:
      - name: query-audience
        type: call
        call: snowflake.execute-query
        with:
          query: CALL build_audience_segment('{{segment_name}}', '{{genre_affinity}}', {{min_watch_hours}})
      - name: sync-to-adserver
        type: call
        call: ad-server.create-segment
        with:
          segment_name: '{{segment_name}}'
          user_ids: '{{query-audience.user_ids}}'
      - name: log-in-salesforce
        type: call
        call: salesforce.create-record
        with:
          object: Audience_Segment__c
          data:
            name: '{{segment_name}}'
            size: '{{query-audience.segment_size}}'
            ad_server_id: '{{sync-to-adserver.segment_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: ad-server
    baseUri: https://api.paramount.com/adserver/v1
    authentication:
      type: bearer
      token: $secrets.paramount_adserver_token
    resources:
    - name: segments
      path: /segments
      operations:
      - name: create-segment
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://paramount.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 → advertising-audience-segment-builder.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 16
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-16
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-16
        with:
          identifier: '{{identifier}}'
      - name: publish
        type: call
        call: confluence.create-page
        with:
          space: MEDIA
          title: Report 16
          content: '{{process.report}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-16
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://paramount.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 → paramount-workflow-16.yml

Pulls current Paramount+ subscriber counts by region from the streaming platform, stores daily snapshots in Snowflake, and refreshes the executive subscriber dashboard.

naftiko: '0.5'
info:
  label: Streaming Subscriber Count Report
  description: Pulls current Paramount+ subscriber counts by region from the streaming platform, stores daily snapshots in Snowflake, and refreshes the executive subscriber dashboard.
  tags:
  - streaming
  - analytics
  - snowflake
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: subscriber-metrics
    port: 8080
    tools:
    - name: report-subscriber-counts
      description: Generate a daily subscriber count report by region.
      inputParameters:
      - name: date
        in: body
        type: string
        description: The reporting date.
      steps:
      - name: get-subscribers
        type: call
        call: streaming-platform.get-subscriber-counts
        with:
          date: '{{date}}'
      - name: store-snapshot
        type: call
        call: snowflake.insert-record
        with:
          table: subscriber_snapshots
          data:
            date: '{{date}}'
            total: '{{get-subscribers.total}}'
            by_region: '{{get-subscribers.by_region}}'
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-extract
        with:
          datasource_id: subscriber_metrics_ds
  consumes:
  - type: http
    namespace: streaming-platform
    baseUri: https://api.paramount.com/streaming/v1
    authentication:
      type: bearer
      token: $secrets.paramount_streaming_token
    resources:
    - name: subscribers
      path: /subscribers/counts
      operations:
      - name: get-subscriber-counts
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: tableau
    baseUri: https://tableau.paramount.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/paramount/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → streaming-subscriber-count-report.yml

Triggers subtitle generation for a title, sends for translation review, updates the CMS with localized subtitle files, and notifies the localization team in Slack.

naftiko: '0.5'
info:
  label: Subtitle and Localization Workflow
  description: Triggers subtitle generation for a title, sends for translation review, updates the CMS with localized subtitle files, and notifies the localization team in Slack.
  tags:
  - content
  - localization
  - slack
capability:
  exposes:
  - type: mcp
    namespace: localization-ops
    port: 8080
    tools:
    - name: process-subtitles
      description: Generate and localize subtitles for a content title.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content title identifier.
      - name: source_language
        in: body
        type: string
        description: Source language code (e.g., en-US).
      - name: target_languages
        in: body
        type: array
        description: List of target language codes.
      steps:
      - name: generate-subtitles
        type: call
        call: subtitle-service.generate
        with:
          title_id: '{{title_id}}'
          source_lang: '{{source_language}}'
      - name: submit-translation
        type: call
        call: translation-service.submit-job
        with:
          source_file: '{{generate-subtitles.subtitle_url}}'
          target_languages: '{{target_languages}}'
      - name: update-cms
        type: call
        call: cms.update-subtitles
        with:
          title_id: '{{title_id}}'
          subtitle_files: '{{submit-translation.output_files}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: localization
          text: 'Subtitles ready for {{title_id}} in {{target_languages}}. Translation job: {{submit-translation.job_id}}'
  consumes:
  - type: http
    namespace: subtitle-service
    baseUri: https://api.paramount.com/subtitles/v1
    authentication:
      type: bearer
      token: $secrets.paramount_subtitle_token
    resources:
    - name: subtitles
      path: /generate
      operations:
      - name: generate
        method: POST
  - type: http
    namespace: translation-service
    baseUri: https://api.paramount.com/translation/v1
    authentication:
      type: bearer
      token: $secrets.paramount_translation_token
    resources:
    - name: jobs
      path: /jobs
      operations:
      - name: submit-job
        method: POST
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: subtitles
      path: /titles/{{title_id}}/subtitles
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: update-subtitles
        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 → subtitle-and-localization-workflow.yml

Pulls production spending from SAP, compares against the approved budget in Oracle, and creates a variance alert in ServiceNow if spending exceeds threshold.

naftiko: '0.5'
info:
  label: Production Budget Tracker
  description: Pulls production spending from SAP, compares against the approved budget in Oracle, and creates a variance alert in ServiceNow if spending exceeds threshold.
  tags:
  - content
  - finance
  - sap
  - oracle
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: production-finance
    port: 8080
    tools:
    - name: track-production-budget
      description: Track production spending against approved budget and alert on variances.
      inputParameters:
      - name: production_id
        in: body
        type: string
        description: The production project identifier.
      - name: cost_center
        in: body
        type: string
        description: The SAP cost center.
      steps:
      - name: get-spending
        type: call
        call: sap.get-cost-center-spend
        with:
          cost_center: '{{cost_center}}'
      - name: get-budget
        type: call
        call: oracle.get-approved-budget
        with:
          production_id: '{{production_id}}'
      - name: create-variance-alert
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Budget variance: Production {{production_id}}'
          category: production_finance
          description: 'Spent: ${{get-spending.total_spend}}. Budget: ${{get-budget.approved_amount}}. Variance: {{get-spending.variance_pct}}%'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://paramount.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: cost-centers
      path: /A_CostCenter('{{cost_center}}')/to_Spending
      inputParameters:
      - name: cost_center
        in: path
      operations:
      - name: get-cost-center-spend
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://paramount.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: budgets
      path: /budgets/{{production_id}}
      inputParameters:
      - name: production_id
        in: path
      operations:
      - name: get-approved-budget
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://paramount.service-now.com/api/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 → production-budget-tracker.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 17
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-17
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-17.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 32
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-32
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-32
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://paramount-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 → paramount-workflow-32.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 26
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-26
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-26
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: servicenow.create-incident
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-26
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://paramount.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 → paramount-workflow-26.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 2
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-2
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-2
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-2.yml

Triggers a Tableau datasource extract refresh. Used to update dashboards after data pipeline completions.

naftiko: '0.5'
info:
  label: Tableau Dashboard Refresh
  description: Triggers a Tableau datasource extract refresh. Used to update dashboards after data pipeline completions.
  tags:
  - analytics
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: dashboard-ops
    port: 8080
    tools:
    - name: refresh-tableau-dashboard
      description: Trigger a Tableau datasource extract refresh.
      inputParameters:
      - name: datasource_id
        in: body
        type: string
        description: The Tableau datasource identifier.
      call: tableau.refresh-extract
      with:
        datasource_id: '{{datasource_id}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.paramount.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: datasources
      path: /sites/paramount/datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-extract
        method: POST
Open in Framework → View in Fleet → tableau-dashboard-refresh.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 3
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-3
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-3
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-3.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 27
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-27
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-27
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#media'
          text: 'Completed workflow 27: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-27.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 33
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-33
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-33
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-33.yml

Pulls subscriber engagement data from the streaming platform, runs churn prediction models in Snowflake, and creates retention campaign triggers in Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Subscriber Churn Predictor
  description: Pulls subscriber engagement data from the streaming platform, runs churn prediction models in Snowflake, and creates retention campaign triggers in Salesforce Marketing Cloud.
  tags:
  - streaming
  - analytics
  - snowflake
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: subscriber-retention
    port: 8080
    tools:
    - name: predict-churn-risk
      description: Identify at-risk subscribers and trigger retention campaigns.
      inputParameters:
      - name: segment
        in: body
        type: string
        description: The subscriber segment to analyze.
      - name: lookback_days
        in: body
        type: integer
        description: Number of days to analyze for engagement patterns.
      steps:
      - name: get-engagement-data
        type: call
        call: streaming-platform.get-engagement-metrics
        with:
          segment: '{{segment}}'
          days: '{{lookback_days}}'
      - name: run-churn-model
        type: call
        call: snowflake.execute-query
        with:
          query: CALL predict_churn('{{segment}}', {{lookback_days}})
      - name: trigger-retention
        type: call
        call: sfmc.trigger-journey
        with:
          journey_id: churn_prevention
          audience: '{{run-churn-model.at_risk_subscribers}}'
  consumes:
  - type: http
    namespace: streaming-platform
    baseUri: https://api.paramount.com/streaming/v1
    authentication:
      type: bearer
      token: $secrets.paramount_streaming_token
    resources:
    - name: engagement
      path: /subscribers/engagement
      operations:
      - name: get-engagement-metrics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: sfmc
    baseUri: https://paramount.rest.marketingcloudapis.com/interaction/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: journeys
      path: /events
      operations:
      - name: trigger-journey
        method: POST
Open in Framework → View in Fleet → subscriber-churn-predictor.yml

Looks up a ServiceNow incident by number. Returns state, priority, assigned group, and resolution notes.

naftiko: '0.5'
info:
  label: ServiceNow Incident Status
  description: Looks up a ServiceNow incident by number. Returns state, priority, assigned group, and resolution notes.
  tags:
  - operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: itsm-ops
    port: 8080
    tools:
    - name: get-incident
      description: Look up a ServiceNow incident by number.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number.
      call: servicenow.get-incident
      with:
        incident_number: '{{incident_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result.state
      - name: priority
        type: string
        mapping: $.result.priority
      - name: assigned_group
        type: string
        mapping: $.result.assignment_group.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://paramount.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

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 19
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-19
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-19
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: media
          message: 'Workflow 19 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-19.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 25
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-25
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-25
        with:
          identifier: '{{identifier}}'
      - name: create
        type: call
        call: salesforce.create-account
        with:
          data: '{{process.result}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-25
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://paramount.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 → paramount-workflow-25.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 31
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-31
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-31
        with:
          identifier: '{{identifier}}'
      - name: notify
        type: call
        call: teams.send-message
        with:
          channel_id: media
          message: 'Workflow 31 complete: {{process.summary}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-31.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 1
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-1
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-1
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-1.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 30
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-30
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-30
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MEDI
          summary: Task from workflow 30
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-30
        method: POST
  - type: http
    namespace: jira
    baseUri: https://paramount.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 → paramount-workflow-30.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 24
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-24
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-24
        with:
          identifier: '{{identifier}}'
      - name: push
        type: call
        call: datadog.submit-metrics
        with:
          metric_name: media.workflow_24
          data: '{{process.metrics}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-24.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 18
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - jira
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-18
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-18
        with:
          identifier: '{{identifier}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MEDI
          summary: Task from workflow 18
          description: '{{process.details}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-18
        method: POST
  - type: http
    namespace: jira
    baseUri: https://paramount.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 → paramount-workflow-18.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 20
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-20
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-20
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://paramount-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 → paramount-workflow-20.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 34
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-34
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-34
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-34
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://paramount.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 → paramount-workflow-34.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 4
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-4
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-4
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-4.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 5
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-5
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-5
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-5.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 35
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-35
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-35.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 21
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-21
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-21
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-21.yml

Retrieves content metadata from the CMS by title ID. Returns title, genre, rating, runtime, and cast information.

naftiko: '0.5'
info:
  label: Content Metadata Lookup
  description: Retrieves content metadata from the CMS by title ID. Returns title, genre, rating, runtime, and cast information.
  tags:
  - content
  - catalog
capability:
  exposes:
  - type: mcp
    namespace: content-catalog
    port: 8080
    tools:
    - name: get-content-metadata
      description: Look up content metadata by title identifier.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content title identifier.
      call: cms.get-title
      with:
        title_id: '{{title_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.data.title
      - name: genre
        type: array
        mapping: $.data.genres
      - name: rating
        type: string
        mapping: $.data.rating
      - name: runtime
        type: integer
        mapping: $.data.runtime_minutes
  consumes:
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: titles
      path: /titles/{{title_id}}
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: get-title
        method: GET
Open in Framework → View in Fleet → content-metadata-lookup.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 23
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-23
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-23.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 7
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-7
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-7
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-7.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 6
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-6
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-6
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-6.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 22
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-22
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-22
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: sharepoint.upload-document
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-22
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://paramount.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 → paramount-workflow-22.yml

Looks up a talent contract in Salesforce by contract ID. Returns talent name, deal status, contract term, and compensation structure.

naftiko: '0.5'
info:
  label: Talent Contract Status Lookup
  description: Looks up a talent contract in Salesforce by contract ID. Returns talent name, deal status, contract term, and compensation structure.
  tags:
  - content
  - licensing
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: talent-ops
    port: 8080
    tools:
    - name: get-talent-contract
      description: Look up talent contract details by contract identifier.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: The Salesforce talent contract identifier.
      call: salesforce.get-contract
      with:
        contract_id: '{{contract_id}}'
      outputParameters:
      - name: talent_name
        type: string
        mapping: $.Name
      - name: status
        type: string
        mapping: $.Status__c
      - name: term_end
        type: string
        mapping: $.Term_End_Date__c
      - name: deal_value
        type: number
        mapping: $.Total_Deal_Value__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://paramount.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contracts
      path: /sobjects/Talent_Contract__c/{{contract_id}}
      inputParameters:
      - name: contract_id
        in: path
      operations:
      - name: get-contract
        method: GET
Open in Framework → View in Fleet → talent-contract-status-lookup.yml

Creates a Jira issue for production workflow blockers, links related content in Confluence, and notifies the production team via Slack.

naftiko: '0.5'
info:
  label: Jira Production Issue Tracker
  description: Creates a Jira issue for production workflow blockers, links related content in Confluence, and notifies the production team via Slack.
  tags:
  - content
  - production
  - jira
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: production-tracking
    port: 8080
    tools:
    - name: create-production-issue
      description: Create a production issue in Jira with Confluence links and Slack notification.
      inputParameters:
      - name: production_id
        in: body
        type: string
        description: The production identifier.
      - name: issue_summary
        in: body
        type: string
        description: Summary of the production issue.
      - name: priority
        in: body
        type: string
        description: Issue priority (Highest, High, Medium, Low).
      steps:
      - name: create-jira-issue
        type: call
        call: jira.create-issue
        with:
          project: PROD
          summary: '{{issue_summary}}'
          priority: '{{priority}}'
          labels:
          - production-{{production_id}}
      - name: link-wiki
        type: call
        call: confluence.create-page-link
        with:
          space: PROD
          page_title: Production {{production_id}} - Issues
          link_url: '{{create-jira-issue.self}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: production-issues
          text: 'New issue for Production {{production_id}}: {{issue_summary}} ({{priority}}). Jira: {{create-jira-issue.key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://paramount.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://paramount.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-link
        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 → jira-production-issue-tracker.yml

Aggregates licensing revenue by territory from Salesforce, enriches with content performance data from Snowflake, and generates an executive report in SharePoint.

naftiko: '0.5'
info:
  label: Regional Licensing Revenue Report
  description: Aggregates licensing revenue by territory from Salesforce, enriches with content performance data from Snowflake, and generates an executive report in SharePoint.
  tags:
  - licensing
  - revenue
  - salesforce
  - snowflake
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: licensing-revenue
    port: 8080
    tools:
    - name: generate-licensing-revenue-report
      description: Generate a regional licensing revenue report with content performance data.
      inputParameters:
      - name: quarter
        in: body
        type: string
        description: The fiscal quarter (e.g., Q1-2026).
      - name: region
        in: body
        type: string
        description: The geographic region.
      steps:
      - name: get-sf-revenue
        type: call
        call: salesforce.query-licensing-revenue
        with:
          quarter: '{{quarter}}'
          region: '{{region}}'
      - name: get-content-performance
        type: call
        call: snowflake.execute-query
        with:
          query: SELECT * FROM content_performance WHERE quarter='{{quarter}}' AND region='{{region}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: business-affairs
          file_path: LicensingReports/{{region}}_{{quarter}}.xlsx
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://paramount.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: licensing-revenue
      path: /query?q=SELECT+Territory__c,SUM(Amount)+FROM+Licensing_Deal__c+WHERE+Quarter__c='{{quarter}}'+GROUP+BY+Territory__c
      inputParameters:
      - name: quarter
        in: query
      - name: region
        in: query
      operations:
      - name: query-licensing-revenue
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: 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 → regional-licensing-revenue-report.yml

Retrieves streaming app performance from New Relic. Returns response time, throughput, and error rate for the Paramount+ backend.

naftiko: '0.5'
info:
  label: New Relic Streaming Performance
  description: Retrieves streaming app performance from New Relic. Returns response time, throughput, and error rate for the Paramount+ backend.
  tags:
  - streaming
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: app-monitoring
    port: 8080
    tools:
    - name: get-streaming-performance
      description: Get Paramount+ backend performance from New Relic.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic app ID.
      call: newrelic.get-app
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - 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
      header: X-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-streaming-performance.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 15
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-15
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-15
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-15.yml

Checks content availability windows by territory and platform. Returns start date, end date, and licensed platforms.

naftiko: '0.5'
info:
  label: Content Availability Window Lookup
  description: Checks content availability windows by territory and platform. Returns start date, end date, and licensed platforms.
  tags:
  - licensing
  - content
capability:
  exposes:
  - type: mcp
    namespace: content-windows
    port: 8080
    tools:
    - name: get-availability-window
      description: Look up content availability windows by title and territory.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content title ID.
      - name: territory
        in: body
        type: string
        description: The territory code.
      call: cms.get-window
      with:
        title_id: '{{title_id}}'
        territory: '{{territory}}'
      outputParameters:
      - name: start_date
        type: string
        mapping: $.data.window_start
      - name: end_date
        type: string
        mapping: $.data.window_end
      - name: platforms
        type: array
        mapping: $.data.licensed_platforms
  consumes:
  - type: http
    namespace: cms
    baseUri: https://api.paramount.com/content/v2
    authentication:
      type: bearer
      token: $secrets.paramount_cms_token
    resources:
    - name: windows
      path: /titles/{{title_id}}/windows/{{territory}}
      inputParameters:
      - name: title_id
        in: path
      - name: territory
        in: path
      operations:
      - name: get-window
        method: GET
Open in Framework → View in Fleet → content-availability-window-lookup.yml

Pulls CDN performance metrics from Cloudflare, correlates with streaming quality data, stores in Snowflake, and alerts the platform team in Slack if latency exceeds thresholds.

naftiko: '0.5'
info:
  label: Streaming CDN Performance Monitor
  description: Pulls CDN performance metrics from Cloudflare, correlates with streaming quality data, stores in Snowflake, and alerts the platform team in Slack if latency exceeds thresholds.
  tags:
  - streaming
  - operations
  - cloudflare
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cdn-monitoring
    port: 8080
    tools:
    - name: monitor-cdn-performance
      description: Monitor CDN performance and alert on streaming quality issues.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone identifier.
      - name: time_range
        in: body
        type: string
        description: Time range for metrics (1h, 6h, 24h).
      steps:
      - name: get-cdn-metrics
        type: call
        call: cloudflare.get-zone-analytics
        with:
          zone_id: '{{zone_id}}'
          time_range: '{{time_range}}'
      - name: store-metrics
        type: call
        call: snowflake.insert-record
        with:
          table: cdn_performance
          data:
            zone_id: '{{zone_id}}'
            bandwidth: '{{get-cdn-metrics.bandwidth}}'
            latency_p95: '{{get-cdn-metrics.latency_p95}}'
            cache_hit_rate: '{{get-cdn-metrics.cache_hit_rate}}'
      - name: alert-if-degraded
        type: call
        call: slack.post-message
        with:
          channel: platform-alerts
          text: 'CDN Alert: P95 latency {{get-cdn-metrics.latency_p95}}ms, cache hit rate {{get-cdn-metrics.cache_hit_rate}}% for zone {{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
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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
    baseUri: 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 → streaming-cdn-performance-monitor.yml

Retrieves application performance metrics from New Relic for the Paramount+ streaming app. Returns response time, throughput, and error rate.

naftiko: '0.5'
info:
  label: New Relic Streaming App Performance
  description: Retrieves application performance metrics from New Relic for the Paramount+ streaming app. Returns response time, throughput, and error rate.
  tags:
  - streaming
  - operations
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: apm-monitoring
    port: 8080
    tools:
    - name: get-streaming-app-performance
      description: Get Paramount+ streaming app performance metrics from New Relic.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic application identifier.
      call: newrelic.get-app-metrics
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: response_time
        type: number
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: number
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: number
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
      header: X-Api-Key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-streaming-app-performance.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 14
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-14
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-14
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-14.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 10
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-10
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-10
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-10.yml

Scans Salesforce for licensing deals with upcoming expiry dates, generates a renewal report in Snowflake, and sends alerts to business affairs via Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Rights Expiry Monitor
  description: Scans Salesforce for licensing deals with upcoming expiry dates, generates a renewal report in Snowflake, and sends alerts to business affairs via Microsoft Teams.
  tags:
  - licensing
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: rights-management
    port: 8080
    tools:
    - name: monitor-rights-expiry
      description: Monitor content rights approaching expiry and alert business affairs.
      inputParameters:
      - name: days_ahead
        in: body
        type: integer
        description: Number of days ahead to check for expiring rights.
      steps:
      - name: get-expiring-deals
        type: call
        call: salesforce.query-expiring-deals
        with:
          days_ahead: '{{days_ahead}}'
      - name: generate-report
        type: call
        call: snowflake.execute-query
        with:
          query: CALL generate_expiry_report({{days_ahead}})
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: business-affairs
          text: 'Rights expiry alert: {{get-expiring-deals.count}} deals expiring within {{days_ahead}} days. Review report in Snowflake.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://paramount.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: deals
      path: /query?q=SELECT+Id,Name,Term_End_Date__c+FROM+Licensing_Deal__c+WHERE+Term_End_Date__c<=NEXT_N_DAYS:{{days_ahead}}
      inputParameters:
      - name: days_ahead
        in: query
      operations:
      - name: query-expiring-deals
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://paramount.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: send-message
        method: POST
Open in Framework → View in Fleet → content-rights-expiry-monitor.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 8
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-8
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-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: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_api_token
    resources:
    - name: operations
      path: /operations
      operations:
      - name: run-workflow-8
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://paramount-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 → paramount-workflow-8.yml

When a vendor invoice arrives for production services, validates against the SAP purchase order, creates a payment in Oracle, and notifies finance in Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Invoice Processor
  description: When a vendor invoice arrives for production services, validates against the SAP purchase order, creates a payment in Oracle, and notifies finance in Microsoft Teams.
  tags:
  - procurement
  - finance
  - sap
  - oracle
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: vendor-payments
    port: 8080
    tools:
    - name: process-vendor-invoice
      description: Validate and process a vendor invoice for production services.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The vendor invoice number.
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      - name: amount
        in: body
        type: number
        description: The invoice amount.
      steps:
      - name: validate-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: create-payment
        type: call
        call: oracle.create-payment-request
        with:
          invoice_number: '{{invoice_number}}'
          po_number: '{{po_number}}'
          amount: '{{amount}}'
      - name: notify-finance
        type: call
        call: msteams.send-message
        with:
          channel_id: finance-approvals
          text: 'Invoice {{invoice_number}} for ${{amount}} validated against PO {{po_number}}. Payment: {{create-payment.request_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://paramount.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://paramount.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: payments
      path: /payablesInvoices
      operations:
      - name: create-payment-request
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vendor-invoice-processor.yml

Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.

naftiko: '0.5'
info:
  label: Paramount Workflow 9
  description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
  tags:
  - media
  - operations
  - box
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: paramount-workflow-9
      description: Orchestrates media operations including data retrieval, processing, and automated notification for Paramount.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Primary identifier for this workflow
      steps:
      - name: process
        type: call
        call: paramount-ops.run-workflow-9
        with:
          identifier: '{{identifier}}'
      - name: upload
        type: call
        call: box.upload-file
        with:
          content: '{{process.document}}'
  consumes:
  - type: http
    namespace: paramount-ops
    baseUri: https://api.paramount.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-workflow-9.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 11
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-11
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-11
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-11.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 13
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-13
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-13
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-13.yml

Sends a formatted message to a Slack channel. Used as a reusable notification primitive across Paramount workflows.

naftiko: '0.5'
info:
  label: Slack Channel Notifier
  description: Sends a formatted message to a Slack channel. Used as a reusable notification primitive across Paramount workflows.
  tags:
  - communications
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack-notifications
    port: 8080
    tools:
    - name: send-slack-notification
      description: Send a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel.
      - name: message
        in: body
        type: string
        description: The message text.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{message}}'
  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-notifier.yml

Retrieves operational data for Paramount media workflows.

naftiko: '0.5'
info:
  label: Paramount Data Lookup 12
  description: Retrieves operational data for Paramount media workflows.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: paramount-data
    port: 8080
    tools:
    - name: get-data-12
      description: Retrieves operational data for Paramount media workflows.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: Resource identifier
      call: paramount-data.get-data-12
      with:
        identifier: '{{identifier}}'
  consumes:
  - type: http
    namespace: paramount-data
    baseUri: https://api.paramount.com/data/v1
    authentication:
      type: bearer
      token: $secrets.paramount_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 → paramount-data-lookup-12.yml

Orchestrates game feature experimentation pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Feature Experimentation Pipeline
  description: Orchestrates game feature experimentation pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-feature-experimentation-pipeline
      description: Orchestrates game feature experimentation pipeline across video game development and esports systems, coordinating multiple 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://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      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/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-feature-experimentation-pipeline.yml

Orchestrates esports broadcast quality pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Broadcast Quality Pipeline
  description: Orchestrates esports broadcast quality pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-broadcast-quality-pipeline
      description: Orchestrates esports broadcast quality pipeline across video game development and esports systems, coordinating multiple 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://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/esports
      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/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-broadcast-quality-pipeline.yml

Retrieves player chat log lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Chat Log Lookup
  description: Retrieves player chat log lookup data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-chat-log-lookup
      description: Retrieves player chat log lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-chat-log-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/chat/log/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-chat-log-lookup
        method: GET
Open in Framework → View in Fleet → player-chat-log-lookup.yml

Orchestrates player support ticket classification across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Support Ticket Classification
  description: Orchestrates player support ticket classification across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-support-ticket-classification
      description: Orchestrates player support ticket classification across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-support-ticket-classification.yml

Orchestrates game economy inflation monitor across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Economy Inflation Monitor
  description: Orchestrates game economy inflation monitor across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - discord
  - twitch
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-economy-inflation-monitor
      description: Orchestrates game economy inflation monitor across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: discord.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: twitch.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-economy-inflation-monitor.yml

Orchestrates game content localization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Content Localization Pipeline
  description: Orchestrates game content localization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - riot
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-content-localization-pipeline
      description: Orchestrates game content localization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: riot.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: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-content-localization-pipeline.yml

Retrieves game client version status data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Game Client Version Status
  description: Retrieves game client version status data from the Riot Games video game development and esports systems.
  tags:
  - game
  - riot-games
  - status
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-client-version-status
      description: Retrieves game client version status data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.game-client-version-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /game/client/version/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: game-client-version-status
        method: GET
Open in Framework → View in Fleet → game-client-version-status.yml

Retrieves esports broadcast schedule data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Esports Broadcast Schedule
  description: Retrieves esports broadcast schedule data from the Riot Games video game development and esports systems.
  tags:
  - esports
  - riot-games
  - schedule
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-broadcast-schedule
      description: Retrieves esports broadcast schedule data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.esports-broadcast-schedule
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /esports/broadcast/schedule/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: esports-broadcast-schedule
        method: GET
Open in Framework → View in Fleet → esports-broadcast-schedule.yml

When a player behavior report is submitted, fetches match data, analyzes chat logs, creates a moderation case, and notifies the player behavior team.

naftiko: '0.5'
info:
  label: Player Report Investigation Orchestrator
  description: When a player behavior report is submitted, fetches match data, analyzes chat logs, creates a moderation case, and notifies the player behavior team.
  tags:
  - player-systems
  - moderation
  - game-ops
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: player-moderation
    port: 8080
    tools:
    - name: investigate-player-report
      description: Given a report ID, fetch match data, analyze chat, create moderation case, and notify team.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The player report ID.
      - name: game_title
        in: body
        type: string
        description: The game title.
      steps:
      - name: get-report
        type: call
        call: moderation-api.get-report
        with:
          report_id: '{{report_id}}'
      - name: get-match-data
        type: call
        call: match-api.get-match
        with:
          match_id: '{{get-report.match_id}}'
          game: '{{game_title}}'
      - name: create-case
        type: call
        call: moderation-api.create-case
        with:
          reported_puuid: '{{get-report.reported_puuid}}'
          reporter_puuid: '{{get-report.reporter_puuid}}'
          match_id: '{{get-report.match_id}}'
          reason: '{{get-report.reason}}'
          evidence: '{{get-match-data.chat_log}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: player_behavior
          channel: Reports
          text: 'New moderation case: Report {{report_id}} in {{game_title}}. Reported: {{get-report.reported_puuid}}. Reason: {{get-report.reason}}. Case: {{create-case.case_id}}.'
  consumes:
  - type: http
    namespace: moderation-api
    baseUri: https://moderation.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.moderation_api_token
    resources:
    - name: reports
      path: /reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
    - name: cases
      path: /cases
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: match-api
    baseUri: https://match.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.match_api_token
    resources:
    - name: matches
      path: /matches/{{match_id}}?game={{game}}
      inputParameters:
      - name: match_id
        in: path
      - name: game
        in: path
      operations:
      - name: get-match
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → player-report-investigation-orchestrator.yml

Orchestrates player behavior reward pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Behavior Reward Pipeline
  description: Orchestrates player behavior reward pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - twitch
  - confluence
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-behavior-reward-pipeline
      description: Orchestrates player behavior reward pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: twitch.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: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-behavior-reward-pipeline.yml

Retrieves YouTube channel analytics for esports and game trailer performance.

naftiko: '0.5'
info:
  label: YouTube Channel Analytics
  description: Retrieves YouTube channel analytics for esports and game trailer performance.
  tags:
  - marketing
  - analytics
  - youtube
capability:
  exposes:
  - type: mcp
    namespace: marketing-youtube
    port: 8080
    tools:
    - name: get-channel-analytics
      description: Query YouTube Analytics for a channel. Returns views, watch time, and subscriber growth.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: The YouTube channel ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      call: youtube.get-analytics
      with:
        channel_id: '{{channel_id}}'
        startDate: '{{start_date}}'
        endDate: '{{end_date}}'
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://youtubeanalytics.googleapis.com/v2
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: reports
      path: /reports?ids=channel=={{channel_id}}&startDate={{startDate}}&endDate={{endDate}}&metrics=views,estimatedMinutesWatched,subscribersGained
      inputParameters:
      - name: channel_id
        in: path
      - name: startDate
        in: path
      - name: endDate
        in: path
      operations:
      - name: get-analytics
        method: GET
Open in Framework → View in Fleet → youtube-channel-analytics.yml

When a severe toxicity report is confirmed, restricts the player account, creates a Jira escalation ticket, notifies the player behavior team via Teams, and sends a Discord mod alert.

naftiko: '0.5'
info:
  label: Player Toxicity Escalation Orchestrator
  description: When a severe toxicity report is confirmed, restricts the player account, creates a Jira escalation ticket, notifies the player behavior team via Teams, and sends a Discord mod alert.
  tags:
  - player-systems
  - moderation
  - jira
  - microsoft-teams
  - discord
capability:
  exposes:
  - type: mcp
    namespace: player-toxicity
    port: 8080
    tools:
    - name: escalate-toxicity
      description: Given a case ID and player PUUID, restrict account, create Jira ticket, notify behavior team, and alert Discord mods.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: The moderation case ID.
      - name: puuid
        in: body
        type: string
        description: The player PUUID.
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: violation_type
        in: body
        type: string
        description: The type of toxicity violation.
      steps:
      - name: restrict-account
        type: call
        call: player-api.restrict-account
        with:
          puuid: '{{puuid}}'
          restriction_type: chat_restrict
          game: '{{game_title}}'
          duration: 14d
      - name: create-escalation
        type: call
        call: jira.create-issue
        with:
          project: BEHAVIOR
          summary: 'Toxicity escalation: {{puuid}} in {{game_title}}'
          description: 'Case: {{case_id}}. Violation: {{violation_type}}. Restriction: chat_restrict 14d.'
          issue_type: Bug
          priority: High
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: player_behavior
          channel: Escalations
          text: 'Toxicity escalation: {{puuid}} in {{game_title}}. Violation: {{violation_type}}. Restricted 14d. Jira: {{create-escalation.key}}.'
      - name: alert-discord
        type: call
        call: discord.send-webhook
        with:
          webhook_id: $secrets.discord_mod_webhook_id
          content: 'Mod alert: Player {{puuid}} restricted in {{game_title}} for {{violation_type}}. Case: {{case_id}}.'
  consumes:
  - type: http
    namespace: player-api
    baseUri: https://player.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.player_api_token
    resources:
    - name: restrictions
      path: /accounts/{{puuid}}/restrictions
      inputParameters:
      - name: puuid
        in: path
      operations:
      - name: restrict-account
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: webhooks
      path: /webhooks/{{webhook_id}}/{{webhook_token}}
      inputParameters:
      - name: webhook_id
        in: path
      operations:
      - name: send-webhook
        method: POST
Open in Framework → View in Fleet → player-toxicity-escalation-orchestrator.yml

Pulls web analytics from Google Analytics for Riot Games web properties.

naftiko: '0.5'
info:
  label: Google Analytics Web Report
  description: Pulls web analytics from Google Analytics for Riot Games web properties.
  tags:
  - marketing
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: get-web-report
      description: Retrieve Google Analytics metrics for a date range.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The GA4 property ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      call: ga.run-report
      with:
        property_id: '{{property_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-web-report.yml

Orchestrates game performance regression pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Performance Regression Pipeline
  description: Orchestrates game performance regression pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - jira
  - datadog
  - discord
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-performance-regression-pipeline
      description: Orchestrates game performance regression pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: discord.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-performance-regression-pipeline.yml

Retrieves player match replay status data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Match Replay Status
  description: Retrieves player match replay status data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - status
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-match-replay-status
      description: Retrieves player match replay status data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-match-replay-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/match/replay/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-match-replay-status
        method: GET
Open in Framework → View in Fleet → player-match-replay-status.yml

Retrieves game mode queue time lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Game Mode Queue Time Lookup
  description: Retrieves game mode queue time lookup data from the Riot Games video game development and esports systems.
  tags:
  - game
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-mode-queue-time-lookup
      description: Retrieves game mode queue time lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.game-mode-queue-time-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /game/mode/queue/time/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: game-mode-queue-time-lookup
        method: GET
Open in Framework → View in Fleet → game-mode-queue-time-lookup.yml

Retrieves employee payroll information from ADP for a pay period.

naftiko: '0.5'
info:
  label: ADP Payroll Lookup
  description: Retrieves employee payroll information from ADP for a pay period.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: hr-payroll
    port: 8080
    tools:
    - name: get-payroll-info
      description: Look up ADP payroll information for an employee and pay period.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The ADP employee ID.
      - name: pay_period
        in: body
        type: string
        description: The pay period (YYYY-MM-DD).
      call: adp.get-payroll
      with:
        employee_id: '{{employee_id}}'
        pay_period: '{{pay_period}}'
  consumes:
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /workers/{{employee_id}}/pay-distributions?pay-period={{pay_period}}
      inputParameters:
      - name: employee_id
        in: path
      - name: pay_period
        in: path
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-payroll-lookup.yml

Retrieves the status of a game server instance including region, player count, and health metrics.

naftiko: '0.5'
info:
  label: Game Server Instance Status
  description: Retrieves the status of a game server instance including region, player count, and health metrics.
  tags:
  - game-ops
  - infrastructure
  - servers
capability:
  exposes:
  - type: mcp
    namespace: gameops-servers
    port: 8080
    tools:
    - name: get-server-status
      description: Query a game server instance status. Returns region, player count, and health.
      inputParameters:
      - name: server_id
        in: body
        type: string
        description: The game server instance ID.
      call: gameserver-api.get-instance
      with:
        server_id: '{{server_id}}'
  consumes:
  - type: http
    namespace: gameserver-api
    baseUri: https://gameserver.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.gameserver_api_token
    resources:
    - name: instances
      path: /instances/{{server_id}}
      inputParameters:
      - name: server_id
        in: path
      operations:
      - name: get-instance
        method: GET
Open in Framework → View in Fleet → game-server-instance-status.yml

Retrieves an Asana task by GID, returning name, status, assignee, and due date.

naftiko: '0.5'
info:
  label: Asana Task Lookup
  description: Retrieves an Asana task by GID, returning name, status, assignee, and due date.
  tags:
  - project-management
  - tasks
  - asana
capability:
  exposes:
  - type: mcp
    namespace: pm-asana
    port: 8080
    tools:
    - name: get-task
      description: Look up an Asana task by GID.
      inputParameters:
      - name: task_gid
        in: body
        type: string
        description: The Asana task GID.
      call: asana.get-task
      with:
        task_gid: '{{task_gid}}'
  consumes:
  - type: http
    namespace: asana
    baseUri: https://app.asana.com/api/1.0
    authentication:
      type: bearer
      token: $secrets.asana_token
    resources:
    - name: tasks
      path: /tasks/{{task_gid}}
      inputParameters:
      - name: task_gid
        in: path
      operations:
      - name: get-task
        method: GET
Open in Framework → View in Fleet → asana-task-lookup.yml

Orchestrates game monetization analytics pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Monetization Analytics Pipeline
  description: Orchestrates game monetization analytics pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - confluence
  - pagerduty
  - riot
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-monetization-analytics-pipeline
      description: Orchestrates game monetization analytics pipeline across video game development and esports systems, coordinating multiple 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: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: riot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-monetization-analytics-pipeline.yml

Uses Anthropic Claude to analyze player-submitted text content for toxicity and policy violations.

naftiko: '0.5'
info:
  label: Anthropic AI Content Moderation
  description: Uses Anthropic Claude to analyze player-submitted text content for toxicity and policy violations.
  tags:
  - moderation
  - ai
  - anthropic
capability:
  exposes:
  - type: mcp
    namespace: moderation-ai
    port: 8080
    tools:
    - name: analyze-content
      description: Submit text content to Anthropic Claude for toxicity analysis.
      inputParameters:
      - name: content
        in: body
        type: string
        description: The text content to analyze.
      - name: context
        in: body
        type: string
        description: Context for the analysis (chat, username, report).
      call: anthropic.analyze
      with:
        content: '{{content}}'
        context: '{{context}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apiKey
      key: $secrets.anthropic_api_key
    resources:
    - name: messages
      path: /messages
      operations:
      - name: analyze
        method: POST
Open in Framework → View in Fleet → anthropic-ai-content-moderation.yml

Runs a search query against Splunk for game server and application log analysis.

naftiko: '0.5'
info:
  label: Splunk Log Query
  description: Runs a search query against Splunk for game server and application log analysis.
  tags:
  - monitoring
  - log-analysis
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: ops-splunk
    port: 8080
    tools:
    - name: search-logs
      description: Run a Splunk search query. Returns matching log events.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The Splunk search query (SPL).
      - name: earliest
        in: body
        type: string
        description: The earliest time for the search.
      - name: latest
        in: body
        type: string
        description: The latest time for the search.
      call: splunk.create-search
      with:
        search: '{{query}}'
        earliest_time: '{{earliest}}'
        latest_time: '{{latest}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.riotgames.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: create-search
        method: POST
Open in Framework → View in Fleet → splunk-log-query.yml

Orchestrates esports player contract pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Player Contract Pipeline
  description: Orchestrates esports player contract pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - twitch
  - confluence
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-player-contract-pipeline
      description: Orchestrates esports player contract pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: twitch.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: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-player-contract-pipeline.yml

Orchestrates esports prize distribution pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Prize Distribution Pipeline
  description: Orchestrates esports prize distribution pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - datadog
  - discord
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-prize-distribution-pipeline
      description: Orchestrates esports prize distribution pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: discord.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: twitch.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-prize-distribution-pipeline.yml

Retrieves an anti-cheat report by report ID, returning detection type, confidence score, and player details.

naftiko: '0.5'
info:
  label: Anti-Cheat Report Lookup
  description: Retrieves an anti-cheat report by report ID, returning detection type, confidence score, and player details.
  tags:
  - anti-cheat
  - security
  - player-systems
capability:
  exposes:
  - type: mcp
    namespace: anticheat
    port: 8080
    tools:
    - name: get-cheat-report
      description: Look up an anti-cheat report by ID. Returns detection type, confidence, and player info.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The anti-cheat report ID.
      call: anticheat-api.get-report
      with:
        report_id: '{{report_id}}'
  consumes:
  - type: http
    namespace: anticheat-api
    baseUri: https://anticheat.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.anticheat_api_token
    resources:
    - name: reports
      path: /reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → anti-cheat-report-lookup.yml

Retrieves a player account from the Riot player platform by PUUID, returning account status, region, and game entitlements.

naftiko: '0.5'
info:
  label: Player Account Lookup
  description: Retrieves a player account from the Riot player platform by PUUID, returning account status, region, and game entitlements.
  tags:
  - player-systems
  - accounts
  - game-ops
capability:
  exposes:
  - type: mcp
    namespace: player-accounts
    port: 8080
    tools:
    - name: get-player-account
      description: Look up a player account by PUUID. Returns account status, region, and entitlements.
      inputParameters:
      - name: puuid
        in: body
        type: string
        description: The player universally unique identifier.
      call: player-api.get-account
      with:
        puuid: '{{puuid}}'
  consumes:
  - type: http
    namespace: player-api
    baseUri: https://player.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.player_api_token
    resources:
    - name: accounts
      path: /accounts/{{puuid}}
      inputParameters:
      - name: puuid
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → player-account-lookup.yml

Posts a tweet to the official game account for community announcements.

naftiko: '0.5'
info:
  label: Twitter Social Post
  description: Posts a tweet to the official game account for community announcements.
  tags:
  - community
  - social-media
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: comms-twitter
    port: 8080
    tools:
    - name: create-tweet
      description: Post a tweet to the official account.
      inputParameters:
      - name: text
        in: body
        type: string
        description: The tweet text.
      call: twitter.create-tweet
      with:
        text: '{{text}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
Open in Framework → View in Fleet → twitter-social-post.yml

Orchestrates game asset pipeline optimizer across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Asset Pipeline Optimizer
  description: Orchestrates game asset pipeline optimizer across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - confluence
  - pagerduty
  - riot
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-asset-pipeline-optimizer
      description: Orchestrates game asset pipeline optimizer across video game development and esports systems, coordinating multiple 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: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: riot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-asset-pipeline-optimizer.yml

Orchestrates player competitive integrity pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Competitive Integrity Pipeline
  description: Orchestrates player competitive integrity pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-competitive-integrity-pipeline
      description: Orchestrates player competitive integrity pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-competitive-integrity-pipeline.yml

Retrieves leaderboard data for a game title and region from the rankings service.

naftiko: '0.5'
info:
  label: Game Leaderboard Lookup
  description: Retrieves leaderboard data for a game title and region from the rankings service.
  tags:
  - player-systems
  - game-ops
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: player-leaderboard
    port: 8080
    tools:
    - name: get-leaderboard
      description: Query the leaderboard for a game, region, and queue type.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: region
        in: body
        type: string
        description: The game region.
      - name: queue
        in: body
        type: string
        description: The queue type (ranked, unranked).
      call: rankings-api.get-leaderboard
      with:
        game: '{{game_title}}'
        region: '{{region}}'
        queue: '{{queue}}'
  consumes:
  - type: http
    namespace: rankings-api
    baseUri: https://rankings.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.rankings_api_token
    resources:
    - name: leaderboards
      path: /leaderboards?game={{game}}&region={{region}}&queue={{queue}}
      inputParameters:
      - name: game
        in: path
      - name: region
        in: path
      - name: queue
        in: path
      operations:
      - name: get-leaderboard
        method: GET
Open in Framework → View in Fleet → game-leaderboard-lookup.yml

Retrieves the current store catalog for a game, including items, prices, and availability.

naftiko: '0.5'
info:
  label: Game Store Catalog Lookup
  description: Retrieves the current store catalog for a game, including items, prices, and availability.
  tags:
  - game-ops
  - store
  - commerce
capability:
  exposes:
  - type: mcp
    namespace: store-catalog
    port: 8080
    tools:
    - name: get-store-catalog
      description: Query the game store catalog. Returns items, prices, and availability.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: region
        in: body
        type: string
        description: The store region.
      call: store-api.get-catalog
      with:
        game: '{{game_title}}'
        region: '{{region}}'
  consumes:
  - type: http
    namespace: store-api
    baseUri: https://store.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.store_api_token
    resources:
    - name: catalogs
      path: /catalogs?game={{game}}&region={{region}}
      inputParameters:
      - name: game
        in: path
      - name: region
        in: path
      operations:
      - name: get-catalog
        method: GET
Open in Framework → View in Fleet → game-store-catalog-lookup.yml

Scales game server capacity for a region by adjusting cloud infrastructure, updating the load balancer, notifying ops via Teams, and recording the scaling event in Datadog.

naftiko: '0.5'
info:
  label: Game Region Scaling Orchestrator
  description: Scales game server capacity for a region by adjusting cloud infrastructure, updating the load balancer, notifying ops via Teams, and recording the scaling event in Datadog.
  tags:
  - game-ops
  - infrastructure
  - scaling
  - microsoft-teams
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: gameops-scaling
    port: 8080
    tools:
    - name: scale-region
      description: Given a game, region, and target capacity, scale servers, update LB, notify ops, and record in Datadog.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: region
        in: body
        type: string
        description: The game region.
      - name: target_capacity
        in: body
        type: number
        description: Target server instance count.
      - name: reason
        in: body
        type: string
        description: Reason for scaling (event, peak, incident).
      steps:
      - name: scale-servers
        type: call
        call: gameserver-api.scale-region
        with:
          game: '{{game_title}}'
          region: '{{region}}'
          target: '{{target_capacity}}'
      - name: notify-ops
        type: call
        call: msteams.send-channel-message
        with:
          team_id: gameops_{{game_title}}
          channel: Infrastructure
          text: 'Scaling {{game_title}} {{region}} to {{target_capacity}} instances. Reason: {{reason}}. Status: {{scale-servers.status}}.'
      - name: record-event
        type: call
        call: datadog.send-event
        with:
          title: 'Region scaling: {{game_title}} {{region}}'
          text: 'Target: {{target_capacity}}, Reason: {{reason}}'
          tags: game:{{game_title}},region:{{region}},type:scaling
  consumes:
  - type: http
    namespace: gameserver-api
    baseUri: https://gameserver.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.gameserver_api_token
    resources:
    - name: scaling
      path: /regions/{{region}}/scale
      inputParameters:
      - name: region
        in: path
      operations:
      - name: scale-region
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: send-event
        method: POST
Open in Framework → View in Fleet → game-region-scaling-orchestrator.yml

Orchestrates esports event production pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Event Production Pipeline
  description: Orchestrates esports event production pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-event-production-pipeline
      description: Orchestrates esports event production pipeline across video game development and esports systems, coordinating multiple 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://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/esports
      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/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-event-production-pipeline.yml

Retrieves tournament bracket status data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Tournament Bracket Status
  description: Retrieves tournament bracket status data from the Riot Games video game development and esports systems.
  tags:
  - tournament
  - riot-games
  - status
capability:
  exposes:
  - type: mcp
    namespace: tournament
    port: 8080
    tools:
    - name: tournament-bracket-status
      description: Retrieves tournament bracket status data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.tournament-bracket-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /tournament/bracket/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: tournament-bracket-status
        method: GET
Open in Framework → View in Fleet → tournament-bracket-status.yml

Sends an email via Microsoft Graph.

naftiko: '0.5'
info:
  label: Microsoft Outlook Email Notification
  description: Sends an email via Microsoft Graph.
  tags:
  - communications
  - email
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: comms-email
    port: 8080
    tools:
    - name: send-email
      description: Send an email via Microsoft Graph.
      inputParameters:
      - name: to_email
        in: body
        type: string
        description: Recipient email.
      - name: subject
        in: body
        type: string
        description: Email subject.
      - name: body
        in: body
        type: string
        description: Email body.
      call: outlook.send-mail
      with:
        to: '{{to_email}}'
        subject: '{{subject}}'
        body: '{{body}}'
  consumes:
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → microsoft-outlook-email-notification.yml

Orchestrates game live ops event pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Live Ops Event Pipeline
  description: Orchestrates game live ops event pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-live-ops-event-pipeline
      description: Orchestrates game live ops event pipeline across video game development and esports systems, coordinating multiple 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://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      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/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-live-ops-event-pipeline.yml

Orchestrates player report investigation workflow across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Report Investigation Workflow
  description: Orchestrates player report investigation workflow across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - pagerduty
  - riot
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-report-investigation-workflow
      description: Orchestrates player report investigation workflow across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: riot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: servicenow.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-report-investigation-workflow.yml

Forecasts server capacity needs by analyzing player engagement trends, current server utilization via Datadog, and creating a planning report in Confluence.

naftiko: '0.5'
info:
  label: Game Server Capacity Planning Orchestrator
  description: Forecasts server capacity needs by analyzing player engagement trends, current server utilization via Datadog, and creating a planning report in Confluence.
  tags:
  - game-ops
  - infrastructure
  - datadog
  - confluence
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: gameops-capacity
    port: 8080
    tools:
    - name: forecast-capacity
      description: Given a game title and forecast period, analyze trends, check utilization, and create a planning report.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: forecast_period
        in: body
        type: string
        description: The forecast period (e.g. next_30d).
      steps:
      - name: get-engagement-trends
        type: call
        call: analytics-api.get-engagement-trends
        with:
          game: '{{game_title}}'
          period: '{{forecast_period}}'
      - name: get-utilization
        type: call
        call: datadog.query-metrics
        with:
          query: avg:server.cpu.usage{game:{{game_title}}}
      - name: create-report
        type: call
        call: confluence.create-page
        with:
          space_key: GAMEOPS
          title: 'Capacity Forecast: {{game_title}} — {{forecast_period}}'
          body: 'Peak DAU trend: {{get-engagement-trends.peak_dau}}. Avg CPU: {{get-utilization.avg_value}}%. Recommended capacity: {{get-engagement-trends.recommended_instances}}.'
  consumes:
  - type: http
    namespace: analytics-api
    baseUri: https://analytics.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_api_token
    resources:
    - name: trends
      path: /engagement/trends?game={{game}}&period={{period}}
      inputParameters:
      - name: game
        in: path
      - name: period
        in: path
      operations:
      - name: get-engagement-trends
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: query
      path: /query?query={{query}}
      inputParameters:
      - name: query
        in: path
      operations:
      - name: query-metrics
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://riotgames.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 → game-server-capacity-planning-orchestrator.yml

Uploads a game asset to Amazon S3 for content delivery and build storage.

naftiko: '0.5'
info:
  label: Amazon S3 Asset Upload
  description: Uploads a game asset to Amazon S3 for content delivery and build storage.
  tags:
  - infrastructure
  - storage
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: infra-s3
    port: 8080
    tools:
    - name: upload-asset
      description: Upload a file to an S3 bucket. Returns the S3 object URL.
      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.put-object
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: aws
      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
Open in Framework → View in Fleet → amazon-s3-asset-upload.yml

Coordinates a game patch deployment by creating a Jira release ticket, triggering the GitHub Actions build, notifying QA and game ops via Microsoft Teams, and posting status update.

naftiko: '0.5'
info:
  label: Game Patch Deployment Orchestrator
  description: Coordinates a game patch deployment by creating a Jira release ticket, triggering the GitHub Actions build, notifying QA and game ops via Microsoft Teams, and posting status update.
  tags:
  - game-ops
  - deployment
  - jira
  - github-actions
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: gameops-deployment
    port: 8080
    tools:
    - name: deploy-patch
      description: Given a game title, patch version, and target region, create Jira ticket, trigger build, notify teams, and update status.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: patch_version
        in: body
        type: string
        description: The patch version (e.g. 14.5.1).
      - name: target_region
        in: body
        type: string
        description: The target deployment region.
      steps:
      - name: create-release-ticket
        type: call
        call: jira.create-issue
        with:
          project: DEPLOY
          summary: '{{game_title}} patch {{patch_version}} — {{target_region}}'
          description: Deploying patch {{patch_version}} to {{target_region}}.
          issue_type: Release
      - name: trigger-build
        type: call
        call: github.trigger-workflow
        with:
          owner: riotgames
          repo: '{{game_title}}-deploy'
          workflow_id: deploy.yml
          ref: release/{{patch_version}}
      - name: notify-qa
        type: call
        call: msteams.send-channel-message
        with:
          team_id: qa_{{game_title}}
          channel: Deployments
          text: 'Patch {{patch_version}} deployment initiated for {{game_title}} in {{target_region}}. Jira: {{create-release-ticket.key}}. Build triggered.'
      - name: notify-ops
        type: call
        call: msteams.send-channel-message
        with:
          team_id: gameops_{{game_title}}
          channel: Deployments
          text: 'Patch {{patch_version}} deploying to {{target_region}}. Jira: {{create-release-ticket.key}}. Monitor for issues.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-dispatch
      path: /repos/{{owner}}/{{repo}}/actions/workflows/{{workflow_id}}/dispatches
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: trigger-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/{{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 → game-patch-deployment-orchestrator.yml

Retrieves esports team roster lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Esports Team Roster Lookup
  description: Retrieves esports team roster lookup data from the Riot Games video game development and esports systems.
  tags:
  - esports
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-team-roster-lookup
      description: Retrieves esports team roster lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.esports-team-roster-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /esports/team/roster/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: esports-team-roster-lookup
        method: GET
Open in Framework → View in Fleet → esports-team-roster-lookup.yml

Sets up an esports match by configuring the game server, verifying player eligibility, notifying broadcast teams via Microsoft Teams, and creating a Jira tracking ticket.

naftiko: '0.5'
info:
  label: Esports Match Setup Orchestrator
  description: Sets up an esports match by configuring the game server, verifying player eligibility, notifying broadcast teams via Microsoft Teams, and creating a Jira tracking ticket.
  tags:
  - esports
  - game-ops
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: esports-match-setup
    port: 8080
    tools:
    - name: setup-match
      description: Given a match ID and tournament ID, configure server, verify players, notify broadcast, and create Jira ticket.
      inputParameters:
      - name: match_id
        in: body
        type: string
        description: The esports match ID.
      - name: tournament_id
        in: body
        type: string
        description: The tournament ID.
      - name: game_title
        in: body
        type: string
        description: The game title.
      steps:
      - name: get-match
        type: call
        call: esports-api.get-match
        with:
          match_id: '{{match_id}}'
      - name: configure-server
        type: call
        call: gameserver-api.create-instance
        with:
          game: '{{game_title}}'
          region: '{{get-match.region}}'
          tournament_mode: true
          match_id: '{{match_id}}'
      - name: notify-broadcast
        type: call
        call: msteams.send-channel-message
        with:
          team_id: esports_broadcast
          channel: Match-Setup
          text: 'Match {{match_id}} configured: {{get-match.team1}} vs {{get-match.team2}}. Server: {{configure-server.server_id}}. Region: {{get-match.region}}. Scheduled: {{get-match.scheduled_time}}.'
      - name: create-jira
        type: call
        call: jira.create-issue
        with:
          project: ESPORTS
          summary: 'Match {{match_id}}: {{get-match.team1}} vs {{get-match.team2}}'
          description: 'Tournament: {{tournament_id}}. Server: {{configure-server.server_id}}. Time: {{get-match.scheduled_time}}.'
          issue_type: Task
  consumes:
  - type: http
    namespace: esports-api
    baseUri: https://esports.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.esports_api_token
    resources:
    - name: matches
      path: /matches/{{match_id}}
      inputParameters:
      - name: match_id
        in: path
      operations:
      - name: get-match
        method: GET
  - type: http
    namespace: gameserver-api
    baseUri: https://gameserver.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.gameserver_api_token
    resources:
    - name: instances
      path: /instances
      operations:
      - name: create-instance
        method: POST
  - type: http
    namespace: msteams
    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: jira
    baseUri: https://riotgames.atlassian.net/rest/api/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 → esports-match-setup-orchestrator.yml

When a game server incident is detected, creates a ServiceNow P1, notifies the game ops team via Microsoft Teams, sends a Datadog event, and posts a player notification via the status API.

naftiko: '0.5'
info:
  label: Game Server Incident Orchestrator
  description: When a game server incident is detected, creates a ServiceNow P1, notifies the game ops team via Microsoft Teams, sends a Datadog event, and posts a player notification via the status API.
  tags:
  - game-ops
  - incident
  - servicenow
  - microsoft-teams
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: gameops-incidents
    port: 8080
    tools:
    - name: handle-server-incident
      description: Given a game region and incident details, create ServiceNow P1, alert ops, log in Datadog, and post player status.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title (e.g. VALORANT, League of Legends).
      - name: region
        in: body
        type: string
        description: The affected game region (NA, EUW, KR, etc.).
      - name: severity
        in: body
        type: string
        description: Incident severity (critical, major, minor).
      - name: description
        in: body
        type: string
        description: Description of the issue.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '{{game_title}} server incident in {{region}}: {{severity}}'
          priority: '1'
          category: game_operations
          assigned_group: GameOps_{{game_title}}
          description: 'Game: {{game_title}}. Region: {{region}}. Severity: {{severity}}. Details: {{description}}.'
      - name: notify-ops
        type: call
        call: msteams.send-channel-message
        with:
          team_id: gameops_{{game_title}}
          channel: Incidents
          text: 'SERVER INCIDENT: {{game_title}} {{region}} ({{severity}}). {{description}}. Incident: {{create-incident.number}}.'
      - name: log-datadog
        type: call
        call: datadog.send-event
        with:
          title: 'Game incident: {{game_title}} {{region}}'
          text: 'Severity: {{severity}}. {{description}}'
          alert_type: error
          tags: game:{{game_title}},region:{{region}},severity:{{severity}}
      - name: post-status
        type: call
        call: status-api.create-incident
        with:
          game: '{{game_title}}'
          region: '{{region}}'
          title: Service disruption in {{region}}
          message: We are aware of issues affecting {{game_title}} in {{region}} and are investigating.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: send-event
        method: POST
  - type: http
    namespace: status-api
    baseUri: https://status.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.status_api_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → game-server-incident-orchestrator.yml

Retrieves the current status of matchmaking queues for a game and region including queue times and player counts.

naftiko: '0.5'
info:
  label: Game Matchmaking Queue Status
  description: Retrieves the current status of matchmaking queues for a game and region including queue times and player counts.
  tags:
  - game-ops
  - matchmaking
  - player-systems
capability:
  exposes:
  - type: mcp
    namespace: gameops-matchmaking
    port: 8080
    tools:
    - name: get-queue-status
      description: Query matchmaking queue status. Returns queue times and player counts.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: region
        in: body
        type: string
        description: The game region.
      call: matchmaking-api.get-queues
      with:
        game: '{{game_title}}'
        region: '{{region}}'
  consumes:
  - type: http
    namespace: matchmaking-api
    baseUri: https://matchmaking.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.matchmaking_api_token
    resources:
    - name: queues
      path: /queues?game={{game}}&region={{region}}
      inputParameters:
      - name: game
        in: path
      - name: region
        in: path
      operations:
      - name: get-queues
        method: GET
Open in Framework → View in Fleet → game-matchmaking-queue-status.yml

Orchestrates player toxicity machine learning pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Toxicity Machine Learning Pipeline
  description: Orchestrates player toxicity machine learning pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-toxicity-machine-learning-pipeline
      description: Orchestrates player toxicity machine learning pipeline across video game development and esports systems, coordinating multiple 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://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/player
      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/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-toxicity-machine-learning-pipeline.yml

Orchestrates game client crash analysis pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Client Crash Analysis Pipeline
  description: Orchestrates game client crash analysis pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - confluence
  - pagerduty
  - riot
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-client-crash-analysis-pipeline
      description: Orchestrates game client crash analysis pipeline across video game development and esports systems, coordinating multiple 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: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: riot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-client-crash-analysis-pipeline.yml

Orchestrates game rating compliance pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Rating Compliance Pipeline
  description: Orchestrates game rating compliance pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - discord
  - twitch
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-rating-compliance-pipeline
      description: Orchestrates game rating compliance pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: discord.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: twitch.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-rating-compliance-pipeline.yml

Orchestrates game security vulnerability pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Security Vulnerability Pipeline
  description: Orchestrates game security vulnerability pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - discord
  - twitch
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-security-vulnerability-pipeline
      description: Orchestrates game security vulnerability pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: discord.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: twitch.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-security-vulnerability-pipeline.yml

Orchestrates game seasonal content pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Seasonal Content Pipeline
  description: Orchestrates game seasonal content pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - riot
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-seasonal-content-pipeline
      description: Orchestrates game seasonal content pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: riot.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: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-seasonal-content-pipeline.yml

Retrieves a secret value from Azure Key Vault for secure configuration management.

naftiko: '0.5'
info:
  label: Azure Key Vault Secret Retrieval
  description: Retrieves a secret value from Azure Key Vault for secure configuration management.
  tags:
  - security
  - infrastructure
  - azure-key-vault
capability:
  exposes:
  - type: mcp
    namespace: security-keyvault
    port: 8080
    tools:
    - name: get-secret
      description: Retrieve a secret from Azure Key Vault by name.
      inputParameters:
      - name: vault_name
        in: body
        type: string
        description: The Key Vault name.
      - name: secret_name
        in: body
        type: string
        description: The secret name.
      call: keyvault.get-secret
      with:
        vault_name: '{{vault_name}}'
        secret_name: '{{secret_name}}'
  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}}?api-version=7.4
      inputParameters:
      - name: secret_name
        in: path
      operations:
      - name: get-secret
        method: GET
Open in Framework → View in Fleet → azure-key-vault-secret-retrieval.yml

Retrieves CDN analytics from Cloudflare for game asset delivery performance.

naftiko: '0.5'
info:
  label: Cloudflare CDN Analytics
  description: Retrieves CDN analytics from Cloudflare for game asset delivery performance.
  tags:
  - infrastructure
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: infra-cdn
    port: 8080
    tools:
    - name: get-cdn-analytics
      description: Query Cloudflare CDN analytics. Returns requests, bandwidth, and cache hit ratio.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone ID.
      - name: since
        in: body
        type: string
        description: Start time in ISO 8601.
      call: cloudflare.get-analytics
      with:
        zone_id: '{{zone_id}}'
        since: '{{since}}'
  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?since={{since}}
      inputParameters:
      - name: zone_id
        in: path
      - name: since
        in: path
      operations:
      - name: get-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-analytics.yml

Retrieves a player's match history from the match data service.

naftiko: '0.5'
info:
  label: Game Match History Lookup
  description: Retrieves a player's match history from the match data service.
  tags:
  - player-systems
  - match-data
  - game-ops
capability:
  exposes:
  - type: mcp
    namespace: match-history
    port: 8080
    tools:
    - name: get-match-history
      description: Look up a player's recent match history by PUUID and game title.
      inputParameters:
      - name: puuid
        in: body
        type: string
        description: The player PUUID.
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: count
        in: body
        type: number
        description: Number of recent matches to return.
      call: match-api.get-history
      with:
        puuid: '{{puuid}}'
        game: '{{game_title}}'
        count: '{{count}}'
  consumes:
  - type: http
    namespace: match-api
    baseUri: https://match.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.match_api_token
    resources:
    - name: history
      path: /players/{{puuid}}/matches?game={{game}}&count={{count}}
      inputParameters:
      - name: puuid
        in: path
      - name: game
        in: path
      - name: count
        in: path
      operations:
      - name: get-history
        method: GET
Open in Framework → View in Fleet → game-match-history-lookup.yml

Retrieves game event pass progress data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Game Event Pass Progress
  description: Retrieves game event pass progress data from the Riot Games video game development and esports systems.
  tags:
  - game
  - riot-games
  - progress
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-event-pass-progress
      description: Retrieves game event pass progress data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.game-event-pass-progress
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /game/event/pass/progress/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: game-event-pass-progress
        method: GET
Open in Framework → View in Fleet → game-event-pass-progress.yml

Orchestrates player onboarding tutorial pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Onboarding Tutorial Pipeline
  description: Orchestrates player onboarding tutorial pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - pagerduty
  - riot
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-onboarding-tutorial-pipeline
      description: Orchestrates player onboarding tutorial pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: riot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: servicenow.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-onboarding-tutorial-pipeline.yml

Orchestrates player data portability pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Data Portability Pipeline
  description: Orchestrates player data portability pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-data-portability-pipeline
      description: Orchestrates player data portability pipeline across video game development and esports systems, coordinating multiple 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://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/player
      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/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-data-portability-pipeline.yml

Orchestrates game lore content publishing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Lore Content Publishing Pipeline
  description: Orchestrates game lore content publishing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - jira
  - datadog
  - discord
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-lore-content-publishing-pipeline
      description: Orchestrates game lore content publishing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: discord.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-lore-content-publishing-pipeline.yml

Retrieves a Perforce changelist status for game asset version control.

naftiko: '0.5'
info:
  label: Perforce Changelist Status
  description: Retrieves a Perforce changelist status for game asset version control.
  tags:
  - devops
  - version-control
  - perforce
capability:
  exposes:
  - type: mcp
    namespace: devops-perforce
    port: 8080
    tools:
    - name: get-changelist
      description: Look up a Perforce changelist by number. Returns description, author, and file count.
      inputParameters:
      - name: changelist_number
        in: body
        type: string
        description: The Perforce changelist number.
      call: perforce.get-changelist
      with:
        changelist: '{{changelist_number}}'
  consumes:
  - type: http
    namespace: perforce
    baseUri: https://perforce.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.perforce_token
    resources:
    - name: changelists
      path: /changelists/{{changelist}}
      inputParameters:
      - name: changelist
        in: path
      operations:
      - name: get-changelist
        method: GET
Open in Framework → View in Fleet → perforce-changelist-status.yml

Orchestrates game balance patch pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Balance Patch Pipeline
  description: Orchestrates game balance patch pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - riot
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-balance-patch-pipeline
      description: Orchestrates game balance patch pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: riot.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: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-balance-patch-pipeline.yml

Retrieves the latest GitHub Actions workflow run status for a repository.

naftiko: '0.5'
info:
  label: GitHub Actions Pipeline Status
  description: Retrieves the latest GitHub Actions workflow run status for a repository.
  tags:
  - devops
  - ci-cd
  - github-actions
capability:
  exposes:
  - type: mcp
    namespace: devops-github
    port: 8080
    tools:
    - name: get-workflow-status
      description: Get the latest GitHub Actions workflow run for a repo.
      inputParameters:
      - name: owner
        in: body
        type: string
        description: The GitHub repo owner.
      - name: repo
        in: body
        type: string
        description: The repository name.
      - name: workflow_id
        in: body
        type: string
        description: The workflow file name or ID.
      call: github.get-workflow-runs
      with:
        owner: '{{owner}}'
        repo: '{{repo}}'
        workflow_id: '{{workflow_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{owner}}/{{repo}}/actions/workflows/{{workflow_id}}/runs?per_page=1
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: get-workflow-runs
        method: GET
Open in Framework → View in Fleet → github-actions-pipeline-status.yml

Retrieves player honor level lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Honor Level Lookup
  description: Retrieves player honor level lookup data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-honor-level-lookup
      description: Retrieves player honor level lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-honor-level-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/honor/level/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-honor-level-lookup
        method: GET
Open in Framework → View in Fleet → player-honor-level-lookup.yml

Retrieves player purchase history data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Purchase History
  description: Retrieves player purchase history data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - history
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-purchase-history
      description: Retrieves player purchase history data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-purchase-history
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/purchase/history/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-purchase-history
        method: GET
Open in Framework → View in Fleet → player-purchase-history.yml

Sends a message to a Slack channel for team notifications.

naftiko: '0.5'
info:
  label: Slack Channel Notification
  description: Sends a message to a Slack channel for team notifications.
  tags:
  - collaboration
  - messaging
  - slack
capability:
  exposes:
  - type: mcp
    namespace: comms-slack
    port: 8080
    tools:
    - name: send-slack-message
      description: Post a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel ID.
      - name: message
        in: body
        type: string
        description: The message text.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{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-channel-notification.yml

Retrieves game server latency check data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Game Server Latency Check
  description: Retrieves game server latency check data from the Riot Games video game development and esports systems.
  tags:
  - game
  - riot-games
  - check
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-server-latency-check
      description: Retrieves game server latency check data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.game-server-latency-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /game/server/latency/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: game-server-latency-check
        method: GET
Open in Framework → View in Fleet → game-server-latency-check.yml

Orchestrates game cross platform sync pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Cross Platform Sync Pipeline
  description: Orchestrates game cross platform sync pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - discord
  - twitch
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-cross-platform-sync-pipeline
      description: Orchestrates game cross platform sync pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: discord.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: twitch.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-cross-platform-sync-pipeline.yml

Retrieves skin catalog lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Skin Catalog Lookup
  description: Retrieves skin catalog lookup data from the Riot Games video game development and esports systems.
  tags:
  - skin
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: skin
    port: 8080
    tools:
    - name: skin-catalog-lookup
      description: Retrieves skin catalog lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.skin-catalog-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /skin/catalog/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: skin-catalog-lookup
        method: GET
Open in Framework → View in Fleet → skin-catalog-lookup.yml

Orchestrates player churn prediction pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Churn Prediction Pipeline
  description: Orchestrates player churn prediction pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - datadog
  - discord
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-churn-prediction-pipeline
      description: Orchestrates player churn prediction pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: discord.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: twitch.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-churn-prediction-pipeline.yml

Orchestrates game accessibility testing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Accessibility Testing Pipeline
  description: Orchestrates game accessibility testing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - riot
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-accessibility-testing-pipeline
      description: Orchestrates game accessibility testing pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: riot.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: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-accessibility-testing-pipeline.yml

Retrieves the status and schedule of an esports tournament from the esports platform.

naftiko: '0.5'
info:
  label: Esports Tournament Status Lookup
  description: Retrieves the status and schedule of an esports tournament from the esports platform.
  tags:
  - esports
  - tournaments
  - game-ops
capability:
  exposes:
  - type: mcp
    namespace: esports-tournaments
    port: 8080
    tools:
    - name: get-tournament-status
      description: Look up an esports tournament by ID. Returns schedule, teams, and current stage.
      inputParameters:
      - name: tournament_id
        in: body
        type: string
        description: The esports tournament ID.
      call: esports-api.get-tournament
      with:
        tournament_id: '{{tournament_id}}'
  consumes:
  - type: http
    namespace: esports-api
    baseUri: https://esports.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.esports_api_token
    resources:
    - name: tournaments
      path: /tournaments/{{tournament_id}}
      inputParameters:
      - name: tournament_id
        in: path
      operations:
      - name: get-tournament
        method: GET
Open in Framework → View in Fleet → esports-tournament-status-lookup.yml

Orchestrates game network optimization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Network Optimization Pipeline
  description: Orchestrates game network optimization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - jira
  - datadog
  - discord
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-network-optimization-pipeline
      description: Orchestrates game network optimization pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: discord.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-network-optimization-pipeline.yml

Retrieves a user profile from Azure AD by UPN.

naftiko: '0.5'
info:
  label: Azure Active Directory User Lookup
  description: Retrieves a user profile from Azure AD by UPN.
  tags:
  - identity
  - directory
  - azure-active-directory
capability:
  exposes:
  - type: mcp
    namespace: identity-aad
    port: 8080
    tools:
    - name: get-user
      description: Look up an Azure AD user by UPN.
      inputParameters:
      - name: user_upn
        in: body
        type: string
        description: The user principal name.
      call: aad.get-user
      with:
        upn: '{{user_upn}}'
  consumes:
  - type: http
    namespace: aad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{upn}}
      inputParameters:
      - name: upn
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → azure-active-directory-user-lookup.yml

Retrieves player ranked stats data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Ranked Stats
  description: Retrieves player ranked stats data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - stats
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-ranked-stats
      description: Retrieves player ranked stats data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-ranked-stats
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/ranked/stats/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-ranked-stats
        method: GET
Open in Framework → View in Fleet → player-ranked-stats.yml

Retrieves player club membership lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Player Club Membership Lookup
  description: Retrieves player club membership lookup data from the Riot Games video game development and esports systems.
  tags:
  - player
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-club-membership-lookup
      description: Retrieves player club membership lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.player-club-membership-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /player/club/membership/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: player-club-membership-lookup
        method: GET
Open in Framework → View in Fleet → player-club-membership-lookup.yml

Orchestrates esports viewer engagement pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Viewer Engagement Pipeline
  description: Orchestrates esports viewer engagement pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-viewer-engagement-pipeline
      description: Orchestrates esports viewer engagement pipeline across video game development and esports systems, coordinating multiple 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://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/esports
      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/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-viewer-engagement-pipeline.yml

When a cheat detection exceeds confidence threshold, bans the player account, logs the action in ServiceNow, notifies the anti-cheat team via Microsoft Teams, and records the metric in Datadog.

naftiko: '0.5'
info:
  label: Anti-Cheat Ban Orchestrator
  description: When a cheat detection exceeds confidence threshold, bans the player account, logs the action in ServiceNow, notifies the anti-cheat team via Microsoft Teams, and records the metric in Datadog.
  tags:
  - anti-cheat
  - security
  - player-systems
  - servicenow
  - microsoft-teams
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: anticheat-enforcement
    port: 8080
    tools:
    - name: enforce-ban
      description: Given a report ID and player PUUID, ban the account, log in ServiceNow, notify team, and record metrics.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The anti-cheat report ID.
      - name: puuid
        in: body
        type: string
        description: The player PUUID to ban.
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: ban_reason
        in: body
        type: string
        description: The ban reason code.
      steps:
      - name: get-report
        type: call
        call: anticheat-api.get-report
        with:
          report_id: '{{report_id}}'
      - name: ban-player
        type: call
        call: player-api.ban-account
        with:
          puuid: '{{puuid}}'
          reason: '{{ban_reason}}'
          game: '{{game_title}}'
          duration: permanent
      - name: log-action
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Anti-cheat ban: {{puuid}} in {{game_title}}'
          description: 'Report: {{report_id}}. Detection: {{get-report.detection_type}}. Confidence: {{get-report.confidence_score}}. Ban reason: {{ban_reason}}.'
          category: anti_cheat
          assigned_group: AntiCheat_Team
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: anticheat_team
          channel: Enforcements
          text: 'Ban enforced: {{puuid}} in {{game_title}}. Detection: {{get-report.detection_type}} (confidence: {{get-report.confidence_score}}). Report: {{report_id}}.'
      - name: record-metric
        type: call
        call: datadog.send-event
        with:
          title: 'Anti-cheat ban: {{game_title}}'
          text: 'PUUID: {{puuid}}, Detection: {{get-report.detection_type}}, Confidence: {{get-report.confidence_score}}'
          tags: game:{{game_title}},type:ban,detection:{{get-report.detection_type}}
  consumes:
  - type: http
    namespace: anticheat-api
    baseUri: https://anticheat.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.anticheat_api_token
    resources:
    - name: reports
      path: /reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-report
        method: GET
  - type: http
    namespace: player-api
    baseUri: https://player.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.player_api_token
    resources:
    - name: bans
      path: /accounts/{{puuid}}/bans
      inputParameters:
      - name: puuid
        in: path
      operations:
      - name: ban-account
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: send-event
        method: POST
Open in Framework → View in Fleet → anti-cheat-ban-orchestrator.yml

Orchestrates esports venue logistics pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Venue Logistics Pipeline
  description: Orchestrates esports venue logistics pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - pagerduty
  - riot
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-venue-logistics-pipeline
      description: Orchestrates esports venue logistics pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: riot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: servicenow.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: riot-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-venue-logistics-pipeline.yml

Orchestrates anti cheat detection pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Anti Cheat Detection Pipeline
  description: Orchestrates anti cheat detection pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - anti
  - riot-games
  - jira
  - datadog
  - discord
capability:
  exposes:
  - type: mcp
    namespace: anti
    port: 8080
    tools:
    - name: anti-cheat-detection-pipeline
      description: Orchestrates anti cheat detection pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: discord.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/anti
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/anti
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/anti
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → anti-cheat-detection-pipeline.yml

Sends a message to a Discord channel via webhook for community announcements.

naftiko: '0.5'
info:
  label: Discord Community Alert
  description: Sends a message to a Discord channel via webhook for community announcements.
  tags:
  - community
  - messaging
  - discord
capability:
  exposes:
  - type: mcp
    namespace: comms-discord
    port: 8080
    tools:
    - name: send-discord-message
      description: Send a message to a Discord channel via webhook.
      inputParameters:
      - name: webhook_id
        in: body
        type: string
        description: The Discord webhook ID.
      - name: message
        in: body
        type: string
        description: The message content.
      call: discord.send-webhook
      with:
        webhook_id: '{{webhook_id}}'
        content: '{{message}}'
  consumes:
  - type: http
    namespace: discord
    baseUri: https://discord.com/api
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: webhooks
      path: /webhooks/{{webhook_id}}/{{webhook_token}}
      inputParameters:
      - name: webhook_id
        in: path
      operations:
      - name: send-webhook
        method: POST
Open in Framework → View in Fleet → discord-community-alert.yml

Coordinates a content release by updating the content delivery system, clearing CDN cache via Cloudflare, notifying community via Discord, and posting to social media.

naftiko: '0.5'
info:
  label: Game Content Release Orchestrator
  description: Coordinates a content release by updating the content delivery system, clearing CDN cache via Cloudflare, notifying community via Discord, and posting to social media.
  tags:
  - game-ops
  - content
  - cloudflare
  - discord
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: gameops-content
    port: 8080
    tools:
    - name: release-content
      description: Given game title and content details, update CDS, purge CDN, notify Discord, and post to Twitter.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: content_id
        in: body
        type: string
        description: The content bundle ID.
      - name: release_notes
        in: body
        type: string
        description: The release notes summary.
      steps:
      - name: activate-content
        type: call
        call: content-api.activate-bundle
        with:
          game: '{{game_title}}'
          bundle_id: '{{content_id}}'
      - name: purge-cdn
        type: call
        call: cloudflare.purge-cache
        with:
          zone_id: $secrets.cloudflare_zone_id
          prefixes: /{{game_title}}/content/
      - name: notify-discord
        type: call
        call: discord.send-webhook
        with:
          webhook_id: $secrets.discord_announcements_webhook
          content: New content available in {{game_title}}! {{release_notes}}
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: New content just dropped in {{game_title}}! {{release_notes}}
  consumes:
  - type: http
    namespace: content-api
    baseUri: https://content.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.content_api_token
    resources:
    - name: bundles
      path: /bundles/{{bundle_id}}/activate
      inputParameters:
      - name: bundle_id
        in: path
      operations:
      - name: activate-bundle
        method: POST
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: cache
      path: /zones/{{zone_id}}/purge_cache
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: purge-cache
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: webhooks
      path: /webhooks/{{webhook_id}}/{{webhook_token}}
      inputParameters:
      - name: webhook_id
        in: path
      operations:
      - name: send-webhook
        method: POST
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
Open in Framework → View in Fleet → game-content-release-orchestrator.yml

Orchestrates esports talent scouting pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Talent Scouting Pipeline
  description: Orchestrates esports talent scouting pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - twitch
  - confluence
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-talent-scouting-pipeline
      description: Orchestrates esports talent scouting pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: twitch.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: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://riotgames.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-talent-scouting-pipeline.yml

When an employee leaves, deactivates Azure AD, closes ServiceNow tickets, and notifies via Teams.

naftiko: '0.5'
info:
  label: IT Asset Offboarding Orchestrator
  description: When an employee leaves, deactivates Azure AD, closes ServiceNow tickets, and notifies via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - azure-active-directory
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: offboard-employee
      description: Given a Workday employee ID, deactivate Azure AD, close tickets, and notify.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      - name: last_day
        in: body
        type: string
        description: Last working day.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: disable-ad
        type: call
        call: aad.disable-user
        with:
          upn: '{{get-employee.work_email}}'
      - name: close-tickets
        type: call
        call: servicenow.close-user-tickets
        with:
          caller_id: '{{get-employee.work_email}}'
          close_notes: 'Offboarding: {{get-employee.full_name}} last day {{last_day}}'
      - name: notify-hr
        type: call
        call: msteams.send-message
        with:
          recipient_upn: hr-team@riotgames.com
          text: Offboarding complete for {{get-employee.full_name}}. AD disabled, tickets closed.
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: aad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{upn}}
      inputParameters:
      - name: upn
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://riotgames.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident?sysparm_query=caller_id={{caller_id}}^state!=7
      inputParameters:
      - name: caller_id
        in: path
      operations:
      - name: close-user-tickets
        method: PATCH
  - type: http
    namespace: 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 → it-asset-offboarding-orchestrator.yml

Queries player engagement metrics from the analytics platform including DAU, session length, and retention rate.

naftiko: '0.5'
info:
  label: Player Engagement Analytics
  description: Queries player engagement metrics from the analytics platform including DAU, session length, and retention rate.
  tags:
  - analytics
  - player-systems
  - game-ops
capability:
  exposes:
  - type: mcp
    namespace: analytics-engagement
    port: 8080
    tools:
    - name: get-engagement-metrics
      description: Query player engagement metrics for a game and region. Returns DAU, session length, and retention.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: region
        in: body
        type: string
        description: The game region.
      - name: date
        in: body
        type: string
        description: The date in YYYY-MM-DD format.
      call: analytics-api.get-engagement
      with:
        game: '{{game_title}}'
        region: '{{region}}'
        date: '{{date}}'
  consumes:
  - type: http
    namespace: analytics-api
    baseUri: https://analytics.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_api_token
    resources:
    - name: engagement
      path: /engagement?game={{game}}&region={{region}}&date={{date}}
      inputParameters:
      - name: game
        in: path
      - name: region
        in: path
      - name: date
        in: path
      operations:
      - name: get-engagement
        method: GET
Open in Framework → View in Fleet → player-engagement-analytics.yml

Orchestrates game social feature pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Social Feature Pipeline
  description: Orchestrates game social feature pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-social-feature-pipeline
      description: Orchestrates game social feature pipeline across video game development and esports systems, coordinating multiple 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://riotgames.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/game
      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/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-social-feature-pipeline.yml

Orchestrates esports fantasy league pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Fantasy League Pipeline
  description: Orchestrates esports fantasy league pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - datadog
  - discord
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-fantasy-league-pipeline
      description: Orchestrates esports fantasy league pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: discord.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: twitch.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-fantasy-league-pipeline.yml

Retrieves the live status of a Twitch stream for esports broadcast monitoring.

naftiko: '0.5'
info:
  label: Twitch Stream Status
  description: Retrieves the live status of a Twitch stream for esports broadcast monitoring.
  tags:
  - esports
  - streaming
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: esports-twitch
    port: 8080
    tools:
    - name: get-stream-status
      description: Check if a Twitch channel is live. Returns viewer count, title, and game.
      inputParameters:
      - name: channel_name
        in: body
        type: string
        description: The Twitch channel name.
      call: twitch.get-stream
      with:
        channel_name: '{{channel_name}}'
  consumes:
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    inputParameters:
    - name: Client-ID
      in: header
      value: $secrets.twitch_client_id
    resources:
    - name: streams
      path: /streams?user_login={{channel_name}}
      inputParameters:
      - name: channel_name
        in: path
      operations:
      - name: get-stream
        method: GET
Open in Framework → View in Fleet → twitch-stream-status.yml

Retrieves service catalog entries from Backstage developer portal for service discovery and ownership tracking.

naftiko: '0.5'
info:
  label: Backstage Developer Portal Catalog
  description: Retrieves service catalog entries from Backstage developer portal for service discovery and ownership tracking.
  tags:
  - devops
  - developer-portal
  - backstage
capability:
  exposes:
  - type: mcp
    namespace: devops-backstage
    port: 8080
    tools:
    - name: get-catalog-entity
      description: Look up a Backstage catalog entity by kind and name.
      inputParameters:
      - name: kind
        in: body
        type: string
        description: The entity kind (Component, API, System).
      - name: name
        in: body
        type: string
        description: The entity name.
      call: backstage.get-entity
      with:
        kind: '{{kind}}'
        name: '{{name}}'
  consumes:
  - type: http
    namespace: backstage
    baseUri: https://backstage.riotgames.com/api
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: entities
      path: /catalog/entities/by-name/{{kind}}/default/{{name}}
      inputParameters:
      - name: kind
        in: path
      - name: name
        in: path
      operations:
      - name: get-entity
        method: GET
Open in Framework → View in Fleet → backstage-developer-portal-catalog.yml

Orchestrates player community management pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Player Community Management Pipeline
  description: Orchestrates player community management pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - player
  - riot-games
  - datadog
  - discord
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: player
    port: 8080
    tools:
    - name: player-community-management-pipeline
      description: Orchestrates player community management pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: discord.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: twitch.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/player
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: discord
    baseUri: https://discord.com/api/v10
    authentication:
      type: bearer
      token: $secrets.discord_bot_token
    resources:
    - name: discord-resource
      path: /api/player
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    resources:
    - name: twitch-resource
      path: /api/player
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → player-community-management-pipeline.yml

Orchestrates game server auto scaling pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Game Server Auto Scaling Pipeline
  description: Orchestrates game server auto scaling pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - game
  - riot-games
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: game
    port: 8080
    tools:
    - name: game-server-auto-scaling-pipeline
      description: Orchestrates game server auto scaling pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/game
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/game
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/game
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → game-server-auto-scaling-pipeline.yml

Retrieves champion balance data lookup data from the Riot Games video game development and esports systems.

naftiko: '0.5'
info:
  label: Champion Balance Data Lookup
  description: Retrieves champion balance data lookup data from the Riot Games video game development and esports systems.
  tags:
  - champion
  - riot-games
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: champion
    port: 8080
    tools:
    - name: champion-balance-data-lookup
      description: Retrieves champion balance data lookup data from the Riot Games video game development and esports systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: riot.champion-balance-data-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: riot
    baseUri: https://api.riotgames.com/v2
    authentication:
      type: bearer
      token: $secrets.riot_api_token
    resources:
    - name: resource
      path: /champion/balance/data/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: champion-balance-data-lookup
        method: GET
Open in Framework → View in Fleet → champion-balance-data-lookup.yml

Queries revenue analytics for a game title including microtransaction revenue and regional breakdown.

naftiko: '0.5'
info:
  label: Game Revenue Analytics
  description: Queries revenue analytics for a game title including microtransaction revenue and regional breakdown.
  tags:
  - analytics
  - finance
  - game-ops
capability:
  exposes:
  - type: mcp
    namespace: analytics-revenue
    port: 8080
    tools:
    - name: get-revenue-metrics
      description: Query game revenue analytics. Returns revenue by source and region.
      inputParameters:
      - name: game_title
        in: body
        type: string
        description: The game title.
      - name: period
        in: body
        type: string
        description: The reporting period (YYYY-MM).
      call: analytics-api.get-revenue
      with:
        game: '{{game_title}}'
        period: '{{period}}'
  consumes:
  - type: http
    namespace: analytics-api
    baseUri: https://analytics.riotgames.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_api_token
    resources:
    - name: revenue
      path: /revenue?game={{game}}&period={{period}}
      inputParameters:
      - name: game
        in: path
      - name: period
        in: path
      operations:
      - name: get-revenue
        method: GET
Open in Framework → View in Fleet → game-revenue-analytics.yml

Orchestrates esports sponsorship tracking pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Esports Sponsorship Tracking Pipeline
  description: Orchestrates esports sponsorship tracking pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
  tags:
  - esports
  - riot-games
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: esports
    port: 8080
    tools:
    - name: esports-sponsorship-tracking-pipeline
      description: Orchestrates esports sponsorship tracking pipeline across video game development and esports systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/esports
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://riotgames.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/esports
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/esports
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → esports-sponsorship-tracking-pipeline.yml

Orchestrates creator monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Creator Monetization Pipeline
  description: Orchestrates creator monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - creator
  - spotify
  - grafana
  - spotify
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: creator
    port: 8080
    tools:
    - name: creator-monetization-pipeline
      description: Orchestrates creator monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: grafana.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: spotify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/creator
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/creator
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/creator
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → creator-monetization-pipeline.yml

Orchestrates user accessibility pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Accessibility Pipeline
  description: Orchestrates user accessibility pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - pagerduty
  - confluence
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-accessibility-pipeline
      description: Orchestrates user accessibility pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.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: grafana.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/user
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-accessibility-pipeline.yml

Retrieves detailed metadata for a Spotify track by ID, including title, artist, album, duration, and popularity score.

naftiko: '0.5'
info:
  label: Get Track Metadata
  description: Retrieves detailed metadata for a Spotify track by ID, including title, artist, album, duration, and popularity score.
  tags:
  - content-management
  - spotify-web-api
capability:
  exposes:
  - type: mcp
    namespace: content-catalog
    port: 8080
    tools:
    - name: get-track
      description: Look up a Spotify track by its ID and return title, artist, album, duration, and popularity.
      inputParameters:
      - name: track_id
        in: body
        type: string
        description: The Spotify track ID.
      call: spotify-api.get-track
      with:
        track_id: '{{track_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: artist
        type: string
        mapping: $.artists[0].name
      - name: album
        type: string
        mapping: $.album.name
      - name: duration_ms
        type: number
        mapping: $.duration_ms
      - name: popularity
        type: number
        mapping: $.popularity
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: tracks
      path: /tracks/{{track_id}}
      inputParameters:
      - name: track_id
        in: path
      operations:
      - name: get-track
        method: GET
Open in Framework → View in Fleet → get-track-metadata.yml

Orchestrates content moderation appeal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Content Moderation Appeal Pipeline
  description: Orchestrates content moderation appeal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - content
  - spotify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: content
    port: 8080
    tools:
    - name: content-moderation-appeal-pipeline
      description: Orchestrates content moderation appeal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/content
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/content
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/content
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → content-moderation-appeal-pipeline.yml

Fetches a podcast episode transcript, sends it to the Google Cloud Natural Language API for toxicity analysis, and if flagged, creates a JIRA ticket for the trust and safety team.

naftiko: '0.5'
info:
  label: Content Moderation Pipeline
  description: Fetches a podcast episode transcript, sends it to the Google Cloud Natural Language API for toxicity analysis, and if flagged, creates a JIRA ticket for the trust and safety team.
  tags:
  - content-management
  - google-cloud-platform
  - jira
  - trust-safety
  - podcasts
capability:
  exposes:
  - type: mcp
    namespace: content-moderation
    port: 8080
    tools:
    - name: moderate-episode
      description: Given a podcast episode ID, analyze its transcript for toxicity and create a JIRA ticket if policy violations are detected.
      inputParameters:
      - name: episode_id
        in: body
        type: string
        description: The Spotify podcast episode ID.
      - name: jira_project
        in: body
        type: string
        description: The JIRA project key for trust and safety tickets.
      steps:
      - name: get-episode
        type: call
        call: spotify-api.get-episode
        with:
          episode_id: '{{episode_id}}'
      - name: analyze-content
        type: call
        call: gcp-nlp.analyze-sentiment
        with:
          content: '{{get-episode.description}}'
          type: PLAIN_TEXT
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: '{{jira_project}}'
          summary: 'Content review: {{get-episode.name}} ({{get-episode.show_name}})'
          description: 'Episode flagged with sentiment score: {{analyze-content.documentSentiment_score}}. Magnitude: {{analyze-content.documentSentiment_magnitude}}. Review required.'
          issue_type: Task
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: episodes
      path: /episodes/{{episode_id}}
      inputParameters:
      - name: episode_id
        in: path
      operations:
      - name: get-episode
        method: GET
  - type: http
    namespace: gcp-nlp
    baseUri: https://language.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: documents
      path: /documents:analyzeSentiment
      operations:
      - name: analyze-sentiment
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/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 → content-moderation-pipeline.yml

Runs a SonarQube quality gate check for a Spotify project, fetches the GitHub PR context, and posts the quality report as a PR comment and to the engineering Slack channel.

naftiko: '0.5'
info:
  label: Automated Code Quality Gate
  description: Runs a SonarQube quality gate check for a Spotify project, fetches the GitHub PR context, and posts the quality report as a PR comment and to the engineering Slack channel.
  tags:
  - platform-engineering
  - sonarqube
  - github
  - slack
  - code-quality
capability:
  exposes:
  - type: mcp
    namespace: code-quality
    port: 8080
    tools:
    - name: check-quality-gate
      description: Given a SonarQube project key and GitHub PR, run the quality gate and post results as a PR comment and Slack message.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The SonarQube project key.
      - name: repo
        in: body
        type: string
        description: The GitHub repository (org/repo format).
      - name: pr_number
        in: body
        type: string
        description: The GitHub pull request number.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for quality reports.
      steps:
      - name: get-quality-gate
        type: call
        call: sonarqube.get-quality-gate
        with:
          project_key: '{{project_key}}'
      - name: post-pr-comment
        type: call
        call: github.create-comment
        with:
          repo: '{{repo}}'
          pr_number: '{{pr_number}}'
          body: 'SonarQube Quality Gate: {{get-quality-gate.projectStatus_status}}

            Bugs: {{get-quality-gate.projectStatus_conditions_bugs}}

            Vulnerabilities: {{get-quality-gate.projectStatus_conditions_vulnerabilities}}

            Code Smells: {{get-quality-gate.projectStatus_conditions_code_smells}}

            Coverage: {{get-quality-gate.projectStatus_conditions_coverage}}%'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Quality Gate for *{{project_key}}* (PR #{{pr_number}}): {{get-quality-gate.projectStatus_status}}'
  consumes:
  - type: http
    namespace: sonarqube
    baseUri: https://sonarqube.spotify.net/api
    authentication:
      type: basic
      username: $secrets.sonarqube_token
      password: ''
    resources:
    - name: quality-gates
      path: /qualitygates/project_status
      inputParameters:
      - name: project_key
        in: query
      operations:
      - name: get-quality-gate
        method: GET
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pr-comments
      path: /repos/{{repo}}/issues/{{pr_number}}/comments
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: create-comment
        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-code-quality-gate.yml

Orchestrates podcast transcript search pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Podcast Transcript Search Pipeline
  description: Orchestrates podcast transcript search pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - podcast
  - spotify
  - grafana
  - spotify
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: podcast
    port: 8080
    tools:
    - name: podcast-transcript-search-pipeline
      description: Orchestrates podcast transcript search pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: grafana.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: spotify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/podcast
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/podcast
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/podcast
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → podcast-transcript-search-pipeline.yml

Orchestrates artist marketing toolkit pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Marketing Toolkit Pipeline
  description: Orchestrates artist marketing toolkit pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - datadog
  - github
  - google-bigquery
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-marketing-toolkit-pipeline
      description: Orchestrates artist marketing toolkit pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: google-bigquery.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/artist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-marketing-toolkit-pipeline.yml

Orchestrates user growth experiment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Growth Experiment Pipeline
  description: Orchestrates user growth experiment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - datadog
  - github
  - google-bigquery
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-growth-experiment-pipeline
      description: Orchestrates user growth experiment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: google-bigquery.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/user
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-growth-experiment-pipeline.yml

Creates or updates a feature flag in the internal feature flag service, triggers a Backstage annotation update, and notifies the product team on Slack with rollout details.

naftiko: '0.5'
info:
  label: Feature Flag Rollout Coordinator
  description: Creates or updates a feature flag in the internal feature flag service, triggers a Backstage annotation update, and notifies the product team on Slack with rollout details.
  tags:
  - platform-engineering
  - backstage
  - slack
  - feature-flags
  - experimentation
capability:
  exposes:
  - type: mcp
    namespace: feature-flags
    port: 8080
    tools:
    - name: rollout-feature-flag
      description: Given a flag name and rollout percentage, update the feature flag, annotate the Backstage component, and notify the product team.
      inputParameters:
      - name: flag_name
        in: body
        type: string
        description: The feature flag identifier.
      - name: rollout_percentage
        in: body
        type: number
        description: The rollout percentage (0-100).
      - name: component_name
        in: body
        type: string
        description: The Backstage component owning the flag.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for rollout notifications.
      steps:
      - name: update-flag
        type: call
        call: feature-flag-api.update-flag
        with:
          flag_name: '{{flag_name}}'
          rollout_percentage: '{{rollout_percentage}}'
      - name: annotate-component
        type: call
        call: backstage.update-annotation
        with:
          component_name: '{{component_name}}'
          annotation_key: spotify.com/feature-flag-{{flag_name}}
          annotation_value: '{{rollout_percentage}}%'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Feature Flag Rollout: *{{flag_name}}*

            Component: {{component_name}}

            Rollout: {{rollout_percentage}}%

            Updated at: {{update-flag.updated_at}}'
  consumes:
  - type: http
    namespace: feature-flag-api
    baseUri: https://feature-flags.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_ff_token
    resources:
    - name: flags
      path: /flags/{{flag_name}}
      inputParameters:
      - name: flag_name
        in: path
      operations:
      - name: update-flag
        method: PUT
  - type: http
    namespace: backstage
    baseUri: https://backstage.spotify.net/api/catalog
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: annotations
      path: /entities/by-name/component/default/{{component_name}}/annotations
      inputParameters:
      - name: component_name
        in: path
      operations:
      - name: update-annotation
        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 → feature-flag-rollout-coordinator.yml

Orchestrates audio loudness normalization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Audio Loudness Normalization Pipeline
  description: Orchestrates audio loudness normalization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - audio
  - spotify
  - spotify
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: audio
    port: 8080
    tools:
    - name: audio-loudness-normalization-pipeline
      description: Orchestrates audio loudness normalization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: spotify.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: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/audio
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/audio
      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/audio
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → audio-loudness-normalization-pipeline.yml

Retrieves get available genres data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Available Genres
  description: Retrieves get available genres data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - genres
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-available-genres
      description: Retrieves get available genres data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-available-genres
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/available/genres/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-available-genres
        method: GET
Open in Framework → View in Fleet → get-available-genres.yml

Fetches a Spotify playlist by ID including name, description, owner, follower count, and track listing for editorial or curation review.

naftiko: '0.5'
info:
  label: Get Playlist Details
  description: Fetches a Spotify playlist by ID including name, description, owner, follower count, and track listing for editorial or curation review.
  tags:
  - content-management
  - spotify-web-api
  - playlists
capability:
  exposes:
  - type: mcp
    namespace: content-playlists
    port: 8080
    tools:
    - name: get-playlist
      description: Retrieve a playlist by ID with name, description, owner, follower count, and tracks.
      inputParameters:
      - name: playlist_id
        in: body
        type: string
        description: The Spotify playlist ID.
      call: spotify-api.get-playlist
      with:
        playlist_id: '{{playlist_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: description
        type: string
        mapping: $.description
      - name: owner
        type: string
        mapping: $.owner.display_name
      - name: followers
        type: number
        mapping: $.followers.total
      - name: total_tracks
        type: number
        mapping: $.tracks.total
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: playlists
      path: /playlists/{{playlist_id}}
      inputParameters:
      - name: playlist_id
        in: path
      operations:
      - name: get-playlist
        method: GET
Open in Framework → View in Fleet → get-playlist-details.yml

Orchestrates audio fingerprinting pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Audio Fingerprinting Pipeline
  description: Orchestrates audio fingerprinting pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - audio
  - spotify
  - github
  - google-bigquery
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: audio
    port: 8080
    tools:
    - name: audio-fingerprinting-pipeline
      description: Orchestrates audio fingerprinting pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: google-bigquery.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/audio
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/audio
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/audio
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → audio-fingerprinting-pipeline.yml

Retrieves get episode chapters data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Episode Chapters
  description: Retrieves get episode chapters data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - chapters
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-episode-chapters
      description: Retrieves get episode chapters data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-episode-chapters
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/episode/chapters/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-episode-chapters
        method: GET
Open in Framework → View in Fleet → get-episode-chapters.yml

Orchestrates content curation quality pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Content Curation Quality Pipeline
  description: Orchestrates content curation quality pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - content
  - spotify
  - confluence
  - grafana
  - spotify
capability:
  exposes:
  - type: mcp
    namespace: content
    port: 8080
    tools:
    - name: content-curation-quality-pipeline
      description: Orchestrates content curation quality pipeline across music streaming systems, coordinating multiple 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: grafana.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: spotify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/content
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/content
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/content
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → content-curation-quality-pipeline.yml

Retrieves get show details data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Show Details
  description: Retrieves get show details data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - details
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-show-details
      description: Retrieves get show details data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-show-details
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/show/details/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-show-details
        method: GET
Open in Framework → View in Fleet → get-show-details.yml

When a new album is released, fetches album metadata from the Spotify Web API, creates a Backstage catalog entry for the release campaign, and sends a Slack notification to the editorial team.

naftiko: '0.5'
info:
  label: New Release Content Sync
  description: When a new album is released, fetches album metadata from the Spotify Web API, creates a Backstage catalog entry for the release campaign, and sends a Slack notification to the editorial team.
  tags:
  - content-management
  - spotify-web-api
  - backstage
  - slack
  - editorial
capability:
  exposes:
  - type: mcp
    namespace: content-releases
    port: 8080
    tools:
    - name: sync-new-release
      description: Given a Spotify album ID, fetch album metadata, register a Backstage catalog entity for the release campaign, and notify the editorial Slack channel.
      inputParameters:
      - name: album_id
        in: body
        type: string
        description: The Spotify album ID for the new release.
      - name: editorial_channel
        in: body
        type: string
        description: The Slack channel ID for editorial notifications.
      steps:
      - name: fetch-album
        type: call
        call: spotify-api.get-album
        with:
          album_id: '{{album_id}}'
      - name: register-campaign
        type: call
        call: backstage.register-entity
        with:
          kind: Component
          name: release-{{album_id}}
          description: Release campaign for {{fetch-album.name}} by {{fetch-album.artists_0_name}}
          owner: editorial-team
      - name: notify-editorial
        type: call
        call: slack.post-message
        with:
          channel: '{{editorial_channel}}'
          text: 'New release registered: *{{fetch-album.name}}* by {{fetch-album.artists_0_name}} ({{fetch-album.total_tracks}} tracks, {{fetch-album.release_date}}). Backstage entry: {{register-campaign.metadata_uid}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: albums
      path: /albums/{{album_id}}
      inputParameters:
      - name: album_id
        in: path
      operations:
      - name: get-album
        method: GET
  - type: http
    namespace: backstage
    baseUri: https://backstage.spotify.net/api/catalog
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: entities
      path: /entities
      operations:
      - name: register-entity
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-release-content-sync.yml

Pulls ad impression and click data from the internal ad server, cross-references with Google Ads billing, reconciles discrepancies in BigQuery, and sends a variance report to the finance Slack channel.

naftiko: '0.5'
info:
  label: Advertising Revenue Reconciliation
  description: Pulls ad impression and click data from the internal ad server, cross-references with Google Ads billing, reconciles discrepancies in BigQuery, and sends a variance report to the finance Slack channel.
  tags:
  - advertising
  - google-ads
  - google-cloud-platform
  - slack
  - finance
capability:
  exposes:
  - type: mcp
    namespace: ad-revenue-recon
    port: 8080
    tools:
    - name: reconcile-ad-revenue
      description: Given a date range and advertiser account, reconcile internal ad data with Google Ads billing and report variances.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date for reconciliation (YYYY-MM-DD).
      - name: end_date
        in: body
        type: string
        description: End date for reconciliation (YYYY-MM-DD).
      - name: customer_id
        in: body
        type: string
        description: The Google Ads customer ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for finance reports.
      steps:
      - name: get-internal-data
        type: call
        call: ad-server.get-revenue-report
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-google-billing
        type: call
        call: google-ads.get-billing
        with:
          customer_id: '{{customer_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: store-reconciliation
        type: call
        call: bigquery.insert-rows
        with:
          dataset_id: finance_ops
          table_id: ad_reconciliation
          rows: '{"period":"{{start_date}}_{{end_date}}","internal_revenue":{{get-internal-data.total_revenue}},"google_billed":{{get-google-billing.total_cost}}}'
      - name: post-report
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Ad Revenue Reconciliation ({{start_date}} to {{end_date}}):

            Internal Revenue: ${{get-internal-data.total_revenue}}

            Google Ads Billed: ${{get-google-billing.total_cost}}

            Variance: ${{get-internal-data.total_revenue}} - ${{get-google-billing.total_cost}}'
  consumes:
  - type: http
    namespace: ad-server
    baseUri: https://ad-server.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_adserver_token
    resources:
    - name: revenue-reports
      path: /reports/revenue
      inputParameters:
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-revenue-report
        method: GET
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v16/customers
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    inputParameters:
    - name: developer-token
      in: header
      value: $secrets.google_ads_developer_token
    resources:
    - name: billing
      path: /{{customer_id}}/billingSetup
      inputParameters:
      - name: customer_id
        in: path
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-billing
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: tabledata
      path: /projects/spotify-analytics/datasets/{{dataset_id}}/tables/{{table_id}}/insertAll
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_id
        in: path
      operations:
      - name: insert-rows
        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 → advertising-revenue-reconciliation.yml

Retrieves get new releases data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get New Releases
  description: Retrieves get new releases data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - releases
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-new-releases
      description: Retrieves get new releases data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-new-releases
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/new/releases/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-new-releases
        method: GET
Open in Framework → View in Fleet → get-new-releases.yml

Orchestrates artist analytics dashboard pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Analytics Dashboard Pipeline
  description: Orchestrates artist analytics dashboard pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - confluence
  - grafana
  - spotify
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-analytics-dashboard-pipeline
      description: Orchestrates artist analytics dashboard pipeline across music streaming systems, coordinating multiple 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: grafana.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: spotify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/artist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-analytics-dashboard-pipeline.yml

Retrieves get featured playlists data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Featured Playlists
  description: Retrieves get featured playlists data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - playlists
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-featured-playlists
      description: Retrieves get featured playlists data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-featured-playlists
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/featured/playlists/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-featured-playlists
        method: GET
Open in Framework → View in Fleet → get-featured-playlists.yml

Pulls an artist's latest album from Spotify, fetches stream counts from the Spotify for Artists API, queries BigQuery for revenue data, and sends a consolidated performance report to Slack.

naftiko: '0.5'
info:
  label: Artist Release Performance Report
  description: Pulls an artist's latest album from Spotify, fetches stream counts from the Spotify for Artists API, queries BigQuery for revenue data, and sends a consolidated performance report to Slack.
  tags:
  - creator-tools
  - spotify-web-api
  - spotify-for-artists
  - google-cloud-platform
  - slack
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: creator-reporting
    port: 8080
    tools:
    - name: generate-release-report
      description: Given an artist ID and Slack channel, compile a performance report for the artist's latest album with streaming and revenue data.
      inputParameters:
      - name: artist_id
        in: body
        type: string
        description: The Spotify artist ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for report delivery.
      steps:
      - name: get-artist
        type: call
        call: spotify-api.get-artist
        with:
          artist_id: '{{artist_id}}'
      - name: get-albums
        type: call
        call: spotify-api.get-artist-albums
        with:
          artist_id: '{{artist_id}}'
      - name: get-streams
        type: call
        call: s4a-api.get-album-stats
        with:
          album_uri: '{{get-albums.items_0_uri}}'
      - name: get-revenue
        type: call
        call: bigquery.run-query
        with:
          query: SELECT SUM(revenue) as total_revenue FROM spotify_analytics.royalties WHERE album_uri='{{get-albums.items_0_uri}}'
      - name: send-report
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Release Report: *{{get-artist.name}}* - {{get-albums.items_0_name}}

            Streams: {{get-streams.total_streams}}

            Listeners: {{get-streams.unique_listeners}}

            Revenue: ${{get-revenue.total_revenue}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: artists
      path: /artists/{{artist_id}}
      inputParameters:
      - name: artist_id
        in: path
      operations:
      - name: get-artist
        method: GET
    - name: artist-albums
      path: /artists/{{artist_id}}/albums
      inputParameters:
      - name: artist_id
        in: path
      operations:
      - name: get-artist-albums
        method: GET
  - type: http
    namespace: s4a-api
    baseUri: https://provider-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_s4a_token
    resources:
    - name: album-stats
      path: /analytics/albums/{{album_uri}}
      inputParameters:
      - name: album_uri
        in: path
      operations:
      - name: get-album-stats
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → artist-release-performance-report.yml

Marks a Backstage component as deprecated, creates a JIRA epic for migration tracking, sends notifications to dependent teams via Slack, and updates the Terraform configuration to remove associated infrastructure.

naftiko: '0.5'
info:
  label: Service Deprecation Coordinator
  description: Marks a Backstage component as deprecated, creates a JIRA epic for migration tracking, sends notifications to dependent teams via Slack, and updates the Terraform configuration to remove associated infrastructure.
  tags:
  - platform-engineering
  - backstage
  - jira
  - slack
  - terraform
  - service-lifecycle
capability:
  exposes:
  - type: mcp
    namespace: service-lifecycle
    port: 8080
    tools:
    - name: deprecate-service
      description: Given a Backstage component name, mark it deprecated, create a JIRA migration epic, notify dependent teams, and flag infrastructure for removal.
      inputParameters:
      - name: component_name
        in: body
        type: string
        description: The Backstage component name to deprecate.
      - name: migration_deadline
        in: body
        type: string
        description: Deadline for dependent teams to migrate (YYYY-MM-DD).
      - name: replacement_service
        in: body
        type: string
        description: The replacement service name.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for deprecation announcements.
      steps:
      - name: update-lifecycle
        type: call
        call: backstage.update-annotation
        with:
          component_name: '{{component_name}}'
          annotation_key: backstage.io/lifecycle
          annotation_value: deprecated
      - name: create-epic
        type: call
        call: jira.create-issue
        with:
          project_key: PLATFORM
          summary: 'Migration: {{component_name}} -> {{replacement_service}}'
          description: '{{component_name}} is deprecated. All dependent services must migrate to {{replacement_service}} by {{migration_deadline}}.'
          issue_type: Epic
      - name: announce-deprecation
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Service Deprecation Notice: *{{component_name}}* is now deprecated.

            Replacement: {{replacement_service}}

            Migration Deadline: {{migration_deadline}}

            Tracking Epic: {{create-epic.key}}

            Please plan your migration accordingly.'
  consumes:
  - type: http
    namespace: backstage
    baseUri: https://backstage.spotify.net/api/catalog
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: annotations
      path: /entities/by-name/component/default/{{component_name}}/annotations
      inputParameters:
      - name: component_name
        in: path
      operations:
      - name: update-annotation
        method: PATCH
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: 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 → service-deprecation-coordinator.yml

Takes an ad insertion order, validates the advertiser in the CRM, schedules ad slots via the podcast ad server, and confirms the booking to the sales team on Slack.

naftiko: '0.5'
info:
  label: Podcast Ad Insertion Order Processing
  description: Takes an ad insertion order, validates the advertiser in the CRM, schedules ad slots via the podcast ad server, and confirms the booking to the sales team on Slack.
  tags:
  - advertising
  - salesforce
  - slack
  - podcasts
  - ad-insertion
capability:
  exposes:
  - type: mcp
    namespace: podcast-ads
    port: 8080
    tools:
    - name: process-insertion-order
      description: Given an advertiser account ID and campaign details, validate the advertiser, schedule ad slots, and confirm on Slack.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID for the advertiser.
      - name: show_uri
        in: body
        type: string
        description: The Spotify show URI for ad placement.
      - name: impressions_target
        in: body
        type: number
        description: Target impression count.
      - name: start_date
        in: body
        type: string
        description: Campaign start date (YYYY-MM-DD).
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for sales confirmations.
      steps:
      - name: get-advertiser
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: schedule-ads
        type: call
        call: ad-server.create-order
        with:
          show_uri: '{{show_uri}}'
          impressions: '{{impressions_target}}'
          start_date: '{{start_date}}'
          advertiser_name: '{{get-advertiser.Name}}'
      - name: confirm-booking
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Ad Insertion Order Confirmed:

            Advertiser: {{get-advertiser.Name}}

            Show: {{show_uri}}

            Impressions: {{impressions_target}}

            Start: {{start_date}}

            Order ID: {{schedule-ads.order_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://spotify.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: ad-server
    baseUri: https://ad-server.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_adserver_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: create-order
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → podcast-ad-insertion-order-processing.yml

Orchestrates user family plan management pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Family Plan Management Pipeline
  description: Orchestrates user family plan management pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - jira
  - datadog
  - github
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-family-plan-management-pipeline
      description: Orchestrates user family plan management pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/user
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-family-plan-management-pipeline.yml

Orchestrates music rights ingestion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Music Rights Ingestion Pipeline
  description: Orchestrates music rights ingestion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - music
  - spotify
  - jira
  - datadog
  - github
capability:
  exposes:
  - type: mcp
    namespace: music
    port: 8080
    tools:
    - name: music-rights-ingestion-pipeline
      description: Orchestrates music rights ingestion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/music
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/music
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/music
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → music-rights-ingestion-pipeline.yml

Retrieves a user's recently played tracks from the Spotify Web API, enriches each track with audio features, and exports the dataset to a Google Cloud Storage bucket for analytics.

naftiko: '0.5'
info:
  label: User Listening History Export
  description: Retrieves a user's recently played tracks from the Spotify Web API, enriches each track with audio features, and exports the dataset to a Google Cloud Storage bucket for analytics.
  tags:
  - data-platform
  - spotify-web-api
  - google-cloud-platform
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: data-export
    port: 8080
    tools:
    - name: export-listening-history
      description: Given a user ID, fetch recently played tracks, enrich with audio features, and export to GCS.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The Spotify user ID.
      - name: gcs_bucket
        in: body
        type: string
        description: The GCS bucket name for export.
      steps:
      - name: get-recent
        type: call
        call: spotify-api.get-recently-played
        with:
          limit: '50'
      - name: get-features
        type: call
        call: spotify-api.get-several-audio-features
        with:
          ids: '{{get-recent.items_track_ids}}'
      - name: upload-export
        type: call
        call: gcs.upload-object
        with:
          bucket: '{{gcs_bucket}}'
          object_name: listening-history/{{user_id}}/export.json
          body: '{"tracks":{{get-recent.items}},"features":{{get-features.audio_features}}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: recently-played
      path: /me/player/recently-played
      inputParameters:
      - name: limit
        in: query
      operations:
      - name: get-recently-played
        method: GET
    - name: audio-features
      path: /audio-features
      inputParameters:
      - name: ids
        in: query
      operations:
      - name: get-several-audio-features
        method: GET
  - type: http
    namespace: gcs
    baseUri: https://storage.googleapis.com/upload/storage/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: objects
      path: /b/{{bucket}}/o
      inputParameters:
      - name: bucket
        in: path
      - name: object_name
        in: query
      operations:
      - name: upload-object
        method: POST
Open in Framework → View in Fleet → user-listening-history-export.yml

Scans a batch of track ISRCs against the internal licensing database, cross-references with public rights registries, identifies gaps, and generates a JIRA ticket for the licensing team with a compliance summary.

naftiko: '0.5'
info:
  label: Content Licensing Compliance Audit
  description: Scans a batch of track ISRCs against the internal licensing database, cross-references with public rights registries, identifies gaps, and generates a JIRA ticket for the licensing team with a compliance summary.
  tags:
  - content-management
  - jira
  - legal
  - rights-management
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: licensing-audit
    port: 8080
    tools:
    - name: audit-licensing-compliance
      description: Given a list of ISRCs, check licensing status and create a JIRA ticket for any gaps found.
      inputParameters:
      - name: isrc_list
        in: body
        type: string
        description: Comma-separated list of ISRC codes to audit.
      - name: market
        in: body
        type: string
        description: The market/country code to check licensing for.
      steps:
      - name: check-licenses
        type: call
        call: licensing-api.batch-check
        with:
          isrcs: '{{isrc_list}}'
          market: '{{market}}'
      - name: create-audit-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: LICENSING
          summary: 'Compliance Audit: {{market}} - {{check-licenses.gap_count}} gaps found'
          description: 'Audited ISRCs: {{isrc_list}}

            Market: {{market}}

            Licensed: {{check-licenses.licensed_count}}

            Gaps: {{check-licenses.gap_count}}

            Expiring Soon: {{check-licenses.expiring_count}}

            Details: {{check-licenses.gap_details}}'
          issue_type: Task
  consumes:
  - type: http
    namespace: licensing-api
    baseUri: https://licensing-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_licensing_token
    resources:
    - name: batch-check
      path: /rights/batch-check
      operations:
      - name: batch-check
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/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 → content-licensing-compliance-audit.yml

Creates a self-serve audio ad campaign in Spotify Ad Studio, uploads the creative asset to Google Cloud Storage, and notifies the advertising ops team on Slack.

naftiko: '0.5'
info:
  label: Spotify Ad Studio Campaign Creation
  description: Creates a self-serve audio ad campaign in Spotify Ad Studio, uploads the creative asset to Google Cloud Storage, and notifies the advertising ops team on Slack.
  tags:
  - advertising
  - spotify-ad-studio
  - google-cloud-platform
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ad-campaign-mgmt
    port: 8080
    tools:
    - name: create-ad-campaign
      description: Given campaign details, creative asset URL, and target demographics, create an Ad Studio campaign, stage the creative in GCS, and notify ops.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The ad campaign name.
      - name: creative_url
        in: body
        type: string
        description: URL of the audio creative asset.
      - name: target_age_min
        in: body
        type: number
        description: Minimum target age.
      - name: target_age_max
        in: body
        type: number
        description: Maximum target age.
      - name: budget_usd
        in: body
        type: number
        description: Campaign budget in USD.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for campaign notifications.
      steps:
      - name: upload-creative
        type: call
        call: gcs.upload-object
        with:
          bucket: spotify-ad-creatives
          object_name: '{{campaign_name}}/creative.ogg'
          source_url: '{{creative_url}}'
      - name: create-campaign
        type: call
        call: ad-studio.create-campaign
        with:
          name: '{{campaign_name}}'
          creative_uri: '{{upload-creative.media_link}}'
          target_age_min: '{{target_age_min}}'
          target_age_max: '{{target_age_max}}'
          budget: '{{budget_usd}}'
      - name: notify-ops
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Ad Campaign Created: *{{campaign_name}}*

            Budget: ${{budget_usd}}

            Target: {{target_age_min}}-{{target_age_max}}

            Campaign ID: {{create-campaign.campaign_id}}

            Creative: {{upload-creative.media_link}}'
  consumes:
  - type: http
    namespace: gcs
    baseUri: https://storage.googleapis.com/upload/storage/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: objects
      path: /b/{{bucket}}/o
      inputParameters:
      - name: bucket
        in: path
      - name: object_name
        in: query
      operations:
      - name: upload-object
        method: POST
  - type: http
    namespace: ad-studio
    baseUri: https://adstudio-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_adstudio_token
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: create-campaign
        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 → spotify-ad-studio-campaign-creation.yml

Triggers a recommendation model training job on Google Cloud Vertex AI, monitors the run, and posts training completion status with metrics to the ML team's Slack channel.

naftiko: '0.5'
info:
  label: ML Model Training Pipeline Trigger
  description: Triggers a recommendation model training job on Google Cloud Vertex AI, monitors the run, and posts training completion status with metrics to the ML team's Slack channel.
  tags:
  - machine-learning
  - google-cloud-platform
  - slack
  - recommendation
capability:
  exposes:
  - type: mcp
    namespace: ml-training
    port: 8080
    tools:
    - name: trigger-model-training
      description: Given a training pipeline ID and Slack channel, launch a Vertex AI training run and notify the team upon completion.
      inputParameters:
      - name: pipeline_id
        in: body
        type: string
        description: The Vertex AI training pipeline ID.
      - name: model_name
        in: body
        type: string
        description: The model display name for the training run.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for training notifications.
      steps:
      - name: start-training
        type: call
        call: vertex-ai.create-training-job
        with:
          pipeline_id: '{{pipeline_id}}'
          display_name: '{{model_name}}'
      - name: get-job-status
        type: call
        call: vertex-ai.get-training-job
        with:
          job_id: '{{start-training.name}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'ML Training Complete: *{{model_name}}*

            Pipeline: {{pipeline_id}}

            Status: {{get-job-status.state}}

            Model Artifact: {{get-job-status.modelToUpload_artifactUri}}'
  consumes:
  - type: http
    namespace: vertex-ai
    baseUri: https://us-central1-aiplatform.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: training-pipelines
      path: /projects/spotify-ml/locations/us-central1/trainingPipelines
      operations:
      - name: create-training-job
        method: POST
    - name: training-jobs
      path: /projects/spotify-ml/locations/us-central1/trainingPipelines/{{job_id}}
      inputParameters:
      - name: job_id
        in: path
      operations:
      - name: get-training-job
        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 → ml-model-training-pipeline-trigger.yml

Orchestrates user churn intervention pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Churn Intervention Pipeline
  description: Orchestrates user churn intervention pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-churn-intervention-pipeline
      description: Orchestrates user churn intervention pipeline across music streaming systems, coordinating multiple 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://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/user
      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/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-churn-intervention-pipeline.yml

Orchestrates music catalog dedup pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Music Catalog Dedup Pipeline
  description: Orchestrates music catalog dedup pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - music
  - spotify
  - spotify
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: music
    port: 8080
    tools:
    - name: music-catalog-dedup-pipeline
      description: Orchestrates music catalog dedup pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: spotify.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: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/music
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/music
      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/music
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → music-catalog-dedup-pipeline.yml

Orchestrates playlist editorial curation pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Playlist Editorial Curation Pipeline
  description: Orchestrates playlist editorial curation pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - playlist
  - spotify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: playlist
    port: 8080
    tools:
    - name: playlist-editorial-curation-pipeline
      description: Orchestrates playlist editorial curation pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/playlist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/playlist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/playlist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → playlist-editorial-curation-pipeline.yml

Orchestrates podcast discovery pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Podcast Discovery Pipeline
  description: Orchestrates podcast discovery pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - podcast
  - spotify
  - github
  - google-bigquery
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: podcast
    port: 8080
    tools:
    - name: podcast-discovery-pipeline
      description: Orchestrates podcast discovery pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: google-bigquery.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/podcast
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/podcast
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/podcast
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → podcast-discovery-pipeline.yml

Retrieves get audiobook details data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Audiobook Details
  description: Retrieves get audiobook details data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - details
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-audiobook-details
      description: Retrieves get audiobook details data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-audiobook-details
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/audiobook/details/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-audiobook-details
        method: GET
Open in Framework → View in Fleet → get-audiobook-details.yml

Looks up a Spotify artist by ID returning name, genres, follower count, and popularity index for creator analytics dashboards.

naftiko: '0.5'
info:
  label: Get Artist Profile
  description: Looks up a Spotify artist by ID returning name, genres, follower count, and popularity index for creator analytics dashboards.
  tags:
  - creator-tools
  - spotify-web-api
  - artists
capability:
  exposes:
  - type: mcp
    namespace: creator-analytics
    port: 8080
    tools:
    - name: get-artist
      description: Retrieve an artist profile by ID with name, genres, followers, and popularity.
      inputParameters:
      - name: artist_id
        in: body
        type: string
        description: The Spotify artist ID.
      call: spotify-api.get-artist
      with:
        artist_id: '{{artist_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: genres
        type: string
        mapping: $.genres
      - name: followers
        type: number
        mapping: $.followers.total
      - name: popularity
        type: number
        mapping: $.popularity
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: artists
      path: /artists/{{artist_id}}
      inputParameters:
      - name: artist_id
        in: path
      operations:
      - name: get-artist
        method: GET
Open in Framework → View in Fleet → get-artist-profile.yml

Performs a free-text search across the Spotify catalog for tracks, artists, albums, or playlists. Used by editorial and content teams to discover and verify catalog entries.

naftiko: '0.5'
info:
  label: Search Content Catalog
  description: Performs a free-text search across the Spotify catalog for tracks, artists, albums, or playlists. Used by editorial and content teams to discover and verify catalog entries.
  tags:
  - content-management
  - spotify-web-api
  - search
capability:
  exposes:
  - type: mcp
    namespace: content-search
    port: 8080
    tools:
    - name: search-catalog
      description: Search the Spotify catalog by query and type (track, artist, album, playlist). Returns top results.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search query string.
      - name: content_type
        in: body
        type: string
        description: 'The type of content to search: track, artist, album, or playlist.'
      call: spotify-api.search
      with:
        q: '{{query}}'
        type: '{{content_type}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: search
      path: /search
      inputParameters:
      - name: q
        in: query
      - name: type
        in: query
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → search-content-catalog.yml

Extracts audio features from the Spotify Web API for a batch of tracks, transforms them, and writes the feature vectors to a BigQuery feature store table for the recommendation ML pipeline.

naftiko: '0.5'
info:
  label: Recommendation Feature Store Update
  description: Extracts audio features from the Spotify Web API for a batch of tracks, transforms them, and writes the feature vectors to a BigQuery feature store table for the recommendation ML pipeline.
  tags:
  - machine-learning
  - spotify-web-api
  - google-cloud-platform
  - recommendation
  - data-pipeline
capability:
  exposes:
  - type: mcp
    namespace: ml-features
    port: 8080
    tools:
    - name: update-feature-store
      description: Given a list of track IDs, fetch audio features from Spotify and upsert them into the BigQuery feature store.
      inputParameters:
      - name: track_ids
        in: body
        type: string
        description: Comma-separated list of Spotify track IDs.
      - name: dataset_id
        in: body
        type: string
        description: The BigQuery dataset ID for the feature store.
      steps:
      - name: get-features
        type: call
        call: spotify-api.get-several-audio-features
        with:
          ids: '{{track_ids}}'
      - name: insert-features
        type: call
        call: bigquery.insert-rows
        with:
          dataset_id: '{{dataset_id}}'
          table_id: audio_features
          rows: '{{get-features.audio_features}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: audio-features
      path: /audio-features
      inputParameters:
      - name: ids
        in: query
      operations:
      - name: get-several-audio-features
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: tabledata
      path: /projects/spotify-ml/datasets/{{dataset_id}}/tables/{{table_id}}/insertAll
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_id
        in: path
      operations:
      - name: insert-rows
        method: POST
Open in Framework → View in Fleet → recommendation-feature-store-update.yml

Fetches the current on-call rotation from PagerDuty and posts a daily summary to the platform engineering Slack channel with the active responders and escalation policy.

naftiko: '0.5'
info:
  label: On-Call Rotation Sync
  description: Fetches the current on-call rotation from PagerDuty and posts a daily summary to the platform engineering Slack channel with the active responders and escalation policy.
  tags:
  - platform-engineering
  - pagerduty
  - slack
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: oncall-mgmt
    port: 8080
    tools:
    - name: sync-oncall-rotation
      description: Given a PagerDuty schedule ID and Slack channel, fetch the current on-call and post a summary.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: The PagerDuty schedule ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for on-call updates.
      steps:
      - name: get-oncall
        type: call
        call: pagerduty.get-oncall
        with:
          schedule_id: '{{schedule_id}}'
      - name: post-rotation
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'On-Call Rotation Update:

            Current Primary: {{get-oncall.oncalls_0_user_summary}}

            Schedule: {{get-oncall.oncalls_0_schedule_summary}}

            Escalation: {{get-oncall.oncalls_0_escalation_policy_summary}}

            Shift Ends: {{get-oncall.oncalls_0_end}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: oncalls
      path: /oncalls
      inputParameters:
      - name: schedule_id
        in: query
      operations:
      - name: get-oncall
        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 → on-call-rotation-sync.yml

Retrieves metadata for a Spotify podcast episode by ID including title, show name, duration, release date, and description.

naftiko: '0.5'
info:
  label: Fetch Podcast Episode Details
  description: Retrieves metadata for a Spotify podcast episode by ID including title, show name, duration, release date, and description.
  tags:
  - content-management
  - spotify-web-api
  - podcasts
capability:
  exposes:
  - type: mcp
    namespace: content-podcasts
    port: 8080
    tools:
    - name: get-episode
      description: Look up a podcast episode by ID returning title, show name, duration, release date, and description.
      inputParameters:
      - name: episode_id
        in: body
        type: string
        description: The Spotify episode ID.
      call: spotify-api.get-episode
      with:
        episode_id: '{{episode_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: show_name
        type: string
        mapping: $.show.name
      - name: duration_ms
        type: number
        mapping: $.duration_ms
      - name: release_date
        type: string
        mapping: $.release_date
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: episodes
      path: /episodes/{{episode_id}}
      inputParameters:
      - name: episode_id
        in: path
      operations:
      - name: get-episode
        method: GET
Open in Framework → View in Fleet → fetch-podcast-episode-details.yml

Reads SLO definitions from Backstage, queries Datadog for current SLI metrics, and updates a Google Sheets dashboard with compliance status for platform engineering review.

naftiko: '0.5'
info:
  label: Microservice SLO Dashboard Sync
  description: Reads SLO definitions from Backstage, queries Datadog for current SLI metrics, and updates a Google Sheets dashboard with compliance status for platform engineering review.
  tags:
  - platform-engineering
  - backstage
  - datadog
  - google-sheets
  - observability
capability:
  exposes:
  - type: mcp
    namespace: slo-dashboard
    port: 8080
    tools:
    - name: sync-slo-dashboard
      description: Given a Backstage component name and Google Sheet ID, pull SLO definitions, measure SLIs from Datadog, and update the dashboard.
      inputParameters:
      - name: component_name
        in: body
        type: string
        description: The Backstage component name.
      - name: spreadsheet_id
        in: body
        type: string
        description: The Google Sheets spreadsheet ID.
      steps:
      - name: get-slo-config
        type: call
        call: backstage.get-entity
        with:
          component_name: '{{component_name}}'
      - name: get-availability
        type: call
        call: datadog.query-slo
        with:
          slo_id: '{{get-slo-config.metadata_annotations_datadog_slo_id}}'
      - name: update-sheet
        type: call
        call: google-sheets.append-row
        with:
          spreadsheet_id: '{{spreadsheet_id}}'
          range: SLO Dashboard!A:F
          values: '{{component_name}},{{get-availability.overall_status_0_sli_value}},{{get-availability.overall_status_0_target}},{{get-availability.overall_status_0_timeframe}}'
  consumes:
  - type: http
    namespace: backstage
    baseUri: https://backstage.spotify.net/api/catalog
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: entities
      path: /entities/by-name/component/default/{{component_name}}
      inputParameters:
      - name: component_name
        in: path
      operations:
      - name: get-entity
        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
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: slos
      path: /slo/{{slo_id}}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: query-slo
        method: GET
  - 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}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → microservice-slo-dashboard-sync.yml

Orchestrates audio quality monitoring pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Audio Quality Monitoring Pipeline
  description: Orchestrates audio quality monitoring pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - audio
  - spotify
  - confluence
  - grafana
  - spotify
capability:
  exposes:
  - type: mcp
    namespace: audio
    port: 8080
    tools:
    - name: audio-quality-monitoring-pipeline
      description: Orchestrates audio quality monitoring pipeline across music streaming systems, coordinating multiple 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: grafana.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: spotify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/audio
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/audio
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/audio
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → audio-quality-monitoring-pipeline.yml

Queries the Backstage service catalog for a Spotify component by name, returning owner team, lifecycle phase, and system membership.

naftiko: '0.5'
info:
  label: Get Backstage Service Catalog Entry
  description: Queries the Backstage service catalog for a Spotify component by name, returning owner team, lifecycle phase, and system membership.
  tags:
  - platform-engineering
  - backstage
  - developer-experience
capability:
  exposes:
  - type: mcp
    namespace: service-catalog
    port: 8080
    tools:
    - name: get-component
      description: Look up a Backstage catalog component by name. Returns owner, lifecycle, system, and description.
      inputParameters:
      - name: component_name
        in: body
        type: string
        description: The Backstage component name.
      call: backstage.get-entity
      with:
        component_name: '{{component_name}}'
      outputParameters:
      - name: owner
        type: string
        mapping: $.spec.owner
      - name: lifecycle
        type: string
        mapping: $.spec.lifecycle
      - name: system
        type: string
        mapping: $.spec.system
  consumes:
  - type: http
    namespace: backstage
    baseUri: https://backstage.spotify.net/api/catalog
    authentication:
      type: bearer
      token: $secrets.backstage_token
    resources:
    - name: entities
      path: /entities/by-name/component/default/{{component_name}}
      inputParameters:
      - name: component_name
        in: path
      operations:
      - name: get-entity
        method: GET
Open in Framework → View in Fleet → get-backstage-service-catalog-entry.yml

Retrieves get followed artists data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Followed Artists
  description: Retrieves get followed artists data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - artists
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-followed-artists
      description: Retrieves get followed artists data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-followed-artists
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/followed/artists/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-followed-artists
        method: GET
Open in Framework → View in Fleet → get-followed-artists.yml

Calculates royalty payments from BigQuery streaming data, cross-references with the licensing API for payment splits, generates a payment batch via the internal payments API, and notifies the finance team on Slack.

naftiko: '0.5'
info:
  label: Royalty Payment Processing Pipeline
  description: Calculates royalty payments from BigQuery streaming data, cross-references with the licensing API for payment splits, generates a payment batch via the internal payments API, and notifies the finance team on Slack.
  tags:
  - finance
  - google-cloud-platform
  - slack
  - rights-management
  - payments
capability:
  exposes:
  - type: mcp
    namespace: royalty-payments
    port: 8080
    tools:
    - name: process-royalty-batch
      description: Given a reporting period, calculate royalties from streaming data, determine splits, create a payment batch, and notify finance.
      inputParameters:
      - name: period_start
        in: body
        type: string
        description: Reporting period start date (YYYY-MM-DD).
      - name: period_end
        in: body
        type: string
        description: Reporting period end date (YYYY-MM-DD).
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for finance notifications.
      steps:
      - name: calculate-royalties
        type: call
        call: bigquery.run-query
        with:
          query: SELECT rights_holder_id, SUM(streams * per_stream_rate) as payment_amount FROM spotify_analytics.royalty_streams WHERE stream_date BETWEEN '{{period_start}}' AND '{{period_end}}' GROUP BY rights_holder_id
      - name: create-batch
        type: call
        call: payments-api.create-batch
        with:
          period_start: '{{period_start}}'
          period_end: '{{period_end}}'
          payment_data: '{{calculate-royalties}}'
      - name: notify-finance
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Royalty Payment Batch Created:

            Period: {{period_start}} to {{period_end}}

            Batch ID: {{create-batch.batch_id}}

            Total Payees: {{create-batch.payee_count}}

            Total Amount: ${{create-batch.total_amount}}'
  consumes:
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: payments-api
    baseUri: https://payments-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_payments_token
    resources:
    - name: batches
      path: /batches
      operations:
      - name: create-batch
        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 → royalty-payment-processing-pipeline.yml

Retrieves performance metrics for a Google Ads campaign used by Spotify's digital advertising team, including impressions, clicks, cost, and conversions.

naftiko: '0.5'
info:
  label: Fetch Google Ads Campaign Metrics
  description: Retrieves performance metrics for a Google Ads campaign used by Spotify's digital advertising team, including impressions, clicks, cost, and conversions.
  tags:
  - advertising
  - google-ads
  - marketing-analytics
capability:
  exposes:
  - type: mcp
    namespace: ad-analytics
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Fetch Google Ads campaign performance by customer ID and campaign ID. Returns impressions, clicks, cost, and conversions.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Google Ads customer ID.
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign ID.
      call: google-ads.get-campaign
      with:
        customer_id: '{{customer_id}}'
        campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v16/customers
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    inputParameters:
    - name: developer-token
      in: header
      value: $secrets.google_ads_developer_token
    resources:
    - name: campaigns
      path: /{{customer_id}}/campaigns/{{campaign_id}}
      inputParameters:
      - name: customer_id
        in: path
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
Open in Framework → View in Fleet → fetch-google-ads-campaign-metrics.yml

Queries Prometheus for Kubernetes cluster CPU and memory utilization, checks current replica counts via the Kubernetes API, and posts a scaling recommendation to the platform team on Slack.

naftiko: '0.5'
info:
  label: Kubernetes Cluster Scaling Report
  description: Queries Prometheus for Kubernetes cluster CPU and memory utilization, checks current replica counts via the Kubernetes API, and posts a scaling recommendation to the platform team on Slack.
  tags:
  - platform-engineering
  - prometheus
  - kubernetes
  - slack
  - autoscaling
capability:
  exposes:
  - type: mcp
    namespace: k8s-scaling
    port: 8080
    tools:
    - name: generate-scaling-report
      description: Given a Kubernetes namespace and deployment name, check resource utilization and post a scaling recommendation to Slack.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: The Kubernetes namespace.
      - name: deployment_name
        in: body
        type: string
        description: The Kubernetes deployment name.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for scaling reports.
      steps:
      - name: get-cpu
        type: call
        call: prometheus.query
        with:
          query: avg(rate(container_cpu_usage_seconds_total{namespace="{{namespace}}",pod=~"{{deployment_name}}.*"}[5m]))
      - name: get-memory
        type: call
        call: prometheus.query
        with:
          query: avg(container_memory_working_set_bytes{namespace="{{namespace}}",pod=~"{{deployment_name}}.*"})
      - name: get-replicas
        type: call
        call: k8s.get-deployment
        with:
          namespace: '{{namespace}}'
          deployment: '{{deployment_name}}'
      - name: post-report
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Scaling Report: *{{deployment_name}}* ({{namespace}})

            Current Replicas: {{get-replicas.spec_replicas}}

            Avg CPU: {{get-cpu.data_result_0_value_1}} cores

            Avg Memory: {{get-memory.data_result_0_value_1}} bytes

            Recommendation: Review if utilization exceeds 70%.'
  consumes:
  - type: http
    namespace: prometheus
    baseUri: https://prometheus.spotify.net/api/v1
    authentication:
      type: bearer
      token: $secrets.prometheus_token
    resources:
    - name: query
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: k8s
    baseUri: https://k8s-api.spotify.net/apis/apps/v1
    authentication:
      type: bearer
      token: $secrets.k8s_token
    resources:
    - name: deployments
      path: /namespaces/{{namespace}}/deployments/{{deployment}}
      inputParameters:
      - name: namespace
        in: path
      - name: deployment
        in: path
      operations:
      - name: get-deployment
        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 → kubernetes-cluster-scaling-report.yml

When a new podcast creator signs up, provisions their Spotify for Artists account, creates a JIRA onboarding ticket for the creator relations team, and sends a welcome email via SendGrid.

naftiko: '0.5'
info:
  label: Creator Onboarding Orchestrator
  description: When a new podcast creator signs up, provisions their Spotify for Artists account, creates a JIRA onboarding ticket for the creator relations team, and sends a welcome email via SendGrid.
  tags:
  - creator-tools
  - spotify-for-artists
  - jira
  - sendgrid
  - onboarding
capability:
  exposes:
  - type: mcp
    namespace: creator-onboarding
    port: 8080
    tools:
    - name: onboard-creator
      description: Given a creator's name and email, provision their Spotify for Artists profile, open a JIRA ticket, and send a welcome email.
      inputParameters:
      - name: creator_name
        in: body
        type: string
        description: The podcast creator's display name.
      - name: creator_email
        in: body
        type: string
        description: The creator's email address.
      - name: show_uri
        in: body
        type: string
        description: The Spotify show URI to link to the creator account.
      steps:
      - name: provision-account
        type: call
        call: s4a-api.provision-creator
        with:
          name: '{{creator_name}}'
          email: '{{creator_email}}'
          show_uri: '{{show_uri}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: CREATOR
          summary: 'Onboarding: {{creator_name}} ({{show_uri}})'
          description: 'New creator onboarded. S4A Account ID: {{provision-account.account_id}}. Ensure editorial review and feature flagging.'
          issue_type: Task
      - name: send-welcome
        type: call
        call: sendgrid.send-email
        with:
          to: '{{creator_email}}'
          subject: Welcome to Spotify for Artists, {{creator_name}}!
          body: Your Spotify for Artists account is ready. Track your show analytics at https://artists.spotify.com. Your onboarding ticket is {{create-ticket.key}}.
  consumes:
  - type: http
    namespace: s4a-api
    baseUri: https://provider-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_s4a_token
    resources:
    - name: creators
      path: /creators
      operations:
      - name: provision-creator
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → creator-onboarding-orchestrator.yml

Orchestrates artist tour promotion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Tour Promotion Pipeline
  description: Orchestrates artist tour promotion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - grafana
  - spotify
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-tour-promotion-pipeline
      description: Orchestrates artist tour promotion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: grafana.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: spotify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/artist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-tour-promotion-pipeline.yml

Runs a Terraform plan via the Terraform Cloud API for a Spotify infrastructure workspace, checks for drift, and posts the summary to the platform engineering Slack channel.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Drift Check
  description: Runs a Terraform plan via the Terraform Cloud API for a Spotify infrastructure workspace, checks for drift, and posts the summary to the platform engineering Slack channel.
  tags:
  - platform-engineering
  - terraform
  - slack
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infra-drift
    port: 8080
    tools:
    - name: check-terraform-drift
      description: Given a Terraform Cloud workspace ID, trigger a speculative plan and post drift summary to Slack.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Terraform Cloud workspace ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for drift alerts.
      steps:
      - name: create-run
        type: call
        call: terraform-cloud.create-run
        with:
          workspace_id: '{{workspace_id}}'
          is_destroy: 'false'
          message: Automated drift check
      - name: get-plan
        type: call
        call: terraform-cloud.get-plan
        with:
          run_id: '{{create-run.id}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Terraform Drift Check - Workspace: {{workspace_id}}

            Resources to add: {{get-plan.resource_additions}}

            Resources to change: {{get-plan.resource_changes}}

            Resources to destroy: {{get-plan.resource_destructions}}

            Status: {{get-plan.status}}'
  consumes:
  - type: http
    namespace: terraform-cloud
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_cloud_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
    - name: plans
      path: /runs/{{run_id}}/plan
      inputParameters:
      - name: run_id
        in: path
      operations:
      - name: get-plan
        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 → terraform-infrastructure-drift-check.yml

Queries Datadog for the current health status of a Spotify microservice by service tag, returning monitor state and alert counts for platform engineering triage.

naftiko: '0.5'
info:
  label: Check Datadog Service Health
  description: Queries Datadog for the current health status of a Spotify microservice by service tag, returning monitor state and alert counts for platform engineering triage.
  tags:
  - platform-engineering
  - datadog
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: platform-health
    port: 8080
    tools:
    - name: get-service-health
      description: Check the Datadog monitor status for a given Spotify service tag. Returns overall state and triggered alert count.
      inputParameters:
      - name: service_tag
        in: body
        type: string
        description: The Datadog service tag (e.g. service:playlist-service).
      call: datadog.query-monitors
      with:
        monitor_tags: '{{service_tag}}'
  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
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: monitors
      path: /monitor
      inputParameters:
      - name: monitor_tags
        in: query
      operations:
      - name: query-monitors
        method: GET
Open in Framework → View in Fleet → check-datadog-service-health.yml

Pulls experiment results from the internal experimentation platform, fetches segment metrics from BigQuery, and posts a statistical summary with recommendation to the data science Slack channel.

naftiko: '0.5'
info:
  label: A/B Test Experiment Analysis
  description: Pulls experiment results from the internal experimentation platform, fetches segment metrics from BigQuery, and posts a statistical summary with recommendation to the data science Slack channel.
  tags:
  - machine-learning
  - google-cloud-platform
  - slack
  - experimentation
  - data-science
capability:
  exposes:
  - type: mcp
    namespace: experimentation
    port: 8080
    tools:
    - name: analyze-experiment
      description: Given an experiment ID, pull results from the experimentation platform, enrich with BigQuery segment data, and post analysis to Slack.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The internal experiment ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for experiment results.
      steps:
      - name: get-experiment
        type: call
        call: experiment-api.get-results
        with:
          experiment_id: '{{experiment_id}}'
      - name: get-segments
        type: call
        call: bigquery.run-query
        with:
          query: SELECT segment, AVG(metric_value) as avg_metric, COUNT(*) as n FROM experiments.{{experiment_id}}_results GROUP BY segment
      - name: post-results
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Experiment {{experiment_id}} Results:

            Control: {{get-experiment.control_mean}} (n={{get-experiment.control_n}})

            Treatment: {{get-experiment.treatment_mean}} (n={{get-experiment.treatment_n}})

            P-value: {{get-experiment.p_value}}

            Recommendation: {{get-experiment.recommendation}}'
  consumes:
  - type: http
    namespace: experiment-api
    baseUri: https://experiment-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_experiment_token
    resources:
    - name: experiments
      path: /experiments/{{experiment_id}}/results
      inputParameters:
      - name: experiment_id
        in: path
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → a-b-test-experiment-analysis.yml

Queries the Spotify for Artists API for podcast listener demographics, enriches with geographic data from BigQuery, and delivers a formatted report to the creator's email via SendGrid.

naftiko: '0.5'
info:
  label: Podcast Audience Demographics Report
  description: Queries the Spotify for Artists API for podcast listener demographics, enriches with geographic data from BigQuery, and delivers a formatted report to the creator's email via SendGrid.
  tags:
  - creator-tools
  - spotify-for-artists
  - google-cloud-platform
  - sendgrid
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: podcast-demographics
    port: 8080
    tools:
    - name: generate-demographics-report
      description: Given a show URI and creator email, pull listener demographics, enrich with geo data, and email the report.
      inputParameters:
      - name: show_uri
        in: body
        type: string
        description: The Spotify show URI.
      - name: creator_email
        in: body
        type: string
        description: The podcast creator's email address.
      steps:
      - name: get-demographics
        type: call
        call: s4a-api.get-show-demographics
        with:
          show_uri: '{{show_uri}}'
      - name: get-geo-data
        type: call
        call: bigquery.run-query
        with:
          query: SELECT country, city, COUNT(*) as listeners FROM spotify_analytics.podcast_listeners WHERE show_uri='{{show_uri}}' GROUP BY country, city ORDER BY listeners DESC LIMIT 10
      - name: send-report
        type: call
        call: sendgrid.send-email
        with:
          to: '{{creator_email}}'
          subject: Your Podcast Audience Report
          body: 'Listener Demographics:

            Age 18-24: {{get-demographics.age_18_24_pct}}%

            Age 25-34: {{get-demographics.age_25_34_pct}}%

            Age 35-44: {{get-demographics.age_35_44_pct}}%

            Top Markets: {{get-geo-data}}'
  consumes:
  - type: http
    namespace: s4a-api
    baseUri: https://provider-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_s4a_token
    resources:
    - name: demographics
      path: /analytics/shows/{{show_uri}}/demographics
      inputParameters:
      - name: show_uri
        in: path
      operations:
      - name: get-show-demographics
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → podcast-audience-demographics-report.yml

Retrieves get album metadata data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Album Metadata
  description: Retrieves get album metadata data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - metadata
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-album-metadata
      description: Retrieves get album metadata data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-album-metadata
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/album/metadata/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-album-metadata
        method: GET
Open in Framework → View in Fleet → get-album-metadata.yml

Retrieves get player state data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Player State
  description: Retrieves get player state data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - state
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-player-state
      description: Retrieves get player state data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-player-state
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/player/state/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-player-state
        method: GET
Open in Framework → View in Fleet → get-player-state.yml

Fetches the status and review state of a GitHub pull request in a Spotify repository. Used by platform engineering to check CI/CD gate readiness.

naftiko: '0.5'
info:
  label: GitHub Pull Request Status
  description: Fetches the status and review state of a GitHub pull request in a Spotify repository. Used by platform engineering to check CI/CD gate readiness.
  tags:
  - platform-engineering
  - github
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: dev-workflow
    port: 8080
    tools:
    - name: get-pr-status
      description: Look up a GitHub pull request by repo and PR number. Returns title, state, mergeable status, and review decision.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The repository name (org/repo format).
      - name: pr_number
        in: body
        type: string
        description: The pull request number.
      call: github.get-pull
      with:
        repo: '{{repo}}'
        pr_number: '{{pr_number}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: state
        type: string
        mapping: $.state
      - name: mergeable
        type: string
        mapping: $.mergeable
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pulls
      path: /repos/{{repo}}/pulls/{{pr_number}}
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: get-pull
        method: GET
Open in Framework → View in Fleet → github-pull-request-status.yml

Orchestrates regional content expansion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Regional Content Expansion Pipeline
  description: Orchestrates regional content expansion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - regional
  - spotify
  - spotify
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: regional
    port: 8080
    tools:
    - name: regional-content-expansion-pipeline
      description: Orchestrates regional content expansion pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: spotify.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: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/regional
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/regional
      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/regional
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → regional-content-expansion-pipeline.yml

Retrieves get saved tracks data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Saved Tracks
  description: Retrieves get saved tracks data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - tracks
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-saved-tracks
      description: Retrieves get saved tracks data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-saved-tracks
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/saved/tracks/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-saved-tracks
        method: GET
Open in Framework → View in Fleet → get-saved-tracks.yml

Orchestrates artist merch integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Merch Integration Pipeline
  description: Orchestrates artist merch integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - google-bigquery
  - pagerduty
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-merch-integration-pipeline
      description: Orchestrates artist merch integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: google-bigquery.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/artist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-merch-integration-pipeline.yml

Retrieves metadata for a BigQuery dataset used by Spotify's data platform, including table count, location, and default partition expiration.

naftiko: '0.5'
info:
  label: Lookup Google Cloud BigQuery Dataset
  description: Retrieves metadata for a BigQuery dataset used by Spotify's data platform, including table count, location, and default partition expiration.
  tags:
  - data-platform
  - google-cloud-platform
  - bigquery
capability:
  exposes:
  - type: mcp
    namespace: data-catalog
    port: 8080
    tools:
    - name: get-dataset
      description: Look up a BigQuery dataset by project and dataset ID. Returns location, table count, and default expiration.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The GCP project ID.
      - name: dataset_id
        in: body
        type: string
        description: The BigQuery dataset ID.
      call: bigquery.get-dataset
      with:
        project_id: '{{project_id}}'
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: location
        type: string
        mapping: $.location
      - name: default_table_expiration_ms
        type: string
        mapping: $.defaultTableExpirationMs
  consumes:
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: datasets
      path: /projects/{{project_id}}/datasets/{{dataset_id}}
      inputParameters:
      - name: project_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: get-dataset
        method: GET
Open in Framework → View in Fleet → lookup-google-cloud-bigquery-dataset.yml

Orchestrates music video integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Music Video Integration Pipeline
  description: Orchestrates music video integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - music
  - spotify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: music
    port: 8080
    tools:
    - name: music-video-integration-pipeline
      description: Orchestrates music video integration pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/music
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/music
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/music
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → music-video-integration-pipeline.yml

Orchestrates content safety review pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Content Safety Review Pipeline
  description: Orchestrates content safety review pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - content
  - spotify
  - github
  - google-bigquery
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: content
    port: 8080
    tools:
    - name: content-safety-review-pipeline
      description: Orchestrates content safety review pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: google-bigquery.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: pagerduty.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/content
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/content
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/content
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → content-safety-review-pipeline.yml

Queries the Spotify for Artists API for streaming stats on a given track within a date range, returning total streams, listeners, and saves.

naftiko: '0.5'
info:
  label: Get Spotify for Artists Stream Count
  description: Queries the Spotify for Artists API for streaming stats on a given track within a date range, returning total streams, listeners, and saves.
  tags:
  - creator-tools
  - spotify-for-artists
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: creator-stats
    port: 8080
    tools:
    - name: get-track-streams
      description: Retrieve streaming statistics for a track within a date range. Returns total streams, unique listeners, and saves.
      inputParameters:
      - name: track_uri
        in: body
        type: string
        description: The Spotify track URI.
      - 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: s4a-api.get-track-stats
      with:
        track_uri: '{{track_uri}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
  consumes:
  - type: http
    namespace: s4a-api
    baseUri: https://provider-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_s4a_token
    resources:
    - name: track-stats
      path: /analytics/tracks/{{track_uri}}
      inputParameters:
      - name: track_uri
        in: path
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-track-stats
        method: GET
Open in Framework → View in Fleet → get-spotify-for-artists-stream-count.yml

Orchestrates podcast launch campaign pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Podcast Launch Campaign Pipeline
  description: Orchestrates podcast launch campaign pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - podcast
  - spotify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: podcast
    port: 8080
    tools:
    - name: podcast-launch-campaign-pipeline
      description: Orchestrates podcast launch campaign pipeline across music streaming systems, coordinating multiple 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://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/podcast
      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/podcast
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/podcast
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → podcast-launch-campaign-pipeline.yml

Searches Twitter for brand mentions, analyzes sentiment via Google Cloud NLP, stores results in BigQuery, and posts a daily digest to the marketing Slack channel.

naftiko: '0.5'
info:
  label: Social Media Listening and Sentiment Tracker
  description: Searches Twitter for brand mentions, analyzes sentiment via Google Cloud NLP, stores results in BigQuery, and posts a daily digest to the marketing Slack channel.
  tags:
  - marketing
  - twitter
  - google-cloud-platform
  - slack
  - social-media
capability:
  exposes:
  - type: mcp
    namespace: social-listening
    port: 8080
    tools:
    - name: track-brand-sentiment
      description: Search Twitter for brand mentions, analyze sentiment, log to BigQuery, and post a digest to Slack.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: 'The Twitter search query (e.g. ''Spotify OR #SpotifyWrapped'').'
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for sentiment digest.
      steps:
      - name: search-tweets
        type: call
        call: twitter.search-recent
        with:
          query: '{{search_query}}'
          max_results: '100'
      - name: analyze-sentiment
        type: call
        call: gcp-nlp.analyze-sentiment
        with:
          content: '{{search-tweets.data_0_text}}'
          type: PLAIN_TEXT
      - name: log-results
        type: call
        call: bigquery.insert-rows
        with:
          dataset_id: marketing_analytics
          table_id: social_sentiment
          rows: '{"query":"{{search_query}}","tweet_count":{{search-tweets.meta_result_count}},"avg_sentiment":{{analyze-sentiment.documentSentiment_score}}}'
      - name: post-digest
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Social Sentiment Digest for ''{{search_query}}'':

            Tweets analyzed: {{search-tweets.meta_result_count}}

            Avg Sentiment: {{analyze-sentiment.documentSentiment_score}}

            Magnitude: {{analyze-sentiment.documentSentiment_magnitude}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets-search
      path: /tweets/search/recent
      inputParameters:
      - name: query
        in: query
      - name: max_results
        in: query
      operations:
      - name: search-recent
        method: GET
  - type: http
    namespace: gcp-nlp
    baseUri: https://language.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: documents
      path: /documents:analyzeSentiment
      operations:
      - name: analyze-sentiment
        method: POST
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: tabledata
      path: /projects/spotify-analytics/datasets/{{dataset_id}}/tables/{{table_id}}/insertAll
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_id
        in: path
      operations:
      - name: insert-rows
        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 → social-media-listening-and-sentiment-tracker.yml

Retrieves get available devices data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Available Devices
  description: Retrieves get available devices data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - devices
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-available-devices
      description: Retrieves get available devices data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-available-devices
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/available/devices/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-available-devices
        method: GET
Open in Framework → View in Fleet → get-available-devices.yml

Queries the internal subscription management API for a Spotify user's plan type, billing status, and renewal date. Used by customer service teams for account lookups.

naftiko: '0.5'
info:
  label: User Subscription Status Check
  description: Queries the internal subscription management API for a Spotify user's plan type, billing status, and renewal date. Used by customer service teams for account lookups.
  tags:
  - subscriptions
  - customer-service
  - billing
capability:
  exposes:
  - type: mcp
    namespace: subscription-mgmt
    port: 8080
    tools:
    - name: get-subscription-status
      description: Look up a user's subscription plan, billing status, and next renewal date.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The Spotify user ID.
      call: subscription-api.get-subscription
      with:
        user_id: '{{user_id}}'
      outputParameters:
      - name: plan_type
        type: string
        mapping: $.plan.name
      - name: billing_status
        type: string
        mapping: $.billing.status
      - name: renewal_date
        type: string
        mapping: $.billing.next_renewal
  consumes:
  - type: http
    namespace: subscription-api
    baseUri: https://subscription-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_subscription_token
    resources:
    - name: subscriptions
      path: /users/{{user_id}}/subscription
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: get-subscription
        method: GET
Open in Framework → View in Fleet → user-subscription-status-check.yml

Orchestrates ad targeting segment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Ad Targeting Segment Pipeline
  description: Orchestrates ad targeting segment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - ad
  - spotify
  - pagerduty
  - confluence
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: ad
    port: 8080
    tools:
    - name: ad-targeting-segment-pipeline
      description: Orchestrates ad targeting segment pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.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: grafana.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/ad
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/ad
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/ad
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → ad-targeting-segment-pipeline.yml

For a given playlist, fetches current track listing from Spotify, adds a new track, then posts a promotional update to Twitter and Slack to drive listener engagement.

naftiko: '0.5'
info:
  label: Playlist Curation and Promotion Workflow
  description: For a given playlist, fetches current track listing from Spotify, adds a new track, then posts a promotional update to Twitter and Slack to drive listener engagement.
  tags:
  - content-management
  - spotify-web-api
  - twitter
  - slack
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: playlist-promotion
    port: 8080
    tools:
    - name: curate-and-promote-playlist
      description: Given a playlist ID and a track URI, add the track to the playlist, then post promotion to Twitter and Slack.
      inputParameters:
      - name: playlist_id
        in: body
        type: string
        description: The Spotify playlist ID.
      - name: track_uri
        in: body
        type: string
        description: The Spotify track URI to add.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for the promotion post.
      steps:
      - name: get-playlist
        type: call
        call: spotify-api.get-playlist
        with:
          playlist_id: '{{playlist_id}}'
      - name: add-track
        type: call
        call: spotify-api.add-tracks
        with:
          playlist_id: '{{playlist_id}}'
          uris: '{{track_uri}}'
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: 'Fresh addition to {{get-playlist.name}}! Listen now on Spotify: https://open.spotify.com/playlist/{{playlist_id}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Added track to *{{get-playlist.name}}*. Total tracks now: {{get-playlist.tracks_total}}. Twitter promo posted.'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: playlists
      path: /playlists/{{playlist_id}}
      inputParameters:
      - name: playlist_id
        in: path
      operations:
      - name: get-playlist
        method: GET
    - name: playlist-tracks
      path: /playlists/{{playlist_id}}/tracks
      inputParameters:
      - name: playlist_id
        in: path
      - name: uris
        in: body
      operations:
      - name: add-tracks
        method: POST
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: slack
    baseUri: 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 → playlist-curation-and-promotion-workflow.yml

Fetches Google Ads campaign metrics, cross-references with Spotify listener conversion data in BigQuery, and posts an optimization recommendation to the advertising team's Slack channel.

naftiko: '0.5'
info:
  label: Ad Campaign Performance and Optimization
  description: Fetches Google Ads campaign metrics, cross-references with Spotify listener conversion data in BigQuery, and posts an optimization recommendation to the advertising team's Slack channel.
  tags:
  - advertising
  - google-ads
  - google-cloud-platform
  - slack
  - marketing-analytics
capability:
  exposes:
  - type: mcp
    namespace: ad-optimization
    port: 8080
    tools:
    - name: analyze-ad-campaign
      description: Given a Google Ads campaign ID and customer ID, pull ad metrics, join with Spotify conversion data, and deliver an optimization summary to Slack.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Google Ads customer ID.
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for optimization reports.
      steps:
      - name: get-campaign
        type: call
        call: google-ads.get-campaign
        with:
          customer_id: '{{customer_id}}'
          campaign_id: '{{campaign_id}}'
      - name: get-conversions
        type: call
        call: bigquery.run-query
        with:
          query: SELECT COUNT(*) as conversions, AVG(listen_duration_sec) as avg_listen FROM spotify_ads.campaign_conversions WHERE campaign_id='{{campaign_id}}'
      - name: post-analysis
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Ad Campaign {{campaign_id}} Analysis:

            Impressions: {{get-campaign.impressions}}

            Clicks: {{get-campaign.clicks}}

            Spotify Conversions: {{get-conversions.conversions}}

            Avg Listen Duration: {{get-conversions.avg_listen}}s

            Recommendation: Adjust targeting if CTR < 1%.'
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v16/customers
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    inputParameters:
    - name: developer-token
      in: header
      value: $secrets.google_ads_developer_token
    resources:
    - name: campaigns
      path: /{{customer_id}}/campaigns/{{campaign_id}}
      inputParameters:
      - name: customer_id
        in: path
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ad-campaign-performance-and-optimization.yml

Queries OpenTelemetry trace data for a Spotify service via the collector API, identifies slow spans, and posts a latency breakdown to the platform engineering Slack channel.

naftiko: '0.5'
info:
  label: OpenTelemetry Trace Analysis
  description: Queries OpenTelemetry trace data for a Spotify service via the collector API, identifies slow spans, and posts a latency breakdown to the platform engineering Slack channel.
  tags:
  - platform-engineering
  - opentelemetry
  - slack
  - observability
  - tracing
capability:
  exposes:
  - type: mcp
    namespace: trace-analysis
    port: 8080
    tools:
    - name: analyze-traces
      description: Given a service name and time window, fetch trace data, identify slow spans, and post a latency breakdown to Slack.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The Spotify service name.
      - name: time_window
        in: body
        type: string
        description: The time window for trace query (e.g. 1h, 30m).
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for trace analysis.
      steps:
      - name: get-traces
        type: call
        call: otel-collector.query-traces
        with:
          service: '{{service_name}}'
          lookback: '{{time_window}}'
      - name: post-analysis
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Trace Analysis: *{{service_name}}* (last {{time_window}})

            Total Traces: {{get-traces.total_traces}}

            Avg Duration: {{get-traces.avg_duration_ms}}ms

            P99 Duration: {{get-traces.p99_duration_ms}}ms

            Slowest Span: {{get-traces.slowest_span_name}} ({{get-traces.slowest_span_duration_ms}}ms)'
  consumes:
  - type: http
    namespace: otel-collector
    baseUri: https://otel-query.spotify.net/api/v1
    authentication:
      type: bearer
      token: $secrets.otel_token
    resources:
    - name: traces
      path: /traces
      inputParameters:
      - name: service
        in: query
      - name: lookback
        in: query
      operations:
      - name: query-traces
        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 → opentelemetry-trace-analysis.yml

Queries the Google Cloud Vertex AI model registry for a deployed model's metadata including version, endpoint, and serving status. Used by ML engineers for model lifecycle management.

naftiko: '0.5'
info:
  label: ML Model Registry Lookup
  description: Queries the Google Cloud Vertex AI model registry for a deployed model's metadata including version, endpoint, and serving status. Used by ML engineers for model lifecycle management.
  tags:
  - machine-learning
  - google-cloud-platform
  - model-registry
capability:
  exposes:
  - type: mcp
    namespace: ml-registry
    port: 8080
    tools:
    - name: get-model-info
      description: Look up a Vertex AI model by ID. Returns display name, version, endpoint URI, and deployment state.
      inputParameters:
      - name: model_id
        in: body
        type: string
        description: The Vertex AI model ID.
      call: vertex-ai.get-model
      with:
        model_id: '{{model_id}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.displayName
      - name: version_id
        type: string
        mapping: $.versionId
      - name: artifact_uri
        type: string
        mapping: $.artifactUri
      - name: deployment_state
        type: string
        mapping: $.deployedModels[0].deployedModelId
  consumes:
  - type: http
    namespace: vertex-ai
    baseUri: https://us-central1-aiplatform.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: models
      path: /projects/spotify-ml/locations/us-central1/models/{{model_id}}
      inputParameters:
      - name: model_id
        in: path
      operations:
      - name: get-model
        method: GET
Open in Framework → View in Fleet → ml-model-registry-lookup.yml

Orchestrates audio ad insertion optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Audio Ad Insertion Optimization Pipeline
  description: Orchestrates audio ad insertion optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - audio
  - spotify
  - datadog
  - github
  - google-bigquery
capability:
  exposes:
  - type: mcp
    namespace: audio
    port: 8080
    tools:
    - name: audio-ad-insertion-optimization-pipeline
      description: Orchestrates audio ad insertion optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: google-bigquery.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/audio
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/audio
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/audio
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → audio-ad-insertion-optimization-pipeline.yml

When a new podcast RSS feed is submitted, parses the feed, creates a Spotify show entry via the internal content API, indexes episodes in Elasticsearch, and notifies the content team on Slack.

naftiko: '0.5'
info:
  label: Podcast Ingestion and Catalog Registration
  description: When a new podcast RSS feed is submitted, parses the feed, creates a Spotify show entry via the internal content API, indexes episodes in Elasticsearch, and notifies the content team on Slack.
  tags:
  - content-management
  - elasticsearch
  - slack
  - podcasts
  - ingestion
capability:
  exposes:
  - type: mcp
    namespace: content-ingestion
    port: 8080
    tools:
    - name: ingest-podcast-feed
      description: Given an RSS feed URL and Slack channel, parse the feed, register the show, index episodes in Elasticsearch, and notify the content team.
      inputParameters:
      - name: feed_url
        in: body
        type: string
        description: The podcast RSS feed URL.
      - name: publisher_name
        in: body
        type: string
        description: The podcast publisher name.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for content ingestion alerts.
      steps:
      - name: register-show
        type: call
        call: content-api.create-show
        with:
          feed_url: '{{feed_url}}'
          publisher: '{{publisher_name}}'
      - name: index-episodes
        type: call
        call: elasticsearch.bulk-index
        with:
          index: podcast-episodes
          body: '{{register-show.episodes}}'
      - name: notify-content
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Podcast Ingested: *{{register-show.show_name}}* by {{publisher_name}}

            Episodes indexed: {{register-show.episode_count}}

            Show URI: {{register-show.show_uri}}'
  consumes:
  - type: http
    namespace: content-api
    baseUri: https://content-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_content_api_token
    resources:
    - name: shows
      path: /shows
      operations:
      - name: create-show
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://es-cluster.spotify.net:9200
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: bulk
      path: /{{index}}/_bulk
      inputParameters:
      - name: index
        in: path
      operations:
      - name: bulk-index
        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 → podcast-ingestion-and-catalog-registration.yml

After a Kubernetes canary deployment via Harness, queries Datadog for error rate and latency metrics, then posts a go/no-go recommendation to Slack for the on-call team.

naftiko: '0.5'
info:
  label: Deployment Canary Validation
  description: After a Kubernetes canary deployment via Harness, queries Datadog for error rate and latency metrics, then posts a go/no-go recommendation to Slack for the on-call team.
  tags:
  - platform-engineering
  - harness
  - datadog
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: deploy-validation
    port: 8080
    tools:
    - name: validate-canary
      description: Given a Harness deployment ID and service name, check Datadog error rate and latency, then post a go/no-go to Slack.
      inputParameters:
      - name: deployment_id
        in: body
        type: string
        description: The Harness deployment execution ID.
      - name: service_name
        in: body
        type: string
        description: The Spotify microservice name.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for deployment updates.
      steps:
      - name: get-deployment
        type: call
        call: harness.get-execution
        with:
          execution_id: '{{deployment_id}}'
      - name: check-errors
        type: call
        call: datadog.query-metrics
        with:
          query: avg:trace.error.rate{service:{{service_name}},deployment:canary}
      - name: check-latency
        type: call
        call: datadog.query-metrics
        with:
          query: avg:trace.http.request.duration{service:{{service_name}},deployment:canary}
      - name: post-verdict
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Canary Validation for *{{service_name}}* (deployment: {{deployment_id}})

            Error Rate: {{check-errors.series_0_pointlist_0_1}}%

            P50 Latency: {{check-latency.series_0_pointlist_0_1}}ms

            Status: {{get-deployment.status}}

            Verdict: Review metrics before promoting.'
  consumes:
  - type: http
    namespace: harness
    baseUri: https://app.harness.io/gateway/api
    authentication:
      type: bearer
      token: $secrets.harness_api_token
    resources:
    - name: executions
      path: /executions/{{execution_id}}
      inputParameters:
      - name: execution_id
        in: path
      operations:
      - name: get-execution
        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
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → deployment-canary-validation.yml

Fetches artist data from the Spotify Web API, creates a Marquee promotional campaign via the Spotify for Artists API, and tracks campaign creation in JIRA for the artist partnerships team.

naftiko: '0.5'
info:
  label: Artist Marquee Campaign Setup
  description: Fetches artist data from the Spotify Web API, creates a Marquee promotional campaign via the Spotify for Artists API, and tracks campaign creation in JIRA for the artist partnerships team.
  tags:
  - creator-tools
  - spotify-web-api
  - spotify-for-artists
  - jira
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: artist-marquee
    port: 8080
    tools:
    - name: create-marquee-campaign
      description: Given an artist ID and release URI, set up a Marquee campaign and log it in JIRA.
      inputParameters:
      - name: artist_id
        in: body
        type: string
        description: The Spotify artist ID.
      - name: release_uri
        in: body
        type: string
        description: The Spotify release URI to promote.
      - name: budget_usd
        in: body
        type: number
        description: Campaign budget in USD.
      - name: target_countries
        in: body
        type: string
        description: Comma-separated ISO country codes for targeting.
      steps:
      - name: get-artist
        type: call
        call: spotify-api.get-artist
        with:
          artist_id: '{{artist_id}}'
      - name: create-campaign
        type: call
        call: s4a-api.create-marquee
        with:
          artist_id: '{{artist_id}}'
          release_uri: '{{release_uri}}'
          budget: '{{budget_usd}}'
          countries: '{{target_countries}}'
      - name: log-campaign
        type: call
        call: jira.create-issue
        with:
          project_key: PARTNER
          summary: 'Marquee Campaign: {{get-artist.name}} - {{release_uri}}'
          description: 'Budget: ${{budget_usd}}

            Countries: {{target_countries}}

            Campaign ID: {{create-campaign.campaign_id}}'
          issue_type: Task
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: artists
      path: /artists/{{artist_id}}
      inputParameters:
      - name: artist_id
        in: path
      operations:
      - name: get-artist
        method: GET
  - type: http
    namespace: s4a-api
    baseUri: https://provider-api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_s4a_token
    resources:
    - name: marquee
      path: /marquee/campaigns
      operations:
      - name: create-marquee
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/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 → artist-marquee-campaign-setup.yml

Retrieves get top items data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Top Items
  description: Retrieves get top items data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - items
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-top-items
      description: Retrieves get top items data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-top-items
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/top/items/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-top-items
        method: GET
Open in Framework → View in Fleet → get-top-items.yml

Queries the Elasticsearch cluster for index health, shard allocation, and document count for Spotify's search indices. Used by the search infrastructure team for capacity planning.

naftiko: '0.5'
info:
  label: Elasticsearch Index Health Check
  description: Queries the Elasticsearch cluster for index health, shard allocation, and document count for Spotify's search indices. Used by the search infrastructure team for capacity planning.
  tags:
  - platform-engineering
  - elasticsearch
  - search
capability:
  exposes:
  - type: mcp
    namespace: search-infra
    port: 8080
    tools:
    - name: get-index-health
      description: Check the health and stats of an Elasticsearch index including status, shard count, and document count.
      inputParameters:
      - name: index_name
        in: body
        type: string
        description: The Elasticsearch index name.
      call: elasticsearch.get-index-stats
      with:
        index_name: '{{index_name}}'
      outputParameters:
      - name: health
        type: string
        mapping: $.status
      - name: primary_shards
        type: number
        mapping: $._shards.successful
      - name: doc_count
        type: number
        mapping: $._all.primaries.docs.count
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://es-cluster.spotify.net:9200
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: index-stats
      path: /{{index_name}}/_stats
      inputParameters:
      - name: index_name
        in: path
      operations:
      - name: get-index-stats
        method: GET
Open in Framework → View in Fleet → elasticsearch-index-health-check.yml

Orchestrates artist fan engagement pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Fan Engagement Pipeline
  description: Orchestrates artist fan engagement pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - jira
  - datadog
  - github
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-fan-engagement-pipeline
      description: Orchestrates artist fan engagement pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/artist
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-fan-engagement-pipeline.yml

Orchestrates user subscription recovery pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Subscription Recovery Pipeline
  description: Orchestrates user subscription recovery pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-subscription-recovery-pipeline
      description: Orchestrates user subscription recovery pipeline across music streaming systems, coordinating multiple 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://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/user
      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/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-subscription-recovery-pipeline.yml

Orchestrates podcast monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Podcast Monetization Pipeline
  description: Orchestrates podcast monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - podcast
  - spotify
  - jira
  - datadog
  - github
capability:
  exposes:
  - type: mcp
    namespace: podcast
    port: 8080
    tools:
    - name: podcast-monetization-pipeline
      description: Orchestrates podcast monetization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: jira.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/podcast
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/podcast
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/podcast
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → podcast-monetization-pipeline.yml

Fetches a podcast episode from Spotify, sends the audio to Google Cloud Speech-to-Text for transcription, indexes the transcript in Elasticsearch for search, and stores the raw transcript in GCS.

naftiko: '0.5'
info:
  label: Podcast Transcript Generation and Indexing
  description: Fetches a podcast episode from Spotify, sends the audio to Google Cloud Speech-to-Text for transcription, indexes the transcript in Elasticsearch for search, and stores the raw transcript in GCS.
  tags:
  - content-management
  - google-cloud-platform
  - elasticsearch
  - podcasts
  - transcription
capability:
  exposes:
  - type: mcp
    namespace: podcast-transcription
    port: 8080
    tools:
    - name: transcribe-and-index-episode
      description: Given an episode ID, transcribe the audio via Google Speech-to-Text, index in Elasticsearch, and store in GCS.
      inputParameters:
      - name: episode_id
        in: body
        type: string
        description: The Spotify podcast episode ID.
      - name: audio_url
        in: body
        type: string
        description: The episode audio file URL.
      steps:
      - name: get-episode
        type: call
        call: spotify-api.get-episode
        with:
          episode_id: '{{episode_id}}'
      - name: transcribe
        type: call
        call: gcp-speech.recognize
        with:
          audio_uri: '{{audio_url}}'
          language_code: en-US
      - name: index-transcript
        type: call
        call: elasticsearch.index-document
        with:
          index: podcast-transcripts
          id: '{{episode_id}}'
          body: '{"episode_id":"{{episode_id}}","show_name":"{{get-episode.show_name}}","episode_name":"{{get-episode.name}}","transcript":"{{transcribe.results}}"}'
      - name: store-raw
        type: call
        call: gcs.upload-object
        with:
          bucket: spotify-transcripts
          object_name: '{{episode_id}}/transcript.json'
          body: '{{transcribe.results}}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: episodes
      path: /episodes/{{episode_id}}
      inputParameters:
      - name: episode_id
        in: path
      operations:
      - name: get-episode
        method: GET
  - type: http
    namespace: gcp-speech
    baseUri: https://speech.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: speech
      path: /speech:recognize
      operations:
      - name: recognize
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://es-cluster.spotify.net:9200
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: documents
      path: /{{index}}/_doc/{{id}}
      inputParameters:
      - name: index
        in: path
      - name: id
        in: path
      operations:
      - name: index-document
        method: PUT
  - type: http
    namespace: gcs
    baseUri: https://storage.googleapis.com/upload/storage/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: objects
      path: /b/{{bucket}}/o
      inputParameters:
      - name: bucket
        in: path
      - name: object_name
        in: query
      operations:
      - name: upload-object
        method: POST
Open in Framework → View in Fleet → podcast-transcript-generation-and-indexing.yml

Orchestrates music recommendation model pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Music Recommendation Model Pipeline
  description: Orchestrates music recommendation model pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - music
  - spotify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: music
    port: 8080
    tools:
    - name: music-recommendation-model-pipeline
      description: Orchestrates music recommendation model pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: slack.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: slack-resource
      path: /api/music
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/music
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/music
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → music-recommendation-model-pipeline.yml

Checks the status of Apache Beam data pipelines on Google Cloud Dataflow, queries Prometheus for pipeline throughput metrics, and sends a health summary to the data engineering Slack channel.

naftiko: '0.5'
info:
  label: Data Pipeline Health Monitor
  description: Checks the status of Apache Beam data pipelines on Google Cloud Dataflow, queries Prometheus for pipeline throughput metrics, and sends a health summary to the data engineering Slack channel.
  tags:
  - data-platform
  - google-cloud-platform
  - prometheus
  - slack
  - data-pipeline
capability:
  exposes:
  - type: mcp
    namespace: data-pipeline-health
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Given a Dataflow job ID, check pipeline status and throughput, then post a health summary to Slack.
      inputParameters:
      - name: job_id
        in: body
        type: string
        description: The Google Cloud Dataflow job ID.
      - name: project_id
        in: body
        type: string
        description: The GCP project ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for pipeline alerts.
      steps:
      - name: get-job
        type: call
        call: dataflow.get-job
        with:
          project_id: '{{project_id}}'
          job_id: '{{job_id}}'
      - name: get-throughput
        type: call
        call: prometheus.query
        with:
          query: rate(dataflow_elements_produced_total{job_id="{{job_id}}"}[5m])
      - name: post-health
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Pipeline Health: Job {{job_id}}

            State: {{get-job.currentState}}

            Create Time: {{get-job.createTime}}

            Throughput: {{get-throughput.data_result_0_value_1}} elements/sec'
  consumes:
  - type: http
    namespace: dataflow
    baseUri: https://dataflow.googleapis.com/v1b3
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/{{project_id}}/jobs/{{job_id}}
      inputParameters:
      - name: project_id
        in: path
      - name: job_id
        in: path
      operations:
      - name: get-job
        method: GET
  - type: http
    namespace: prometheus
    baseUri: https://prometheus.spotify.net/api/v1
    authentication:
      type: bearer
      token: $secrets.prometheus_token
    resources:
    - name: query
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query
        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 → data-pipeline-health-monitor.yml

Queries BigQuery for a user's yearly listening statistics, generates a Wrapped summary payload, stores it in Google Cloud Storage, and triggers a notification via the internal push notification service.

naftiko: '0.5'
info:
  label: Wrapped Campaign Data Export
  description: Queries BigQuery for a user's yearly listening statistics, generates a Wrapped summary payload, stores it in Google Cloud Storage, and triggers a notification via the internal push notification service.
  tags:
  - content-management
  - google-cloud-platform
  - personalization
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: wrapped-campaign
    port: 8080
    tools:
    - name: generate-wrapped-data
      description: Given a user ID and year, query listening stats, create a Wrapped payload, store in GCS, and trigger a push notification.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The Spotify user ID.
      - name: year
        in: body
        type: string
        description: The Wrapped year (e.g. 2025).
      steps:
      - name: get-stats
        type: call
        call: bigquery.run-query
        with:
          query: SELECT top_artist, top_track, top_genre, total_minutes, total_tracks FROM spotify_analytics.user_yearly_stats WHERE user_id='{{user_id}}' AND year={{year}}
      - name: store-payload
        type: call
        call: gcs.upload-object
        with:
          bucket: spotify-wrapped-payloads
          object_name: '{{year}}/{{user_id}}.json'
          body: '{{get-stats}}'
      - name: send-notification
        type: call
        call: push-api.send-notification
        with:
          user_id: '{{user_id}}'
          title: Your {{year}} Wrapped is here!
          body: You listened to {{get-stats.total_minutes}} minutes of music this year. Check out your Wrapped!
          deeplink: spotify://wrapped/{{year}}
  consumes:
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: jobs
      path: /projects/spotify-analytics/jobs
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: gcs
    baseUri: https://storage.googleapis.com/upload/storage/v1
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: objects
      path: /b/{{bucket}}/o
      inputParameters:
      - name: bucket
        in: path
      - name: object_name
        in: query
      operations:
      - name: upload-object
        method: POST
  - type: http
    namespace: push-api
    baseUri: https://push-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_push_token
    resources:
    - name: notifications
      path: /notifications
      operations:
      - name: send-notification
        method: POST
Open in Framework → View in Fleet → wrapped-campaign-data-export.yml

Orchestrates podcast analytics pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Podcast Analytics Pipeline
  description: Orchestrates podcast analytics pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - podcast
  - spotify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: podcast
    port: 8080
    tools:
    - name: podcast-analytics-pipeline
      description: Orchestrates podcast analytics pipeline across music streaming systems, coordinating multiple 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://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/podcast
      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/podcast
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/podcast
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → podcast-analytics-pipeline.yml

Orchestrates content delivery optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Content Delivery Optimization Pipeline
  description: Orchestrates content delivery optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - content
  - spotify
  - pagerduty
  - confluence
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: content
    port: 8080
    tools:
    - name: content-delivery-optimization-pipeline
      description: Orchestrates content delivery optimization pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: pagerduty.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: grafana.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/content
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/content
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: grafana
    baseUri: https://grafana.spotify.net/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: grafana-resource
      path: /api/content
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → content-delivery-optimization-pipeline.yml

Orchestrates artist release day orchestrator across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Artist Release Day Orchestrator
  description: Orchestrates artist release day orchestrator across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - artist
  - spotify
  - spotify
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: artist
    port: 8080
    tools:
    - name: artist-release-day-orchestrator
      description: Orchestrates artist release day orchestrator across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: spotify.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: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: spotify-resource
      path: /api/artist
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://spotify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/artist
      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/artist
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → artist-release-day-orchestrator.yml

Fetches a user's top tracks and listening history from Spotify, generates seed recommendations using the recommendations API, creates a new personalized playlist, and logs the generation event to BigQuery.

naftiko: '0.5'
info:
  label: Personalized Playlist Generation Pipeline
  description: Fetches a user's top tracks and listening history from Spotify, generates seed recommendations using the recommendations API, creates a new personalized playlist, and logs the generation event to BigQuery.
  tags:
  - recommendation
  - spotify-web-api
  - google-cloud-platform
  - personalization
  - machine-learning
capability:
  exposes:
  - type: mcp
    namespace: recommendation-engine
    port: 8080
    tools:
    - name: generate-personalized-playlist
      description: Given a user ID, generate a personalized playlist from their listening history and seed recommendations, then log the event.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The Spotify user ID.
      - name: playlist_name
        in: body
        type: string
        description: The name for the generated playlist.
      steps:
      - name: get-top-tracks
        type: call
        call: spotify-api.get-user-top-tracks
        with:
          user_id: '{{user_id}}'
          time_range: medium_term
          limit: '5'
      - name: get-recommendations
        type: call
        call: spotify-api.get-recommendations
        with:
          seed_tracks: '{{get-top-tracks.items_0_id}},{{get-top-tracks.items_1_id}},{{get-top-tracks.items_2_id}}'
          limit: '30'
      - name: create-playlist
        type: call
        call: spotify-api.create-playlist
        with:
          user_id: '{{user_id}}'
          name: '{{playlist_name}}'
          description: Auto-generated personalized playlist
      - name: add-tracks
        type: call
        call: spotify-api.add-playlist-tracks
        with:
          playlist_id: '{{create-playlist.id}}'
          uris: '{{get-recommendations.tracks}}'
      - name: log-event
        type: call
        call: bigquery.insert-rows
        with:
          dataset_id: recommendation_events
          table_id: playlist_generations
          rows: '{"user_id":"{{user_id}}","playlist_id":"{{create-playlist.id}}","track_count":30}'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: user-top-tracks
      path: /me/top/tracks
      inputParameters:
      - name: time_range
        in: query
      - name: limit
        in: query
      operations:
      - name: get-user-top-tracks
        method: GET
    - name: recommendations
      path: /recommendations
      inputParameters:
      - name: seed_tracks
        in: query
      - name: limit
        in: query
      operations:
      - name: get-recommendations
        method: GET
    - name: playlists
      path: /users/{{user_id}}/playlists
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: create-playlist
        method: POST
    - name: playlist-tracks
      path: /playlists/{{playlist_id}}/tracks
      inputParameters:
      - name: playlist_id
        in: path
      operations:
      - name: add-playlist-tracks
        method: POST
  - type: http
    namespace: bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.gcp_bearer_token
    resources:
    - name: tabledata
      path: /projects/spotify-ml/datasets/{{dataset_id}}/tables/{{table_id}}/insertAll
      inputParameters:
      - name: dataset_id
        in: path
      - name: table_id
        in: path
      operations:
      - name: insert-rows
        method: POST
Open in Framework → View in Fleet → personalized-playlist-generation-pipeline.yml

Retrieves Spotify audio features for a track including danceability, energy, tempo, valence, and acousticness. Used by recommendation and ML teams for feature engineering.

naftiko: '0.5'
info:
  label: Get Audio Features
  description: Retrieves Spotify audio features for a track including danceability, energy, tempo, valence, and acousticness. Used by recommendation and ML teams for feature engineering.
  tags:
  - machine-learning
  - spotify-web-api
  - audio-analysis
capability:
  exposes:
  - type: mcp
    namespace: ml-audio
    port: 8080
    tools:
    - name: get-audio-features
      description: 'Return audio features for a track: danceability, energy, tempo, valence, acousticness, instrumentalness.'
      inputParameters:
      - name: track_id
        in: body
        type: string
        description: The Spotify track ID.
      call: spotify-api.get-audio-features
      with:
        track_id: '{{track_id}}'
      outputParameters:
      - name: danceability
        type: number
        mapping: $.danceability
      - name: energy
        type: number
        mapping: $.energy
      - name: tempo
        type: number
        mapping: $.tempo
      - name: valence
        type: number
        mapping: $.valence
      - name: acousticness
        type: number
        mapping: $.acousticness
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: audio-features
      path: /audio-features/{{track_id}}
      inputParameters:
      - name: track_id
        in: path
      operations:
      - name: get-audio-features
        method: GET
Open in Framework → View in Fleet → get-audio-features.yml

Retrieves get category playlists data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Category Playlists
  description: Retrieves get category playlists data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - playlists
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-category-playlists
      description: Retrieves get category playlists data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-category-playlists
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/category/playlists/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-category-playlists
        method: GET
Open in Framework → View in Fleet → get-category-playlists.yml

Checks the latest GitHub Actions workflow run for a Spotify repository, correlates with Harness deployment status, and posts a unified CI/CD status to Slack.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Status Aggregator
  description: Checks the latest GitHub Actions workflow run for a Spotify repository, correlates with Harness deployment status, and posts a unified CI/CD status to Slack.
  tags:
  - platform-engineering
  - github
  - harness
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: cicd-status
    port: 8080
    tools:
    - name: get-cicd-status
      description: Given a repo name and Harness pipeline ID, aggregate CI/CD status from GitHub Actions and Harness, then post to Slack.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository (org/repo format).
      - name: harness_pipeline_id
        in: body
        type: string
        description: The Harness pipeline ID.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for CI/CD status.
      steps:
      - name: get-workflow-runs
        type: call
        call: github.get-workflow-runs
        with:
          repo: '{{repo}}'
      - name: get-harness-pipeline
        type: call
        call: harness.get-pipeline
        with:
          pipeline_id: '{{harness_pipeline_id}}'
      - name: post-status
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'CI/CD Status for *{{repo}}*:

            GitHub Actions: {{get-workflow-runs.workflow_runs_0_conclusion}} ({{get-workflow-runs.workflow_runs_0_name}})

            Harness Pipeline: {{get-harness-pipeline.status}}

            Last Deploy: {{get-harness-pipeline.last_execution_ts}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repo}}/actions/runs
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-workflow-runs
        method: GET
  - type: http
    namespace: harness
    baseUri: https://app.harness.io/gateway/api
    authentication:
      type: bearer
      token: $secrets.harness_api_token
    resources:
    - name: pipelines
      path: /pipelines/{{pipeline_id}}
      inputParameters:
      - name: pipeline_id
        in: path
      operations:
      - name: get-pipeline
        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 → ci-cd-pipeline-status-aggregator.yml

Orchestrates user privacy compliance pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: User Privacy Compliance Pipeline
  description: Orchestrates user privacy compliance pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - user
  - spotify
  - google-bigquery
  - pagerduty
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: user
    port: 8080
    tools:
    - name: user-privacy-compliance-pipeline
      description: Orchestrates user privacy compliance pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: google-bigquery.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/user
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/user
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/user
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → user-privacy-compliance-pipeline.yml

On a Datadog alert, creates a PagerDuty incident, opens a dedicated Slack channel for war-room coordination, and files a GitHub issue for post-incident tracking.

naftiko: '0.5'
info:
  label: Incident Response Orchestrator
  description: On a Datadog alert, creates a PagerDuty incident, opens a dedicated Slack channel for war-room coordination, and files a GitHub issue for post-incident tracking.
  tags:
  - platform-engineering
  - datadog
  - pagerduty
  - slack
  - github
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: incident-mgmt
    port: 8080
    tools:
    - name: trigger-incident-response
      description: Given a Datadog alert ID and severity, create a PagerDuty incident, open a Slack war-room channel, and file a GitHub issue.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Datadog alert/event ID.
      - name: severity
        in: body
        type: string
        description: Incident severity level (SEV1, SEV2, SEV3).
      - name: service_name
        in: body
        type: string
        description: The affected Spotify service name.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-event
        with:
          event_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: pagerduty.create-incident
        with:
          title: '{{severity}}: {{service_name}} - {{get-alert.title}}'
          urgency: high
          service_id: '{{service_name}}'
      - name: create-war-room
        type: call
        call: slack.create-channel
        with:
          name: inc-{{service_name}}-{{alert_id}}
      - name: post-context
        type: call
        call: slack.post-message
        with:
          channel: '{{create-war-room.channel_id}}'
          text: 'Incident opened for *{{service_name}}*

            Severity: {{severity}}

            Datadog Alert: {{get-alert.url}}

            PagerDuty: {{create-incident.html_url}}'
      - name: file-issue
        type: call
        call: github.create-issue
        with:
          repo: spotify/{{service_name}}
          title: 'Incident: {{severity}} - {{get-alert.title}}'
          body: 'PagerDuty: {{create-incident.html_url}}

            Slack Channel: #inc-{{service_name}}-{{alert_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      name: DD-API-KEY
      in: header
      value: $secrets.datadog_api_key
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: events
      path: /events/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-event
        method: GET
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: channels
      path: /conversations.create
      operations:
      - name: create-channel
        method: POST
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: issues
      path: /repos/{{repo}}/issues
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → incident-response-orchestrator.yml

Retrieves get recently played data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Recently Played
  description: Retrieves get recently played data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - played
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-recently-played
      description: Retrieves get recently played data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-recently-played
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/recently/played/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-recently-played
        method: GET
Open in Framework → View in Fleet → get-recently-played.yml

Orchestrates content geo restriction pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Content Geo Restriction Pipeline
  description: Orchestrates content geo restriction pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - content
  - spotify
  - datadog
  - github
  - google-bigquery
capability:
  exposes:
  - type: mcp
    namespace: content
    port: 8080
    tools:
    - name: content-geo-restriction-pipeline
      description: Orchestrates content geo restriction pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: datadog.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: google-bigquery.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: datadog-resource
      path: /api/content
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/content
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/content
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → content-geo-restriction-pipeline.yml

Orchestrates music licensing renewal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Music Licensing Renewal Pipeline
  description: Orchestrates music licensing renewal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
  tags:
  - music
  - spotify
  - google-bigquery
  - pagerduty
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: music
    port: 8080
    tools:
    - name: music-licensing-renewal-pipeline
      description: Orchestrates music licensing renewal pipeline across music streaming systems, coordinating multiple services and notifying stakeholders.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The primary input identifier.
      steps:
      - name: step-1
        type: call
        call: google-bigquery.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: pagerduty.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: confluence.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: google-bigquery
    baseUri: https://bigquery.googleapis.com/bigquery/v2
    authentication:
      type: bearer
      token: $secrets.bigquery_token
    resources:
    - name: google-bigquery-resource
      path: /api/music
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: pagerduty-resource
      path: /api/music
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://spotify.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: confluence-resource
      path: /api/music
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → music-licensing-renewal-pipeline.yml

When a copyright claim is filed, retrieves track metadata from Spotify, cross-references rights data with the internal licensing API, creates a JIRA ticket for the legal team, and notifies the artist via email through SendGrid.

naftiko: '0.5'
info:
  label: Copyright Claim Review Workflow
  description: When a copyright claim is filed, retrieves track metadata from Spotify, cross-references rights data with the internal licensing API, creates a JIRA ticket for the legal team, and notifies the artist via email through SendGrid.
  tags:
  - content-management
  - spotify-web-api
  - jira
  - sendgrid
  - legal
  - rights-management
capability:
  exposes:
  - type: mcp
    namespace: rights-mgmt
    port: 8080
    tools:
    - name: process-copyright-claim
      description: Given a track ID and claimant details, verify rights, create a legal review ticket, and notify the affected artist.
      inputParameters:
      - name: track_id
        in: body
        type: string
        description: The Spotify track ID under claim.
      - name: claimant_name
        in: body
        type: string
        description: The name of the copyright claimant.
      - name: claim_type
        in: body
        type: string
        description: The type of claim (composition, recording, both).
      steps:
      - name: get-track
        type: call
        call: spotify-api.get-track
        with:
          track_id: '{{track_id}}'
      - name: check-rights
        type: call
        call: licensing-api.get-rights
        with:
          isrc: '{{get-track.external_ids_isrc}}'
      - name: create-review
        type: call
        call: jira.create-issue
        with:
          project_key: LEGAL
          summary: 'Copyright claim: {{get-track.name}} by {{get-track.artists_0_name}} - Claimant: {{claimant_name}}'
          description: 'Claim type: {{claim_type}}

            ISRC: {{get-track.external_ids_isrc}}

            Current rights holder: {{check-rights.rights_holder}}

            License type: {{check-rights.license_type}}'
          issue_type: Task
      - name: notify-artist
        type: call
        call: sendgrid.send-email
        with:
          to: '{{check-rights.artist_contact_email}}'
          subject: Copyright Claim Notice - {{get-track.name}}
          body: 'A {{claim_type}} copyright claim has been filed against your track ''{{get-track.name}}'' by {{claimant_name}}. Our legal team is reviewing (ticket: {{create-review.key}}). No action needed from you at this time.'
  consumes:
  - type: http
    namespace: spotify-api
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_api_token
    resources:
    - name: tracks
      path: /tracks/{{track_id}}
      inputParameters:
      - name: track_id
        in: path
      operations:
      - name: get-track
        method: GET
  - type: http
    namespace: licensing-api
    baseUri: https://licensing-api.spotify.net/v1
    authentication:
      type: bearer
      token: $secrets.spotify_licensing_token
    resources:
    - name: rights
      path: /rights/{{isrc}}
      inputParameters:
      - name: isrc
        in: path
      operations:
      - name: get-rights
        method: GET
  - type: http
    namespace: jira
    baseUri: https://spotify.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → copyright-claim-review-workflow.yml

Retrieves get market availability data from the Spotify music streaming systems.

naftiko: '0.5'
info:
  label: Get Market Availability
  description: Retrieves get market availability data from the Spotify music streaming systems.
  tags:
  - get
  - spotify
  - availability
capability:
  exposes:
  - type: mcp
    namespace: get
    port: 8080
    tools:
    - name: get-market-availability
      description: Retrieves get market availability data from the Spotify music streaming systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: spotify.get-market-availability
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: spotify
    baseUri: https://api.spotify.com/v1
    authentication:
      type: bearer
      token: $secrets.spotify_access_token
    resources:
    - name: resource
      path: /get/market/availability/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: get-market-availability
        method: GET
Open in Framework → View in Fleet → get-market-availability.yml

Retrieves Facebook ad spend and ROAS for a date range.

naftiko: '0.5'
info:
  label: Facebook Ads Spend Reporter
  description: Retrieves Facebook ad spend and ROAS for a date range.
  tags:
  - advertising
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-fb-ad-spend
      description: Fetch Facebook ad spend and ROAS.
      inputParameters:
      - name: ad_account_id
        in: body
        type: string
        description: Facebook ad account ID.
      - name: start_date
        in: body
        type: string
        description: Start date YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date YYYY-MM-DD.
      call: meta.get-account-insights
      with:
        ad_account_id: '{{ad_account_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: spend
        type: string
        mapping: $.data[0].spend
      - name: roas
        type: string
        mapping: $.data[0].purchase_roas[0].value
  consumes:
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: account-insights
      path: /act_{{ad_account_id}}/insights
      inputParameters:
      - name: ad_account_id
        in: path
      operations:
      - name: get-account-insights
        method: GET
Open in Framework → View in Fleet → facebook-ads-spend-reporter.yml

Retrieves engagement metrics for a published article.

naftiko: '0.5'
info:
  label: Article Engagement Metrics
  description: Retrieves engagement metrics for a published article.
  tags:
  - editorial
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: editorial
    port: 8080
    tools:
    - name: get-article
      description: Retrieves engagement metrics for a published article.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The article engagement metrics identifier.
      call: editorial-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: editorial-api
    baseUri: https://api.usa-today.com/editorial/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: article
      path: /article/engagement/metrics/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-article
        method: GET
Open in Framework → View in Fleet → article-engagement-metrics.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.usa-today.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Retrieves subscriber acquisition metrics.

naftiko: '0.5'
info:
  label: Subscriber Acquisition Report
  description: Retrieves subscriber acquisition metrics.
  tags:
  - subscriptions
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: subscriptions
    port: 8080
    tools:
    - name: get-subscriber
      description: Retrieves subscriber acquisition metrics.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The subscriber acquisition report identifier.
      call: subscriptions-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: subscriptions-api
    baseUri: https://api.usa-today.com/subscriptions/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: subscriber
      path: /subscriber/acquisition/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-subscriber
        method: GET
Open in Framework → View in Fleet → subscriber-acquisition-report.yml

Retrieves Instagram post engagement metrics for editorial content.

naftiko: '0.5'
info:
  label: Instagram Content Promotion
  description: Retrieves Instagram post engagement metrics for editorial content.
  tags:
  - social-media
  - publishing
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: social-engagement
    port: 8080
    tools:
    - name: get-post-engagement
      description: Fetch Instagram post engagement metrics.
      inputParameters:
      - name: media_id
        in: body
        type: string
        description: Instagram media ID.
      call: instagram.get-media-insights
      with:
        media_id: '{{media_id}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.data[0].values[0].value
      - name: reach
        type: number
        mapping: $.data[1].values[0].value
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media-insights
      path: /{{media_id}}/insights
      inputParameters:
      - name: media_id
        in: path
      operations:
      - name: get-media-insights
        method: GET
Open in Framework → View in Fleet → instagram-content-promotion.yml

Retrieves the latest GTM container version.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Version
  description: Retrieves the latest GTM container version.
  tags:
  - analytics
  - tag-management
  - google-tag-manager
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: get-gtm-version
      description: Fetch latest GTM container version.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: GTM account ID.
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      call: gtm.get-live-version
      with:
        account_id: '{{account_id}}'
        container_id: '{{container_id}}'
      outputParameters:
      - name: version_number
        type: string
        mapping: $.containerVersionId
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/versions/live
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      operations:
      - name: get-live-version
        method: GET
Open in Framework → View in Fleet → google-tag-manager-container-version.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → executive-dashboard-refresh-orchestrator.yml

Retrieves a Confluence wiki page.

naftiko: '0.5'
info:
  label: Confluence Page Viewer
  description: Retrieves a Confluence wiki page.
  tags:
  - collaboration
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: get-confluence
      description: Retrieves a Confluence wiki page.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The confluence page viewer identifier.
      call: collaboration-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: collaboration-api
    baseUri: https://api.usa-today.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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

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.usa-today.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Triggers a data source refresh in Looker Studio for editorial dashboards.

naftiko: '0.5'
info:
  label: Looker Studio Dashboard Refresh
  description: Triggers a data source refresh in Looker Studio for editorial dashboards.
  tags:
  - analytics
  - reporting
  - looker-studio
capability:
  exposes:
  - type: mcp
    namespace: bi-ops
    port: 8080
    tools:
    - name: refresh-dashboard
      description: Refresh a Looker Studio data source.
      inputParameters:
      - name: datasource_id
        in: body
        type: string
        description: Looker Studio data source ID.
      call: lookerstudio.refresh-datasource
      with:
        datasource_id: '{{datasource_id}}'
  consumes:
  - type: http
    namespace: lookerstudio
    baseUri: https://datastudio.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_datastudio_token
    resources:
    - name: datasources
      path: /datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-datasource
        method: POST
Open in Framework → View in Fleet → looker-studio-dashboard-refresh.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.usa-today.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 a Confluence page by ID, returning title, body, and version.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Lookup
  description: Retrieves a Confluence page by ID, returning title, body, and version.
  tags:
  - documents
  - knowledge-base
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge-mgmt
    port: 8080
    tools:
    - name: get-confluence-page
      description: Fetch a Confluence page.
      inputParameters:
      - name: page_id
        in: body
        type: string
        description: Confluence page ID.
      call: confluence.get-page
      with:
        page_id: '{{page_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: version
        type: number
        mapping: $.version.number
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://gannett.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: pages
      path: /content/{{page_id}}
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-base-lookup.yml

Orchestrates news media workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 5
  description: Orchestrates news media workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-005
      description: Orchestrates news media 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 News Media Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-5.yml

Orchestrates news media workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 11
  description: Orchestrates news media workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-011
      description: Orchestrates news media 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 News Media Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-11.yml

Pulls subscriber data from Salesforce, cross-references with Google Analytics engagement, and refreshes a Looker Studio dashboard with subscriber health metrics.

naftiko: '0.5'
info:
  label: Paywall Subscription Analytics Orchestrator
  description: Pulls subscriber data from Salesforce, cross-references with Google Analytics engagement, and refreshes a Looker Studio dashboard with subscriber health metrics.
  tags:
  - subscriptions
  - analytics
  - salesforce
  - google-analytics
  - looker-studio
capability:
  exposes:
  - type: mcp
    namespace: subscription-analytics
    port: 8080
    tools:
    - name: analyze-subscriber-health
      description: Aggregate subscriber and engagement data for the subscription health dashboard.
      inputParameters:
      - name: segment
        in: body
        type: string
        description: Subscriber segment (e.g., 'premium', 'basic').
      - name: date_range
        in: body
        type: string
        description: Date range.
      steps:
      - name: get-subscriber-data
        type: call
        call: salesforce.query-subscribers
        with:
          segment: '{{segment}}'
      - name: get-engagement
        type: call
        call: ga.get-report
        with:
          segment: '{{segment}}'
          date_range: '{{date_range}}'
      - name: refresh-dashboard
        type: call
        call: lookerstudio.refresh-datasource
        with:
          datasource_id: subscriber_health
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gannett.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-subscribers
        method: GET
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: lookerstudio
    baseUri: https://datastudio.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_datastudio_token
    resources:
    - name: datasources
      path: /datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-datasource
        method: POST
Open in Framework → View in Fleet → paywall-subscription-analytics-orchestrator.yml

When an advertiser books a campaign in Salesforce, creates the ad order in Google Ads, schedules social promotion on Facebook, and sends a confirmation to the advertiser via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Ad Campaign Booking Orchestrator
  description: When an advertiser books a campaign in Salesforce, creates the ad order in Google Ads, schedules social promotion on Facebook, and sends a confirmation to the advertiser via Microsoft Outlook.
  tags:
  - advertising
  - campaign-management
  - salesforce
  - google-ads
  - facebook
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: ad-operations
    port: 8080
    tools:
    - name: book-ad-campaign
      description: Create ad orders across platforms and confirm with advertiser.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: Salesforce opportunity ID.
      steps:
      - name: get-deal
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-google-campaign
        type: call
        call: googleads.create-campaign
        with:
          name: '{{get-deal.Name}}'
          budget: '{{get-deal.Amount}}'
          start_date: '{{get-deal.Campaign_Start__c}}'
      - name: create-fb-campaign
        type: call
        call: meta.create-campaign
        with:
          name: '{{get-deal.Name}}'
          budget: '{{get-deal.Social_Budget__c}}'
      - name: send-confirmation
        type: call
        call: outlook.send-mail
        with:
          to: '{{get-deal.Contact_Email__c}}'
          subject: 'Campaign Confirmed: {{get-deal.Name}}'
          body: 'Your campaign is booked. Google ID: {{create-google-campaign.id}}, Facebook ID: {{create-fb-campaign.id}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gannett.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: googleads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/{{customer_id}}/campaigns
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: campaigns
      path: /act_{{ad_account_id}}/campaigns
      inputParameters:
      - name: ad_account_id
        in: path
      operations:
      - name: create-campaign
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → ad-campaign-booking-orchestrator.yml

Retrieves the latest Azure DevOps build status.

naftiko: '0.5'
info:
  label: Azure DevOps Build Status Lookup
  description: Retrieves the latest Azure DevOps build status.
  tags:
  - devops
  - ci-cd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: devops-builds
    port: 8080
    tools:
    - name: get-build-status
      description: Fetch latest build status.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Project name.
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline ID.
      call: azuredevops.get-builds
      with:
        project: '{{project}}'
        definition_id: '{{pipeline_id}}'
      outputParameters:
      - name: build_number
        type: string
        mapping: $.value[0].buildNumber
      - name: status
        type: string
        mapping: $.value[0].status
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/gannett
    authentication:
      type: basic
      username: ''
      password: $secrets.azuredevops_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: definition_id
        in: query
      operations:
      - name: get-builds
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status-lookup.yml

Fetches recent Twitter mentions and logs results to Google Sheets.

naftiko: '0.5'
info:
  label: Twitter Brand Mention Tracker
  description: Fetches recent Twitter mentions and logs results to Google Sheets.
  tags:
  - social-media
  - twitter
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: social-listening
    port: 8080
    tools:
    - name: track-brand-mentions
      description: Search Twitter mentions and log to Sheets.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      - name: since_date
        in: body
        type: string
        description: Start date YYYY-MM-DD.
      steps:
      - name: search-tweets
        type: call
        call: twitter.search-recent
        with:
          query: '{{query}}'
          start_time: '{{since_date}}T00:00:00Z'
      - name: log-results
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: usa_today_social
          row:
            query: '{{query}}'
            count: '{{search-tweets.meta.result_count}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets-search
      path: /tweets/search/recent
      operations:
      - name: search-recent
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: rows
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → twitter-brand-mention-tracker.yml

Orchestrates news media workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 10
  description: Orchestrates news media workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-010
      description: Orchestrates news media 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 News Media Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-10.yml

Orchestrates news media workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 4
  description: Orchestrates news media workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-004
      description: Orchestrates news media 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 News Media Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-4.yml

Retrieves news media operational data for workflow 12.

naftiko: '0.5'
info:
  label: News Media Data Query 12
  description: Retrieves news media operational data for workflow 12.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-12
      description: Query news media data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-12.yml

Retrieves news media operational data for workflow 6.

naftiko: '0.5'
info:
  label: News Media Data Query 6
  description: Retrieves news media operational data for workflow 6.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-6
      description: Query news media data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-6.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.usa-today.com/sales/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Retrieves LinkedIn company page analytics including followers and engagement.

naftiko: '0.5'
info:
  label: LinkedIn Page Analytics
  description: Retrieves LinkedIn company page analytics including followers and engagement.
  tags:
  - social-media
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: social-analytics
    port: 8080
    tools:
    - name: get-linkedin-analytics
      description: Fetch LinkedIn company page stats.
      inputParameters:
      - name: organization_id
        in: body
        type: string
        description: LinkedIn organization ID.
      call: linkedin.get-page-stats
      with:
        organization_id: '{{organization_id}}'
      outputParameters:
      - name: follower_count
        type: number
        mapping: $.firstDegreeSize
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: stats
      path: /networkSizes/{{organization_id}}?edgeType=CompanyFollowedByMember
      inputParameters:
      - name: organization_id
        in: path
      operations:
      - name: get-page-stats
        method: GET
Open in Framework → View in Fleet → linkedin-page-analytics.yml

Sets up an investigative report workspace by creating a shared Google Drive folder, a Confluence space, assigning tasks in Microsoft Planner, and notifying the investigative team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Investigative Report Collaboration Orchestrator
  description: Sets up an investigative report workspace by creating a shared Google Drive folder, a Confluence space, assigning tasks in Microsoft Planner, and notifying the investigative team in Microsoft Teams.
  tags:
  - publishing
  - collaboration
  - google-drive
  - confluence
  - microsoft-planner
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: investigative-ops
    port: 8080
    tools:
    - name: setup-investigation
      description: Create collaboration workspace for investigative reporting.
      inputParameters:
      - name: project_name
        in: body
        type: string
        description: Investigation project name.
      - name: lead_reporter
        in: body
        type: string
        description: Lead reporter email.
      steps:
      - name: create-drive-folder
        type: call
        call: gdrive.create-folder
        with:
          name: Investigation - {{project_name}}
          parent_id: investigations_root
      - name: create-confluence-space
        type: call
        call: confluence.create-space
        with:
          name: INV - {{project_name}}
          key: INV{{project_name}}
      - name: create-plan
        type: call
        call: planner.create-task
        with:
          title: 'Lead: {{project_name}}'
          assigned_to: '{{lead_reporter}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: investigative-team
          text: 'New investigation: {{project_name}}. Lead: {{lead_reporter}}. Drive: {{create-drive-folder.url}}'
  consumes:
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: folders
      path: /files
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://gannett.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: spaces
      path: /space
      operations:
      - name: create-space
        method: POST
  - type: http
    namespace: planner
    baseUri: https://graph.microsoft.com/v1.0/planner
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: tasks
      path: /tasks
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → investigative-report-collaboration-orchestrator.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Orchestrates news media workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 7
  description: Orchestrates news media workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-007
      description: Orchestrates news media 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 News Media Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-7.yml

Orchestrates news media workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 13
  description: Orchestrates news media workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-013
      description: Orchestrates news media 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 News Media Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-13.yml

Retrieves ADP payroll summary for a pay period.

naftiko: '0.5'
info:
  label: ADP Payroll Summary Lookup
  description: Retrieves ADP payroll summary for a pay period.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Fetch 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: gross_pay
        type: string
        mapping: $.payrollSummary.grossPay
      - name: net_pay
        type: string
        mapping: $.payrollSummary.netPay
  consumes:
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /payroll-summaries/{{pay_period}}
      inputParameters:
      - name: pay_period
        in: path
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-payroll-summary-lookup.yml

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.usa-today.com/monitoring/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: datadog
      path: /datadog/monitor/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-datadog
        method: GET
Open in Framework → View in Fleet → datadog-monitor-viewer.yml

Orchestrates news media workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 17
  description: Orchestrates news media workflow 17 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-017
      description: Orchestrates news media 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 News Media Workflow 17 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-17.yml

Retrieves news media operational data for workflow 3.

naftiko: '0.5'
info:
  label: News Media Data Query 3
  description: Retrieves news media operational data for workflow 3.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-3
      description: Query news media data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-3.yml

Searches for documents in Google Drive by name.

naftiko: '0.5'
info:
  label: Google Drive File Search
  description: Searches for documents in Google Drive by name.
  tags:
  - documents
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: drive-search
    port: 8080
    tools:
    - name: search-drive-files
      description: Search Google Drive files.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      call: gdrive.search-files
      with:
        q: name contains '{{query}}'
      outputParameters:
      - name: files
        type: array
        mapping: $.files
  consumes:
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: search-files
        method: GET
Open in Framework → View in Fleet → google-drive-file-search.yml

Identifies at-risk subscribers in Salesforce, sends targeted retention campaigns via MailChimp, creates retention offers in the subscription platform, and logs results in Google Sheets.

naftiko: '0.5'
info:
  label: Subscriber Churn Prevention Orchestrator
  description: Identifies at-risk subscribers in Salesforce, sends targeted retention campaigns via MailChimp, creates retention offers in the subscription platform, and logs results in Google Sheets.
  tags:
  - subscriptions
  - retention
  - salesforce
  - mailchimp
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: retention-ops
    port: 8080
    tools:
    - name: run-churn-prevention
      description: Identify at-risk subscribers and trigger retention campaigns.
      inputParameters:
      - name: risk_threshold
        in: body
        type: number
        description: Churn risk score threshold (0-100).
      steps:
      - name: get-at-risk
        type: call
        call: salesforce.query-subscribers
        with:
          query: SELECT Id, Email, Churn_Score__c FROM Contact WHERE Churn_Score__c > {{risk_threshold}}
      - name: send-retention
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: at_risk_subscribers
          subject: We miss you! Special offer inside
          template: retention_offer
      - name: log-results
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: retention_campaigns
          row:
            threshold: '{{risk_threshold}}'
            contacts_targeted: '{{get-at-risk.totalSize}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gannett.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-subscribers
        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
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: rows
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → subscriber-churn-prevention-orchestrator.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Orchestrates news media workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 2
  description: Orchestrates news media workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-002
      description: Orchestrates news media 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 News Media Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-2.yml

Orchestrates news media workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 16
  description: Orchestrates news media workflow 16 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-016
      description: Orchestrates news media 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 News Media Workflow 16 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-16.yml

Runs an analytics query against the Snowflake data warehouse.

naftiko: '0.5'
info:
  label: Snowflake Analytics Query
  description: Runs an analytics query against the Snowflake data warehouse.
  tags:
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-snowflake
      description: Runs an analytics query against the Snowflake data warehouse.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The snowflake analytics query identifier.
      call: analytics-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: analytics-api
    baseUri: https://api.usa-today.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: snowflake
      path: /snowflake/analytics/query/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-snowflake
        method: GET
Open in Framework → View in Fleet → snowflake-analytics-query.yml

Orchestrates news media workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 14
  description: Orchestrates news media workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-014
      description: Orchestrates news media 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 News Media Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-14.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → annual-compliance-certification-orchestrator.yml

Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.

naftiko: '0.5'
info:
  label: Disaster Recovery Test Orchestrator
  description: Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
  tags:
  - infrastructure
  - operations
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: run-disaster-recovery-test-orchestrator
      description: Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Disaster Recovery Test Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → disaster-recovery-test-orchestrator.yml

Retrieves search performance data from Google Search Console.

naftiko: '0.5'
info:
  label: Google Search Console Performance
  description: Retrieves search performance data from Google Search Console.
  tags:
  - seo
  - analytics
  - google-search-console
capability:
  exposes:
  - type: mcp
    namespace: seo-analytics
    port: 8080
    tools:
    - name: get-search-performance
      description: Fetch GSC performance data.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: Site URL property.
      - name: start_date
        in: body
        type: string
        description: Start date YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date YYYY-MM-DD.
      call: gsc.query-analytics
      with:
        site_url: '{{site_url}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: clicks
        type: number
        mapping: $.rows[0].clicks
      - name: impressions
        type: number
        mapping: $.rows[0].impressions
  consumes:
  - type: http
    namespace: gsc
    baseUri: https://www.googleapis.com/webmasters/v3
    authentication:
      type: bearer
      token: $secrets.google_search_console_token
    resources:
    - name: analytics
      path: /sites/{{site_url}}/searchAnalytics/query
      inputParameters:
      - name: site_url
        in: path
      operations:
      - name: query-analytics
        method: POST
Open in Framework → View in Fleet → google-search-console-performance.yml

Retrieves news media operational data for workflow 15.

naftiko: '0.5'
info:
  label: News Media Data Query 15
  description: Retrieves news media operational data for workflow 15.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-15
      description: Query news media data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-15.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Orchestrates news media workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 1
  description: Orchestrates news media workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-001
      description: Orchestrates news media 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 News Media Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-1.yml

Retrieves a WordPress post by ID, returning title, status, date, and URL.

naftiko: '0.5'
info:
  label: WordPress Post Lookup
  description: Retrieves a WordPress post by ID, returning title, status, date, and URL.
  tags:
  - publishing
  - wordpress
capability:
  exposes:
  - type: mcp
    namespace: cms-ops
    port: 8080
    tools:
    - name: get-post
      description: Fetch a WordPress post by ID.
      inputParameters:
      - name: post_id
        in: body
        type: string
        description: WordPress post ID.
      call: wordpress.get-post
      with:
        post_id: '{{post_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title.rendered
      - name: status
        type: string
        mapping: $.status
      - name: date
        type: string
        mapping: $.date
      - name: link
        type: string
        mapping: $.link
  consumes:
  - type: http
    namespace: wordpress
    baseUri: https://www.usatoday.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-post
        method: GET
Open in Framework → View in Fleet → wordpress-post-lookup.yml

Retrieves news media operational data for workflow 18.

naftiko: '0.5'
info:
  label: News Media Data Query 18
  description: Retrieves news media operational data for workflow 18.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-18
      description: Query news media data for workflow 18.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-18.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Retrieves Datadog monitor status.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Monitor Lookup
  description: Retrieves Datadog monitor status.
  tags:
  - monitoring
  - infrastructure
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-monitor-status
      description: Fetch Datadog monitor status.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Monitor ID.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: state
        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
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-monitor-lookup.yml

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome.

naftiko: '0.5'
info:
  label: Employee Onboarding Pipeline
  description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Orchestrate new hire onboarding across Workday, ServiceNow, SharePoint, 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 YYYY-MM-DD.
      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: 'Onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: hr_onboarding
          folder_path: Onboarding/{{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 Gannett/USA Today, {{get-employee.first_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: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gannett.service-now.com/api/now
    authentication:
      type: 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

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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.

naftiko: '0.5'
info:
  label: Marketing Campaign Performance Orchestrator
  description: Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
  tags:
  - marketing
  - analytics
  - finance
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: run-marketing-campaign-performance-orchestrator
      description: Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Marketing Campaign Performance Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → marketing-campaign-performance-orchestrator.yml

Orchestrates news media workflow 19 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 19
  description: Orchestrates news media workflow 19 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-019
      description: Orchestrates news media 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 News Media Workflow 19 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-19.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.usa-today.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Aggregates advertising revenue from Google Ads and Facebook Ads, reconciles with Salesforce bookings, and publishes the report to Looker Studio.

naftiko: '0.5'
info:
  label: Ad Revenue Reporting Orchestrator
  description: Aggregates advertising revenue from Google Ads and Facebook Ads, reconciles with Salesforce bookings, and publishes the report to Looker Studio.
  tags:
  - advertising
  - finance
  - google-ads
  - facebook
  - salesforce
  - looker-studio
capability:
  exposes:
  - type: mcp
    namespace: ad-revenue
    port: 8080
    tools:
    - name: generate-revenue-report
      description: Aggregate multi-platform ad revenue and refresh Looker Studio.
      inputParameters:
      - name: period
        in: body
        type: string
        description: Reporting period (e.g., '2024-Q1').
      steps:
      - name: get-google-revenue
        type: call
        call: googleads.get-account-revenue
        with:
          period: '{{period}}'
      - name: get-fb-revenue
        type: call
        call: meta.get-account-insights
        with:
          period: '{{period}}'
      - name: get-sf-bookings
        type: call
        call: salesforce.query-revenue
        with:
          period: '{{period}}'
      - name: refresh-report
        type: call
        call: lookerstudio.refresh-datasource
        with:
          datasource_id: ad_revenue_report
  consumes:
  - type: http
    namespace: googleads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: reports
      path: /customers/{{customer_id}}/reports
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-account-revenue
        method: GET
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: account-insights
      path: /act_{{ad_account_id}}/insights
      inputParameters:
      - name: ad_account_id
        in: path
      operations:
      - name: get-account-insights
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://gannett.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-revenue
        method: GET
  - type: http
    namespace: lookerstudio
    baseUri: https://datastudio.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_datastudio_token
    resources:
    - name: datasources
      path: /datasources/{{datasource_id}}/refresh
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: refresh-datasource
        method: POST
Open in Framework → View in Fleet → ad-revenue-reporting-orchestrator.yml

Retrieves Google Analytics page performance data for a specific article URL, returning pageviews, unique visitors, and average time on page.

naftiko: '0.5'
info:
  label: Google Analytics Article Performance Lookup
  description: Retrieves Google Analytics page performance data for a specific article URL, returning pageviews, unique visitors, and average time on page.
  tags:
  - analytics
  - publishing
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: content-analytics
    port: 8080
    tools:
    - name: get-article-metrics
      description: Fetch GA metrics for a specific article.
      inputParameters:
      - name: page_path
        in: body
        type: string
        description: Article URL path.
      - 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.get-report
      with:
        page_path: '{{page_path}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: pageviews
        type: number
        mapping: $.rows[0].pageviews
      - name: unique_visitors
        type: number
        mapping: $.rows[0].uniqueVisitors
      - name: avg_time_on_page
        type: string
        mapping: $.rows[0].avgTimeOnPage
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → google-analytics-article-performance-lookup.yml

Creates a Zoom webinar for live news events, promotes via MailChimp, posts on LinkedIn, and logs registrations in Google Sheets.

naftiko: '0.5'
info:
  label: Zoom Webinar Event Orchestrator
  description: Creates a Zoom webinar for live news events, promotes via MailChimp, posts on LinkedIn, and logs registrations in Google Sheets.
  tags:
  - events
  - publishing
  - zoom
  - mailchimp
  - linkedin
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: event-management
    port: 8080
    tools:
    - name: create-live-event
      description: Set up a Zoom webinar with promotion and tracking.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Webinar topic.
      - name: start_time
        in: body
        type: string
        description: Start time ISO 8601.
      - name: duration
        in: body
        type: number
        description: Duration in minutes.
      steps:
      - name: create-webinar
        type: call
        call: zoom.create-webinar
        with:
          topic: '{{topic}}'
          start_time: '{{start_time}}'
          duration: '{{duration}}'
      - name: send-promotion
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: usa_today_events
          subject: 'Join Live: {{topic}}'
          body: 'Register: {{create-webinar.registration_url}}'
      - name: post-linkedin
        type: call
        call: linkedin.create-post
        with:
          text: 'Join our live event: {{topic}}. Register: {{create-webinar.registration_url}}'
      - name: log-event
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: events_tracker
          row:
            topic: '{{topic}}'
            webinar_id: '{{create-webinar.id}}'
            url: '{{create-webinar.registration_url}}'
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: webinars
      path: /users/me/webinars
      operations:
      - name: create-webinar
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: posts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: rows
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → zoom-webinar-event-orchestrator.yml

Retrieves New Relic APM metrics.

naftiko: '0.5'
info:
  label: New Relic Application Performance
  description: Retrieves New Relic APM metrics.
  tags:
  - monitoring
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: apm-monitoring
    port: 8080
    tools:
    - name: get-app-performance
      description: Fetch New Relic APM metrics.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic app ID.
      call: newrelic.get-application
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: response_time
        type: number
        mapping: $.application.application_summary.response_time
      - name: error_rate
        type: number
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-application
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance.yml

Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.

naftiko: '0.5'
info:
  label: Quarterly Business Review Orchestrator
  description: Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
  tags:
  - analytics
  - business
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: run-quarterly-business-review-orchestrator
      description: Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Quarterly Business Review Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → quarterly-business-review-orchestrator.yml

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: '0.5'
info:
  label: Security Audit Orchestrator
  description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
  tags:
  - security
  - servicenow
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: run-security-audit-orchestrator
      description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The unique request identifier.
      steps:
      - name: step-1
        type: call
        call: primary-api.initiate
        with:
          request_id: '{{request_id}}'
      - name: step-2
        type: call
        call: secondary-api.process
        with:
          request_id: '{{request_id}}'
          data: '{{step-1.result}}'
      - name: notify
        type: call
        call: notification-api.send
        with:
          channel: operations
          message: Completed Security Audit Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Orchestrates news media workflow 22 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 22
  description: Orchestrates news media workflow 22 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-022
      description: Orchestrates news media 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 News Media Workflow 22 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-22.yml

Retrieves Cloudflare analytics for the USA Today zone.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Lookup
  description: Retrieves Cloudflare analytics for the USA Today zone.
  tags:
  - infrastructure
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cdn-ops
    port: 8080
    tools:
    - name: get-zone-analytics
      description: Fetch Cloudflare zone analytics.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: requests
        type: number
        mapping: $.result.totals.requests.all
      - name: bandwidth
        type: number
        mapping: $.result.totals.bandwidth.all
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: analytics
      path: /zones/{{zone_id}}/analytics/dashboard
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-performance-lookup.yml

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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → knowledge-base-refresh-orchestrator.yml

Creates a new incident in ServiceNow.

naftiko: '0.5'
info:
  label: ServiceNow Incident Creator
  description: Creates a new incident in ServiceNow.
  tags:
  - it
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it
    port: 8080
    tools:
    - name: get-servicenow
      description: Creates a new incident in ServiceNow.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The servicenow incident creator identifier.
      call: it-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: it-api
    baseUri: https://api.usa-today.com/it/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Retrieves news media operational data for workflow 21.

naftiko: '0.5'
info:
  label: News Media Data Query 21
  description: Retrieves news media operational data for workflow 21.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-21
      description: Query news media data for workflow 21.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-21.yml

Retrieves news media operational data for workflow 9.

naftiko: '0.5'
info:
  label: News Media Data Query 9
  description: Retrieves news media operational data for workflow 9.
  tags:
  - news
  - operations
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: get-data-9
      description: Query news media data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: news-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: news-api
    baseUri: https://api.usa-today.com/news-media/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-data-query-9.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: secondary
      path: /execute
      operations:
      - name: process
        method: POST
  - type: http
    namespace: notification-api
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /teams/notifications
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → api-lifecycle-management-orchestrator.yml

Retrieves Google Ads campaign performance metrics including impressions, clicks, and cost.

naftiko: '0.5'
info:
  label: Google Ads Campaign Performance Lookup
  description: Retrieves Google Ads campaign performance metrics including impressions, clicks, and cost.
  tags:
  - advertising
  - google-ads
capability:
  exposes:
  - type: mcp
    namespace: ad-performance
    port: 8080
    tools:
    - name: get-google-ads-metrics
      description: Fetch Google Ads campaign performance.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Google Ads campaign ID.
      - name: date_range
        in: body
        type: string
        description: Date range.
      call: googleads.get-campaign-metrics
      with:
        campaign_id: '{{campaign_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.metrics.impressions
      - name: clicks
        type: number
        mapping: $.metrics.clicks
      - name: cost
        type: string
        mapping: $.metrics.costMicros
  consumes:
  - type: http
    namespace: googleads
    baseUri: https://googleads.googleapis.com/v14
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/{{customer_id}}/campaigns/{{campaign_id}}
      inputParameters:
      - name: customer_id
        in: path
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-metrics
        method: GET
Open in Framework → View in Fleet → google-ads-campaign-performance-lookup.yml

Retrieves content syndication partner delivery status.

naftiko: '0.5'
info:
  label: Syndication Partner Status
  description: Retrieves content syndication partner delivery status.
  tags:
  - distribution
  - partnerships
capability:
  exposes:
  - type: mcp
    namespace: distribution
    port: 8080
    tools:
    - name: get-syndication
      description: Retrieves content syndication partner delivery status.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The syndication partner status identifier.
      call: distribution-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: distribution-api
    baseUri: https://api.usa-today.com/distribution/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: syndication
      path: /syndication/partner/status/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-syndication
        method: GET
Open in Framework → View in Fleet → syndication-partner-status.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 news media workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 8
  description: Orchestrates news media workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-008
      description: Orchestrates news media 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 News Media Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-8.yml

When a breaking news article is published, simultaneously pushes to Twitter, Facebook, and Instagram, and logs engagement metrics to Google Sheets.

naftiko: '0.5'
info:
  label: Breaking News Social Distribution Orchestrator
  description: When a breaking news article is published, simultaneously pushes to Twitter, Facebook, and Instagram, and logs engagement metrics to Google Sheets.
  tags:
  - publishing
  - social-media
  - twitter
  - facebook
  - instagram
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: social-distribution
    port: 8080
    tools:
    - name: distribute-breaking-news
      description: Push a breaking story across all social channels and log.
      inputParameters:
      - name: headline
        in: body
        type: string
        description: Article headline.
      - name: url
        in: body
        type: string
        description: Article URL.
      - name: image_url
        in: body
        type: string
        description: Featured image URL.
      steps:
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: 'BREAKING: {{headline}} {{url}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: 'BREAKING: {{headline}}'
          link: '{{url}}'
      - name: post-instagram
        type: call
        call: instagram.create-media
        with:
          caption: 'BREAKING: {{headline}} Link in bio.'
          image_url: '{{image_url}}'
      - name: log-distribution
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: social_distribution_log
          row:
            headline: '{{headline}}'
            url: '{{url}}'
            twitter_id: '{{post-twitter.id}}'
            fb_id: '{{post-facebook.id}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: posts
      path: /{{page_id}}/feed
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      inputParameters:
      - name: ig_user_id
        in: path
      operations:
      - name: create-media
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: rows
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → breaking-news-social-distribution-orchestrator.yml

Orchestrates news media workflow 20 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: News Media Workflow 20
  description: Orchestrates news media workflow 20 by coordinating across systems, validating data, and sending notifications.
  tags:
  - news
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: news
    port: 8080
    tools:
    - name: run-news-media-workflow-020
      description: Orchestrates news media 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 News Media Workflow 20 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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 → news-media-workflow-20.yml

When a subscriber upgrades their plan, updates the record in Salesforce, processes payment via Mastercard, and sends a welcome email via MailChimp.

naftiko: '0.5'
info:
  label: Subscription Management Orchestrator
  description: When a subscriber upgrades their plan, updates the record in Salesforce, processes payment via Mastercard, and sends a welcome email via MailChimp.
  tags:
  - subscriptions
  - salesforce
  - mastercard
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: subscription-ops
    port: 8080
    tools:
    - name: upgrade-subscription
      description: Process subscription upgrade across Salesforce, payment, and email.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID.
      - name: new_plan
        in: body
        type: string
        description: New subscription plan name.
      steps:
      - name: get-contact
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: update-subscription
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{contact_id}}'
          subscription_plan: '{{new_plan}}'
      - name: process-payment
        type: call
        call: mastercard.create-payment
        with:
          customer_id: '{{contact_id}}'
          plan: '{{new_plan}}'
      - name: send-welcome
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-contact.Email}}'
          template: subscription_upgrade
          merge_vars:
            first_name: '{{get-contact.FirstName}}'
            plan: '{{new_plan}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gannett.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: mastercard
    baseUri: https://api.mastercard.com/payments/v1
    authentication:
      type: bearer
      token: $secrets.mastercard_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: create-payment
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_transactional_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → subscription-management-orchestrator.yml

Retrieves active Dynatrace problems.

naftiko: '0.5'
info:
  label: Dynatrace Application Monitoring
  description: Retrieves active Dynatrace problems.
  tags:
  - monitoring
  - dynatrace
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-active-problems
      description: Fetch active problems from Dynatrace.
      inputParameters:
      - name: time_range
        in: body
        type: string
        description: Time range.
      call: dynatrace.get-problems
      with:
        relativeTime: '{{time_range}}'
      outputParameters:
      - name: total_count
        type: number
        mapping: $.totalCount
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://gannett.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: problems
      path: /problems
      operations:
      - name: get-problems
        method: GET
Open in Framework → View in Fleet → dynatrace-application-monitoring.yml

When a classified ad is submitted, creates the listing in WordPress, generates an invoice in Oracle E-Business Suite, and sends payment link via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Classified Ad Revenue Orchestrator
  description: When a classified ad is submitted, creates the listing in WordPress, generates an invoice in Oracle E-Business Suite, and sends payment link via Microsoft Outlook.
  tags:
  - advertising
  - classified
  - wordpress
  - oracle-e-business-suite
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: classified-ops
    port: 8080
    tools:
    - name: process-classified-ad
      description: Create classified listing, invoice, and send payment link.
      inputParameters:
      - name: ad_title
        in: body
        type: string
        description: Classified ad title.
      - name: ad_content
        in: body
        type: string
        description: Ad content.
      - name: advertiser_email
        in: body
        type: string
        description: Advertiser email.
      - name: price
        in: body
        type: string
        description: Ad price.
      steps:
      - name: create-listing
        type: call
        call: wordpress.create-post
        with:
          title: '{{ad_title}}'
          content: '{{ad_content}}'
          categories: classifieds
          status: publish
      - name: create-invoice
        type: call
        call: oracle-ebs.create-invoice
        with:
          customer_email: '{{advertiser_email}}'
          amount: '{{price}}'
          description: 'Classified ad: {{ad_title}}'
      - name: send-payment-link
        type: call
        call: outlook.send-mail
        with:
          to: '{{advertiser_email}}'
          subject: 'Invoice for classified ad: {{ad_title}}'
          body: 'Your ad is live at {{create-listing.link}}. Invoice: {{create-invoice.invoice_number}}. Pay: {{create-invoice.payment_url}}'
  consumes:
  - type: http
    namespace: wordpress
    baseUri: https://www.usatoday.com/wp-json/wp/v2
    authentication:
      type: bearer
      token: $secrets.wordpress_token
    resources:
    - name: posts
      path: /posts
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: oracle-ebs
    baseUri: https://gannett-ebs.gannett.com/webservices/rest/ar
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: invoices
      path: /invoices
      operations:
      - name: create-invoice
        method: POST
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → classified-ad-revenue-orchestrator.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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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

Checks available ad inventory by placement.

naftiko: '0.5'
info:
  label: Ad Inventory Availability
  description: Checks available ad inventory by placement.
  tags:
  - advertising
  - sales
capability:
  exposes:
  - type: mcp
    namespace: advertising
    port: 8080
    tools:
    - name: get-ad
      description: Checks available ad inventory by placement.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The ad inventory availability identifier.
      call: advertising-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: advertising-api
    baseUri: https://api.usa-today.com/advertising/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: ad
      path: /ad/inventory/availability/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-ad
        method: GET
Open in Framework → View in Fleet → ad-inventory-availability.yml

Retrieves a content page from the CMS.

naftiko: '0.5'
info:
  label: Content CMS Page Lookup
  description: Retrieves a content page from the CMS.
  tags:
  - editorial
  - content-management
capability:
  exposes:
  - type: mcp
    namespace: editorial
    port: 8080
    tools:
    - name: get-content
      description: Retrieves a content page from the CMS.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The content cms page lookup identifier.
      call: editorial-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: editorial-api
    baseUri: https://api.usa-today.com/editorial/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: content
      path: /content/cms/page/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-content
        method: GET
Open in Framework → View in Fleet → content-cms-page-lookup.yml

Creates editorial assignments in Microsoft Planner, notifies reporters via Microsoft Teams, and logs deadlines in Google Sheets.

naftiko: '0.5'
info:
  label: Editorial Calendar Orchestrator
  description: Creates editorial assignments in Microsoft Planner, notifies reporters via Microsoft Teams, and logs deadlines in Google Sheets.
  tags:
  - publishing
  - editorial
  - microsoft-planner
  - microsoft-teams
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: editorial-ops
    port: 8080
    tools:
    - name: create-assignment
      description: Create editorial assignment with Planner task, Teams notification, and Sheets log.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Story assignment title.
      - name: reporter_email
        in: body
        type: string
        description: Assigned reporter email.
      - name: due_date
        in: body
        type: string
        description: Due date YYYY-MM-DD.
      - name: section
        in: body
        type: string
        description: Newspaper section.
      steps:
      - name: create-task
        type: call
        call: planner.create-task
        with:
          title: '{{title}}'
          assigned_to: '{{reporter_email}}'
          due_date: '{{due_date}}'
          bucket: '{{section}}'
      - name: notify-reporter
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{reporter_email}}'
          text: 'New assignment: {{title}}. Due: {{due_date}}. Section: {{section}}.'
      - name: log-assignment
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: editorial_calendar
          row:
            title: '{{title}}'
            reporter: '{{reporter_email}}'
            due_date: '{{due_date}}'
            section: '{{section}}'
  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
  - 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: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: rows
      path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → editorial-calendar-orchestrator.yml

Retrieves MailChimp newsletter campaign statistics.

naftiko: '0.5'
info:
  label: MailChimp Newsletter Stats Lookup
  description: Retrieves MailChimp newsletter campaign statistics.
  tags:
  - marketing
  - email
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: email-marketing
    port: 8080
    tools:
    - name: get-campaign-stats
      description: Fetch MailChimp campaign statistics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: MailChimp campaign ID.
      call: mailchimp.get-campaign-report
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: open_rate
        type: number
        mapping: $.opens.open_rate
      - name: click_rate
        type: number
        mapping: $.clicks.click_rate
      - name: emails_sent
        type: number
        mapping: $.emails_sent
  consumes:
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: reports
      path: /reports/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-report
        method: GET
Open in Framework → View in Fleet → mailchimp-newsletter-stats-lookup.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.usa-today.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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.usa-today.com/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.usa-today.com/v2
    authentication:
      type: bearer
      token: $secrets.usa_today_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.usa-today.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.usa_today_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 media workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 1
  description: Orchestrates media workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-001
      description: Orchestrates media 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 Media Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-1.yml

Retrieves media operational data for workflow 15.

naftiko: '0.5'
info:
  label: Media Data Query 15
  description: Retrieves media operational data for workflow 15.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-15
      description: Query media data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-15.yml

Orchestrates media workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 14
  description: Orchestrates media workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-014
      description: Orchestrates media 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 Media Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-14.yml

Orchestrates media workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 16
  description: Orchestrates media workflow 16 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-016
      description: Orchestrates media 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 Media Workflow 16 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-16.yml

Orchestrates media workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 2
  description: Orchestrates media workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-002
      description: Orchestrates media 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 Media Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-2.yml

Retrieves media operational data for workflow 3.

naftiko: '0.5'
info:
  label: Media Data Query 3
  description: Retrieves media operational data for workflow 3.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-3
      description: Query media data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-3.yml

Orchestrates media workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 17
  description: Orchestrates media workflow 17 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-017
      description: Orchestrates media 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 Media Workflow 17 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-17.yml

When a new content release is proposed, creates an approval request in ServiceNow, notifies the legal team in Microsoft Teams for rights clearance, and updates the release calendar in Google Sheets.

naftiko: '0.5'
info:
  label: Release Approval Workflow
  description: When a new content release is proposed, creates an approval request in ServiceNow, notifies the legal team in Microsoft Teams for rights clearance, and updates the release calendar in Google Sheets.
  tags:
  - production
  - release-management
  - servicenow
  - microsoft-teams
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: release-management
    port: 8080
    tools:
    - name: submit-release-approval
      description: Given a title ID and proposed release date, create an approval request, notify legal, and update the release calendar.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content catalog title identifier.
      - name: release_date
        in: body
        type: string
        description: Proposed release date in YYYY-MM-DD format.
      - name: release_type
        in: body
        type: string
        description: Type of release (theatrical, streaming, home_video).
      steps:
      - name: create-approval
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'Release approval: {{title_id}} on {{release_date}}'
          type: normal
          category: content_release
          description: 'Release type: {{release_type}}. Title: {{title_id}}'
      - name: notify-legal
        type: call
        call: msteams.send-message
        with:
          channel_id: legal-clearance
          text: 'Release approval needed: {{title_id}} for {{release_type}} on {{release_date}}. ServiceNow: {{create-approval.number}}'
      - name: update-calendar
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: release_calendar
          range: Calendar!A:E
          values:
          - '{{title_id}}'
          - '{{release_date}}'
          - '{{release_type}}'
          - pending_approval
          - '{{create-approval.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://warnerbros.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-message
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → release-approval-workflow.yml

Purges Cloudflare CDN cache for specified URLs or zones to ensure fresh content delivery for streaming assets.

naftiko: '0.5'
info:
  label: Cloudflare CDN Cache Purge
  description: Purges Cloudflare CDN cache for specified URLs or zones to ensure fresh content delivery for streaming assets.
  tags:
  - infrastructure
  - cloudflare
  - cdn
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: cdn-ops
    port: 8080
    tools:
    - name: purge-cache
      description: Purge Cloudflare CDN cache for a given zone and URL patterns.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone identifier.
      - name: urls
        in: body
        type: array
        description: List of URLs to purge from cache.
      call: cloudflare.purge-cache
      with:
        zone_id: '{{zone_id}}'
        files: '{{urls}}'
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: zones
      path: /zones/{{zone_id}}/purge_cache
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: purge-cache
        method: POST
Open in Framework → View in Fleet → cloudflare-cdn-cache-purge.yml

Orchestrates media workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 13
  description: Orchestrates media workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-013
      description: Orchestrates media 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 Media Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-13.yml

Orchestrates media workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 7
  description: Orchestrates media workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-007
      description: Orchestrates media 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 Media Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-7.yml

When a BigCommerce order is placed for Warner Bros merchandise, syncs inventory in SAP, generates a shipping label via the fulfillment API, and sends order confirmation via SendGrid.

naftiko: '0.5'
info:
  label: Merchandise Fulfillment Orchestrator
  description: When a BigCommerce order is placed for Warner Bros merchandise, syncs inventory in SAP, generates a shipping label via the fulfillment API, and sends order confirmation via SendGrid.
  tags:
  - ecommerce
  - bigcommerce
  - sap
  - sendgrid
  - merchandise
capability:
  exposes:
  - type: mcp
    namespace: merchandise-fulfillment
    port: 8080
    tools:
    - name: fulfill-merchandise-order
      description: Given a BigCommerce order ID, sync inventory, create shipping label, and send confirmation email.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The BigCommerce order identifier.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: reserve-inventory
        type: call
        call: sap.reserve-material
        with:
          material_id: '{{get-order.product_sku}}'
          quantity: '{{get-order.quantity}}'
          plant: WB_MERCH_01
      - name: create-shipment
        type: call
        call: bigcommerce.create-shipment
        with:
          order_id: '{{order_id}}'
          tracking_number: '{{reserve-inventory.delivery_number}}'
      - name: send-confirmation
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-order.customer_email}}'
          template_id: order_confirmation
          dynamic_data:
            order_id: '{{order_id}}'
            tracking: '{{reserve-inventory.delivery_number}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
    authentication:
      type: apiKey
      key: $secrets.bigcommerce_token
    inputParameters:
    - name: store_hash
      in: path
      value: $secrets.bigcommerce_store_hash
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: shipments
      path: /orders/{{order_id}}/shipments
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-shipment
        method: POST
  - type: http
    namespace: sap
    baseUri: https://warnerbros-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: material-documents
      path: /A_MaterialDocumentHeader
      operations:
      - name: reserve-material
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → merchandise-fulfillment-orchestrator.yml

Retrieves media operational data for workflow 6.

naftiko: '0.5'
info:
  label: Media Data Query 6
  description: Retrieves media operational data for workflow 6.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-6
      description: Query media data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-6.yml

Retrieves media operational data for workflow 12.

naftiko: '0.5'
info:
  label: Media Data Query 12
  description: Retrieves media operational data for workflow 12.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-12
      description: Query media data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-12.yml

Orchestrates media workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 4
  description: Orchestrates media workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-004
      description: Orchestrates media 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 Media Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-4.yml

Orchestrates media workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 10
  description: Orchestrates media workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-010
      description: Orchestrates media 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 Media Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-10.yml

Pulls a streaming engagement report from Adobe Analytics for a given date range and report suite, returning page views, unique visitors, and average session duration.

naftiko: '0.5'
info:
  label: Adobe Analytics Report Fetch
  description: Pulls a streaming engagement report from Adobe Analytics for a given date range and report suite, returning page views, unique visitors, and average session duration.
  tags:
  - analytics
  - adobe-analytics
  - streaming
capability:
  exposes:
  - type: mcp
    namespace: digital-analytics
    port: 8080
    tools:
    - name: get-engagement-report
      description: Fetch an Adobe Analytics engagement report for a date range and report suite.
      inputParameters:
      - name: report_suite_id
        in: body
        type: string
        description: The Adobe Analytics report suite ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: adobe-analytics.get-report
      with:
        rsid: '{{report_suite_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: page_views
        type: integer
        mapping: $.report.totals.pageViews
      - name: unique_visitors
        type: integer
        mapping: $.report.totals.uniqueVisitors
      - name: avg_session_duration
        type: string
        mapping: $.report.totals.averageSessionDuration
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    inputParameters:
    - name: x-api-key
      in: header
      value: $secrets.adobe_api_key
    resources:
    - name: reports
      path: /{{report_suite_id}}/reports
      inputParameters:
      - name: report_suite_id
        in: path
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-report-fetch.yml

Orchestrates media workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 11
  description: Orchestrates media workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-011
      description: Orchestrates media 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 Media Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-11.yml

Orchestrates media workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 5
  description: Orchestrates media workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-005
      description: Orchestrates media 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 Media Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-5.yml

Retrieves ad campaign performance metrics.

naftiko: '0.5'
info:
  label: Ad Campaign Performance
  description: Retrieves ad campaign performance metrics.
  tags:
  - advertising
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: advertising
    port: 8080
    tools:
    - name: get-ad
      description: Retrieves ad campaign performance metrics.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The ad campaign performance identifier.
      call: advertising-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: advertising-api
    baseUri: https://api.warner-brothers.com/advertising/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: ad
      path: /ad/campaign/performance/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-ad
        method: GET
Open in Framework → View in Fleet → ad-campaign-performance.yml

When new content is submitted for review, runs an automated compliance check, logs results in ServiceNow, updates the content catalog status, and notifies the compliance team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Compliance Review Pipeline
  description: When new content is submitted for review, runs an automated compliance check, logs results in ServiceNow, updates the content catalog status, and notifies the compliance team in Microsoft Teams.
  tags:
  - compliance
  - content
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: content-compliance
    port: 8080
    tools:
    - name: submit-compliance-review
      description: Given a title ID and content type, run compliance checks, log results, and notify the team.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content catalog title identifier.
      - name: content_type
        in: body
        type: string
        description: Type of content (film, series, short, game).
      - name: target_rating
        in: body
        type: string
        description: Target content rating (G, PG, PG-13, R).
      steps:
      - name: run-check
        type: call
        call: compliance.check-content
        with:
          title_id: '{{title_id}}'
          content_type: '{{content_type}}'
          target_rating: '{{target_rating}}'
      - name: log-results
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Compliance review: {{title_id}}'
          category: content_compliance
          description: 'Content type: {{content_type}}. Target rating: {{target_rating}}. Status: {{run-check.status}}'
      - name: update-catalog
        type: call
        call: catalog.update-title
        with:
          title_id: '{{title_id}}'
          compliance_status: '{{run-check.status}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: content-compliance
          text: 'Compliance review for {{title_id}} ({{content_type}}): {{run-check.status}}. Target rating: {{target_rating}}. ServiceNow: {{log-results.number}}'
  consumes:
  - type: http
    namespace: compliance
    baseUri: https://api.warnerbros.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.compliance_api_token
    resources:
    - name: checks
      path: /content-checks
      operations:
      - name: check-content
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://warnerbros.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: catalog
    baseUri: https://api.warnerbros.com/content/v2
    authentication:
      type: bearer
      token: $secrets.content_catalog_token
    resources:
    - name: titles
      path: /titles/{{title_id}}
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: update-title
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → content-compliance-review-pipeline.yml

Retrieves engagement metrics for subscribers.

naftiko: '0.5'
info:
  label: Subscriber Engagement Report
  description: Retrieves engagement metrics for subscribers.
  tags:
  - media
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-subscriber
      description: Retrieves engagement metrics for subscribers.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The subscriber engagement report identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: subscriber
      path: /subscriber/engagement/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-subscriber
        method: GET
Open in Framework → View in Fleet → subscriber-engagement-report.yml

Triggers a Unity game build pipeline via Azure DevOps, monitors build status, and posts results to the game development Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Unity Build Pipeline Trigger
  description: Triggers a Unity game build pipeline via Azure DevOps, monitors build status, and posts results to the game development Microsoft Teams channel.
  tags:
  - gaming
  - unity
  - azure-devops
  - microsoft-teams
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: game-builds
    port: 8080
    tools:
    - name: trigger-game-build
      description: Given a Unity project name and branch, trigger an Azure DevOps build pipeline and notify the team on completion.
      inputParameters:
      - name: project_name
        in: body
        type: string
        description: The Unity project name.
      - name: branch
        in: body
        type: string
        description: The source branch to build from.
      - name: platform
        in: body
        type: string
        description: Target platform (e.g., PC, PS5, Xbox).
      steps:
      - name: trigger-build
        type: call
        call: azdevops.queue-build
        with:
          definition_name: '{{project_name}}-{{platform}}'
          source_branch: '{{branch}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: game-dev-builds
          text: 'Build queued for {{project_name}} on {{platform}} from {{branch}}. Build ID: {{trigger-build.build_id}}. Pipeline: {{trigger-build.url}}'
  consumes:
  - type: http
    namespace: azdevops
    baseUri: https://dev.azure.com/warnerbros
    authentication:
      type: basic
      username: ''
      password: $secrets.azdevops_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds?api-version=7.0
      inputParameters:
      - name: project
        in: path
      operations:
      - name: queue-build
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → unity-build-pipeline-trigger.yml

Retrieves Twitch channel streaming metrics including viewer count, follower count, and recent broadcast history for a given channel.

naftiko: '0.5'
info:
  label: Twitch Stream Metrics
  description: Retrieves Twitch channel streaming metrics including viewer count, follower count, and recent broadcast history for a given channel.
  tags:
  - streaming
  - twitch
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: twitch-analytics
    port: 8080
    tools:
    - name: get-stream-metrics
      description: Fetch Twitch channel metrics including current viewers, followers, and recent broadcasts.
      inputParameters:
      - name: broadcaster_id
        in: body
        type: string
        description: The Twitch broadcaster ID.
      call: twitch.get-channel
      with:
        broadcaster_id: '{{broadcaster_id}}'
      outputParameters:
      - name: viewer_count
        type: integer
        mapping: $.data[0].viewer_count
      - name: follower_count
        type: integer
        mapping: $.data[0].follower_total
      - name: is_live
        type: boolean
        mapping: $.data[0].is_live
  consumes:
  - type: http
    namespace: twitch
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_token
    inputParameters:
    - name: Client-Id
      in: header
      value: $secrets.twitch_client_id
    resources:
    - name: channels
      path: /channels?broadcaster_id={{broadcaster_id}}
      inputParameters:
      - name: broadcaster_id
        in: query
      operations:
      - name: get-channel
        method: GET
Open in Framework → View in Fleet → twitch-stream-metrics.yml

Triggers a Power BI dataset refresh for a given workspace and dataset, used to update executive dashboards with the latest streaming and financial data.

naftiko: '0.5'
info:
  label: Power BI Report Refresh
  description: Triggers a Power BI dataset refresh for a given workspace and dataset, used to update executive dashboards with the latest streaming and financial data.
  tags:
  - analytics
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-dataset
      description: Trigger a Power BI dataset refresh for a 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 to refresh.
      call: powerbi.trigger-refresh
      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: trigger-refresh
        method: POST
Open in Framework → View in Fleet → power-bi-report-refresh.yml

Queries Snowflake for subscriber churn signals, creates a Salesforce case for high-risk accounts, triggers a retention email via SendGrid, and posts a summary to Slack.

naftiko: '0.5'
info:
  label: Subscriber Churn Alert Pipeline
  description: Queries Snowflake for subscriber churn signals, creates a Salesforce case for high-risk accounts, triggers a retention email via SendGrid, and posts a summary to Slack.
  tags:
  - streaming
  - churn
  - snowflake
  - salesforce
  - sendgrid
  - slack
capability:
  exposes:
  - type: mcp
    namespace: subscriber-retention
    port: 8080
    tools:
    - name: process-churn-alert
      description: Given a subscriber ID flagged for churn risk, create a retention case, send a win-back email, and alert the team.
      inputParameters:
      - name: subscriber_id
        in: body
        type: string
        description: The subscriber account identifier.
      - name: risk_score
        in: body
        type: number
        description: The churn risk score (0-100).
      steps:
      - name: get-subscriber
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT email, plan_type, last_login, watch_hours_30d FROM subscribers.accounts WHERE subscriber_id = '{{subscriber_id}}'
          database: STREAMING_ANALYTICS
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Churn risk: {{subscriber_id}} (score: {{risk_score}})'
          priority: High
          description: 'Subscriber {{subscriber_id}} flagged with churn risk score {{risk_score}}. Plan: {{get-subscriber.plan_type}}. Last active: {{get-subscriber.last_login}}'
      - name: send-retention-email
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-subscriber.email}}'
          template_id: retention_winback_v2
          dynamic_data:
            subscriber_id: '{{subscriber_id}}'
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: subscriber-retention
          text: 'Churn alert: {{subscriber_id}} (risk: {{risk_score}}). Case: {{create-case.id}}. Retention email sent to {{get-subscriber.email}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://warnerbros.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://warnerbros.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: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → subscriber-churn-alert-pipeline.yml

Triggers a Databricks job to generate personalized content recommendations based on viewer behavior, stores results in Snowflake, and sends a summary to Slack.

naftiko: '0.5'
info:
  label: Databricks Content Recommendation Job
  description: Triggers a Databricks job to generate personalized content recommendations based on viewer behavior, stores results in Snowflake, and sends a summary to Slack.
  tags:
  - data
  - databricks
  - snowflake
  - slack
  - machine-learning
  - recommendations
capability:
  exposes:
  - type: mcp
    namespace: ml-recommendations
    port: 8080
    tools:
    - name: run-recommendation-job
      description: Given a model version and target segment, trigger the recommendation pipeline on Databricks and notify when complete.
      inputParameters:
      - name: model_version
        in: body
        type: string
        description: The recommendation model version identifier.
      - name: segment_id
        in: body
        type: string
        description: The target audience segment ID.
      steps:
      - name: trigger-job
        type: call
        call: databricks.run-job
        with:
          job_id: content_recommendations
          notebook_params:
            model_version: '{{model_version}}'
            segment_id: '{{segment_id}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: data-science
          text: 'Recommendation job triggered for segment {{segment_id}} with model {{model_version}}. Run ID: {{trigger-job.run_id}}'
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://warnerbros.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: slack
    baseUri: 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-content-recommendation-job.yml

Checks licensing status for content in a region.

naftiko: '0.5'
info:
  label: Content Licensing Status
  description: Checks licensing status for content in a region.
  tags:
  - media
  - licensing
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-content
      description: Checks licensing status for content in a region.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The content licensing status identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: content
      path: /content/licensing/status/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-content
        method: GET
Open in Framework → View in Fleet → content-licensing-status.yml

Posts a formatted message to a specified Slack channel, used for notifications and alerts across Warner Bros teams.

naftiko: '0.5'
info:
  label: Slack Channel Message Post
  description: Posts a formatted message to a specified Slack channel, used for notifications and alerts across Warner Bros teams.
  tags:
  - collaboration
  - slack
  - messaging
capability:
  exposes:
  - type: mcp
    namespace: messaging
    port: 8080
    tools:
    - name: post-slack-message
      description: Post a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel name or ID.
      - name: text
        in: body
        type: string
        description: The message text to post.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{text}}'
  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-post.yml

Queries Datadog for streaming platform health metrics including error rates, latency percentiles, and active user counts.

naftiko: '0.5'
info:
  label: Datadog Streaming Health Check
  description: Queries Datadog for streaming platform health metrics including error rates, latency percentiles, and active user counts.
  tags:
  - monitoring
  - datadog
  - streaming
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: platform-monitoring
    port: 8080
    tools:
    - name: get-streaming-health
      description: Fetch Datadog streaming platform health metrics for a given time window.
      inputParameters:
      - name: from_ts
        in: body
        type: integer
        description: Start timestamp in epoch seconds.
      - name: to_ts
        in: body
        type: integer
        description: End timestamp in epoch seconds.
      call: datadog.query-metrics
      with:
        query: avg:streaming.error_rate{env:production}
        from: '{{from_ts}}'
        to: '{{to_ts}}'
      outputParameters:
      - name: error_rate
        type: number
        mapping: $.series[0].pointlist[-1][1]
      - name: query_time
        type: string
        mapping: $.from_date
  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: metrics
      path: /query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-streaming-health-check.yml

Retrieves GitHub repository statistics including star count, fork count, open issues, and default branch for a given organization and repository.

naftiko: '0.5'
info:
  label: GitHub Repository Stats
  description: Retrieves GitHub repository statistics including star count, fork count, open issues, and default branch for a given organization and repository.
  tags:
  - engineering
  - github
  - devops
capability:
  exposes:
  - type: mcp
    namespace: source-control
    port: 8080
    tools:
    - name: get-repo-stats
      description: Fetch GitHub repository statistics for a given org and repo name.
      inputParameters:
      - name: org
        in: body
        type: string
        description: The GitHub organization name.
      - name: repo
        in: body
        type: string
        description: The repository name.
      call: github.get-repo
      with:
        org: '{{org}}'
        repo: '{{repo}}'
      outputParameters:
      - name: stars
        type: integer
        mapping: $.stargazers_count
      - name: forks
        type: integer
        mapping: $.forks_count
      - name: open_issues
        type: integer
        mapping: $.open_issues_count
      - name: default_branch
        type: string
        mapping: $.default_branch
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{org}}/{{repo}}
      inputParameters:
      - name: org
        in: path
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-stats.yml

Launches a social media campaign by creating posts across Instagram, Twitter, and Facebook via their APIs, logging the campaign in Salesforce Marketing Cloud, and tracking via Adobe Analytics.

naftiko: '0.5'
info:
  label: Social Media Campaign Orchestrator
  description: Launches a social media campaign by creating posts across Instagram, Twitter, and Facebook via their APIs, logging the campaign in Salesforce Marketing Cloud, and tracking via Adobe Analytics.
  tags:
  - marketing
  - social-media
  - instagram
  - twitter
  - facebook
  - salesforce-marketing-cloud
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: social-campaigns
    port: 8080
    tools:
    - name: launch-campaign
      description: Given campaign details, post content to Instagram, Twitter, and Facebook, register in Salesforce Marketing Cloud, and set up Adobe Analytics tracking.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The name of the marketing campaign.
      - name: content_text
        in: body
        type: string
        description: The post text content.
      - name: media_url
        in: body
        type: string
        description: URL of the media asset to attach.
      - name: campaign_id
        in: body
        type: string
        description: The Salesforce Marketing Cloud campaign ID.
      steps:
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: '{{content_text}}'
          media_url: '{{media_url}}'
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: '{{content_text}}'
          image_url: '{{media_url}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{content_text}}'
          link: '{{media_url}}'
      - name: register-campaign
        type: call
        call: sfmc.update-campaign
        with:
          campaign_id: '{{campaign_id}}'
          status: launched
          twitter_id: '{{post-twitter.id}}'
          instagram_id: '{{post-instagram.id}}'
      - name: setup-tracking
        type: call
        call: adobe-analytics.create-segment
        with:
          name: campaign-{{campaign_id}}
          campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_bearer_token
    resources:
    - name: tweets
      path: /tweets
      operations:
      - name: create-tweet
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_user_id}}/media
      inputParameters:
      - name: ig_user_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: feed
      path: /{{page_id}}/feed
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://warnerbros.rest.marketingcloudapis.com/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: update-campaign
        method: PATCH
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: segments
      path: /segments
      operations:
      - name: create-segment
        method: POST
Open in Framework → View in Fleet → social-media-campaign-orchestrator.yml

Queries New Relic for application performance metrics including response time, throughput, and error rate for a given application.

naftiko: '0.5'
info:
  label: New Relic APM Health Check
  description: Queries New Relic for application performance metrics including response time, throughput, and error rate for a given application.
  tags:
  - monitoring
  - new-relic
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: apm-monitoring
    port: 8080
    tools:
    - name: get-app-health
      description: Fetch New Relic application health metrics including response time, throughput, and error rate.
      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: number
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: number
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: number
        mapping: $.application.application_summary.error_rate
      - name: health_status
        type: string
        mapping: $.application.health_status
  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-application
        method: GET
Open in Framework → View in Fleet → new-relic-apm-health-check.yml

When a title is cleared for distribution, updates the content catalog, pushes metadata to YouTube, syncs rights information to Salesforce, and notifies the distribution team in Slack.

naftiko: '0.5'
info:
  label: Content Distribution Orchestrator
  description: When a title is cleared for distribution, updates the content catalog, pushes metadata to YouTube, syncs rights information to Salesforce, and notifies the distribution team in Slack.
  tags:
  - distribution
  - content
  - youtube
  - salesforce
  - slack
  - licensing
capability:
  exposes:
  - type: mcp
    namespace: content-distribution
    port: 8080
    tools:
    - name: distribute-title
      description: Given a title ID and distribution targets, update catalog status, push to YouTube, sync to Salesforce, and notify the team.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content catalog title identifier.
      - name: distribution_regions
        in: body
        type: string
        description: Comma-separated list of distribution region codes.
      - name: release_date
        in: body
        type: string
        description: Target release date in YYYY-MM-DD format.
      steps:
      - name: update-catalog
        type: call
        call: catalog.update-title
        with:
          title_id: '{{title_id}}'
          status: distributing
          regions: '{{distribution_regions}}'
      - name: push-youtube
        type: call
        call: youtube.update-video
        with:
          title_id: '{{title_id}}'
          publish_at: '{{release_date}}'
      - name: sync-salesforce
        type: call
        call: salesforce.update-opportunity
        with:
          title_id: '{{title_id}}'
          stage: Distribution
          close_date: '{{release_date}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: distribution-ops
          text: 'Title {{title_id}} cleared for distribution to {{distribution_regions}}. Release: {{release_date}}. YouTube: {{push-youtube.video_id}}'
  consumes:
  - type: http
    namespace: catalog
    baseUri: https://api.warnerbros.com/content/v2
    authentication:
      type: bearer
      token: $secrets.content_catalog_token
    resources:
    - name: titles
      path: /titles/{{title_id}}
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: update-title
        method: PATCH
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_oauth_token
    resources:
    - name: videos
      path: /videos?part=status
      operations:
      - name: update-video
        method: PUT
  - type: http
    namespace: salesforce
    baseUri: https://warnerbros.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: update-opportunity
        method: PATCH
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → content-distribution-orchestrator.yml

When VFX shots are completed, uploads assets to Box, updates the production tracker in Google Sheets, notifies the post-production team in Microsoft Teams, and logs delivery in ServiceNow.

naftiko: '0.5'
info:
  label: Post-Production VFX Handoff Orchestrator
  description: When VFX shots are completed, uploads assets to Box, updates the production tracker in Google Sheets, notifies the post-production team in Microsoft Teams, and logs delivery in ServiceNow.
  tags:
  - production
  - vfx
  - box
  - google-sheets
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: vfx-delivery
    port: 8080
    tools:
    - name: deliver-vfx-shots
      description: Given a production ID and shot list, upload to Box, update tracker, notify team, and log delivery.
      inputParameters:
      - name: production_id
        in: body
        type: string
        description: The production project identifier.
      - name: shot_count
        in: body
        type: integer
        description: Number of VFX shots being delivered.
      - name: vendor_name
        in: body
        type: string
        description: The VFX vendor name.
      - name: delivery_folder_url
        in: body
        type: string
        description: URL to the source delivery folder.
      steps:
      - name: create-box-folder
        type: call
        call: box.create-folder
        with:
          name: VFX_Delivery_{{production_id}}_{{vendor_name}}
          parent_id: '0'
      - name: update-tracker
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: vfx_production_tracker
          range: Deliveries!A:E
          values:
          - '{{production_id}}'
          - '{{vendor_name}}'
          - '{{shot_count}}'
          - delivered
          - '{{create-box-folder.url}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: post-production
          text: 'VFX delivery: {{shot_count}} shots from {{vendor_name}} for production {{production_id}}. Box: {{create-box-folder.url}}'
      - name: log-delivery
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'VFX delivery received: {{production_id}}'
          category: production_delivery
          description: '{{shot_count}} shots from {{vendor_name}}. Storage: {{create-box-folder.url}}'
  consumes:
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: folders
      path: /folders
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://warnerbros.service-now.com/api/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 → post-production-vfx-handoff-orchestrator.yml

Retrieves a document from Google Drive by file ID, returning metadata including name, owner, last modified date, and sharing permissions.

naftiko: '0.5'
info:
  label: Google Drive Document Retrieval
  description: Retrieves a document from Google Drive by file ID, returning metadata including name, owner, last modified date, and sharing permissions.
  tags:
  - collaboration
  - google-drive
  - documents
capability:
  exposes:
  - type: mcp
    namespace: document-mgmt
    port: 8080
    tools:
    - name: get-drive-file
      description: Fetch a Google Drive file's metadata by file ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: The Google Drive file identifier.
      call: gdrive.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: owner
        type: string
        mapping: $.owners[0].displayName
      - name: modified_time
        type: string
        mapping: $.modifiedTime
      - name: web_link
        type: string
        mapping: $.webViewLink
  consumes:
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files/{{file_id}}?fields=name,owners,modifiedTime,webViewLink
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → google-drive-document-retrieval.yml

Executes a viewership analytics query against Snowflake and returns aggregated streaming metrics for a given title and date range.

naftiko: '0.5'
info:
  label: Snowflake Viewership Query
  description: Executes a viewership analytics query against Snowflake and returns aggregated streaming metrics for a given title and date range.
  tags:
  - analytics
  - snowflake
  - streaming
  - data
capability:
  exposes:
  - type: mcp
    namespace: data-analytics
    port: 8080
    tools:
    - name: query-viewership
      description: Run a viewership analytics query on Snowflake for a title and date range.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content catalog title ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: snowflake.execute-query
      with:
        statement: SELECT title_id, SUM(view_minutes) as total_minutes, COUNT(DISTINCT user_id) as unique_viewers FROM streaming.viewership WHERE title_id = '{{title_id}}' AND view_date BETWEEN '{{start_date}}' AND '{{end_date}}' GROUP BY title_id
        database: STREAMING_ANALYTICS
        warehouse: ANALYTICS_WH
      outputParameters:
      - name: total_minutes
        type: integer
        mapping: $.data[0][1]
      - name: unique_viewers
        type: integer
        mapping: $.data[0][2]
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://warnerbros.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-viewership-query.yml

When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Adobe Creative Cloud licenses, sets up a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: '0.5'
info:
  label: Talent Onboarding Orchestrator
  description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Adobe Creative Cloud licenses, sets up a SharePoint folder, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - adobe-creative-cloud
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: onboard-talent
      description: Given a Workday employee ID and department, orchestrate the full onboarding sequence across ServiceNow, Adobe Creative Cloud, SharePoint, and Microsoft Teams.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: The 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: '{{employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
          assigned_group: IT_Onboarding
      - name: provision-creative-cloud
        type: call
        call: adobe.provision-license
        with:
          email: '{{get-employee.work_email}}'
          product: creative_cloud_all_apps
      - 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 Warner Bros, {{get-employee.first_name}}! Ticket: {{open-ticket.number}}. Adobe CC is provisioned. Docs: {{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://warnerbros.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: adobe
    baseUri: https://usermanagement.adobe.io/v2/usermanagement
    authentication:
      type: bearer
      token: $secrets.adobe_um_token
    resources:
    - name: licenses
      path: /action/{{org_id}}
      inputParameters:
      - name: org_id
        in: path
      operations:
      - name: provision-license
        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 → talent-onboarding-orchestrator.yml

Triggers an Informatica data quality job to validate content metadata completeness and accuracy across the content catalog.

naftiko: '0.5'
info:
  label: Informatica Data Quality Check
  description: Triggers an Informatica data quality job to validate content metadata completeness and accuracy across the content catalog.
  tags:
  - data
  - informatica
  - data-quality
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: run-quality-check
      description: Trigger an Informatica data quality job for a given dataset.
      inputParameters:
      - name: job_name
        in: body
        type: string
        description: The Informatica data quality job name.
      - name: dataset
        in: body
        type: string
        description: The target dataset to validate.
      call: informatica.run-job
      with:
        taskName: '{{job_name}}'
        parameters:
          dataset: '{{dataset}}'
  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
Open in Framework → View in Fleet → informatica-data-quality-check.yml

When an expense report is submitted in SAP Concur, validates the report, creates a matching entry in SAP S/4HANA, and notifies the finance team via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Sync
  description: When an expense report is submitted in SAP Concur, validates the report, creates a matching entry in SAP S/4HANA, and notifies the finance team via Microsoft Teams.
  tags:
  - finance
  - sap-concur
  - sap-s4hana
  - microsoft-teams
  - expense
capability:
  exposes:
  - type: mcp
    namespace: expense-management
    port: 8080
    tools:
    - name: sync-expense-report
      description: Given a Concur expense report ID, validate it, post to SAP S/4HANA, and notify finance.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report identifier.
      - name: 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: post-to-sap
        type: call
        call: sap.create-expense-entry
        with:
          amount: '{{get-report.total_amount}}'
          currency: '{{get-report.currency_code}}'
          cost_center: '{{get-report.cost_center}}'
          description: Concur Report {{report_id}}
      - name: notify-finance
        type: call
        call: msteams.send-message
        with:
          channel_id: finance-expenses
          text: 'Expense report {{report_id}} for {{get-report.total_amount}} {{get-report.currency_code}} posted to SAP. Document: {{post-to-sap.document_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: sap
    baseUri: https://warnerbros-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: journal-entries
      path: /A_JournalEntry
      operations:
      - name: create-expense-entry
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-report-sync.yml

Retrieves the current sprint status from Jira for a given project board, returning sprint name, progress, and remaining story points.

naftiko: '0.5'
info:
  label: Jira Sprint Status
  description: Retrieves the current sprint status from Jira for a given project board, returning sprint name, progress, and remaining story points.
  tags:
  - engineering
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: project-mgmt
    port: 8080
    tools:
    - name: get-sprint-status
      description: Fetch active sprint details from Jira for a given 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
      - name: state
        type: string
        mapping: $.values[0].state
  consumes:
  - type: http
    namespace: jira
    baseUri: https://warnerbros.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.yml

Orchestrates media workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Media Workflow 8
  description: Orchestrates media workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - media
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: run-media-workflow-008
      description: Orchestrates media 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 Media Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.warner-brothers.com/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.warner-brothers.com/v2
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-workflow-8.yml

Executes a Splunk search query against security logs and returns matching events, used for security incident investigation.

naftiko: '0.5'
info:
  label: Splunk Security Log Search
  description: Executes a Splunk search query against security logs and returns matching events, used for security incident investigation.
  tags:
  - security
  - splunk
  - logging
capability:
  exposes:
  - type: mcp
    namespace: security-logs
    port: 8080
    tools:
    - name: search-security-logs
      description: Run a Splunk search query against security logs for a given time range.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: The Splunk search query (SPL).
      - name: earliest_time
        in: body
        type: string
        description: Earliest time for the search (e.g., -24h).
      - name: latest_time
        in: body
        type: string
        description: Latest time for the search (e.g., now).
      call: splunk.create-search
      with:
        search: '{{search_query}}'
        earliest_time: '{{earliest_time}}'
        latest_time: '{{latest_time}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://warnerbros-splunk.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-search.yml

Retrieves media operational data for workflow 9.

naftiko: '0.5'
info:
  label: Media Data Query 9
  description: Retrieves media operational data for workflow 9.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-9
      description: Query media data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-9.yml

Retrieves Oracle Cloud infrastructure cost summary for a given compartment and time period.

naftiko: '0.5'
info:
  label: Oracle Cloud Infrastructure Cost
  description: Retrieves Oracle Cloud infrastructure cost summary for a given compartment and time period.
  tags:
  - cloud
  - oracle-cloud
  - finops
capability:
  exposes:
  - type: mcp
    namespace: cloud-cost
    port: 8080
    tools:
    - name: get-oci-cost
      description: Fetch Oracle Cloud cost summary for a compartment and date range.
      inputParameters:
      - name: compartment_id
        in: body
        type: string
        description: The Oracle Cloud compartment OCID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: oci.get-cost-summary
      with:
        compartment_id: '{{compartment_id}}'
        time_start: '{{start_date}}'
        time_end: '{{end_date}}'
      outputParameters:
      - name: total_cost
        type: number
        mapping: $.data.aggregatedCost
      - name: currency
        type: string
        mapping: $.data.currency
  consumes:
  - type: http
    namespace: oci
    baseUri: https://usageapi.us-ashburn-1.oci.oraclecloud.com/20200107
    authentication:
      type: bearer
      token: $secrets.oci_token
    resources:
    - name: usage
      path: /usage
      operations:
      - name: get-cost-summary
        method: POST
Open in Framework → View in Fleet → oracle-cloud-infrastructure-cost.yml

On new production greenlight in SAP, creates a Salesforce project record, provisions a SharePoint site for production documents, spins up an Autodesk Maya workspace, and notifies the production team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Production Orchestrator
  description: On new production greenlight in SAP, creates a Salesforce project record, provisions a SharePoint site for production documents, spins up an Autodesk Maya workspace, and notifies the production team via Microsoft Teams.
  tags:
  - production
  - content
  - sap
  - salesforce
  - sharepoint
  - autodesk-maya
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: launch-production
      description: Given a production ID and title, orchestrate project setup across SAP, Salesforce, SharePoint, Autodesk Maya, and Microsoft Teams.
      inputParameters:
      - name: production_id
        in: body
        type: string
        description: The SAP production project identifier.
      - name: production_title
        in: body
        type: string
        description: The title of the production.
      - name: lead_producer
        in: body
        type: string
        description: The Workday employee ID of the lead producer.
      steps:
      - name: create-project
        type: call
        call: salesforce.create-opportunity
        with:
          name: '{{production_title}}'
          stage: Production
          production_id: '{{production_id}}'
      - name: provision-site
        type: call
        call: sharepoint.create-site
        with:
          site_name: prod-{{production_id}}
          template: production_workspace
      - name: setup-maya
        type: call
        call: maya.create-workspace
        with:
          project_name: '{{production_title}}'
          storage_path: '{{provision-site.url}}/assets'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: production-launches
          text: 'New production launched: {{production_title}} ({{production_id}}). Salesforce: {{create-project.id}}, SharePoint: {{provision-site.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://warnerbros.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: sites
      path: /root/sites
      operations:
      - name: create-site
        method: POST
  - type: http
    namespace: maya
    baseUri: https://developer.api.autodesk.com/da/us-east/v3
    authentication:
      type: bearer
      token: $secrets.autodesk_token
    resources:
    - name: workspaces
      path: /workitems
      operations:
      - name: create-workspace
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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 → content-production-orchestrator.yml

When a production requests a sound stage, checks availability via the facilities API, creates a booking in ServiceNow, allocates budget in SAP, and confirms via Microsoft Teams.

naftiko: '0.5'
info:
  label: Studio Booking Orchestrator
  description: When a production requests a sound stage, checks availability via the facilities API, creates a booking in ServiceNow, allocates budget in SAP, and confirms via Microsoft Teams.
  tags:
  - production
  - facilities
  - servicenow
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: studio-facilities
    port: 8080
    tools:
    - name: book-sound-stage
      description: Given a production ID, requested dates, and stage preference, check availability, create booking, allocate budget, and confirm.
      inputParameters:
      - name: production_id
        in: body
        type: string
        description: The production project identifier.
      - name: stage_id
        in: body
        type: string
        description: The preferred sound stage identifier.
      - name: start_date
        in: body
        type: string
        description: Booking start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Booking end date in YYYY-MM-DD format.
      steps:
      - name: check-availability
        type: call
        call: facilities.get-stage-availability
        with:
          stage_id: '{{stage_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: create-booking
        type: call
        call: servicenow.create-request
        with:
          short_description: 'Sound stage booking: {{stage_id}} for {{production_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
          category: facilities_booking
      - name: allocate-budget
        type: call
        call: sap.create-cost-allocation
        with:
          cost_center: '{{production_id}}'
          amount: '{{check-availability.daily_rate}}'
          description: Stage {{stage_id}} booking {{start_date}} to {{end_date}}
      - name: confirm-booking
        type: call
        call: msteams.send-message
        with:
          channel_id: production-facilities
          text: 'Sound stage {{stage_id}} booked for {{production_id}} from {{start_date}} to {{end_date}}. ServiceNow: {{create-booking.number}}. Budget: {{allocate-budget.document_number}}'
  consumes:
  - type: http
    namespace: facilities
    baseUri: https://api.warnerbros.com/facilities/v1
    authentication:
      type: bearer
      token: $secrets.facilities_api_token
    resources:
    - name: stages
      path: /stages/{{stage_id}}/availability
      inputParameters:
      - name: stage_id
        in: path
      operations:
      - name: get-stage-availability
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://warnerbros.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: sap
    baseUri: https://warnerbros-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: cost-allocations
      path: /A_JournalEntry
      operations:
      - name: create-cost-allocation
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{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 → studio-booking-orchestrator.yml

Aggregates campaign performance from Google Analytics, Adobe Analytics, and Salesforce Marketing Cloud into a Google Sheets dashboard for marketing leadership.

naftiko: '0.5'
info:
  label: Marketing Campaign Performance Dashboard
  description: Aggregates campaign performance from Google Analytics, Adobe Analytics, and Salesforce Marketing Cloud into a Google Sheets dashboard for marketing leadership.
  tags:
  - marketing
  - google-analytics
  - adobe-analytics
  - salesforce-marketing-cloud
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: marketing-dashboard
    port: 8080
    tools:
    - name: build-campaign-dashboard
      description: Given a campaign ID and date range, aggregate metrics from Google Analytics, Adobe Analytics, and SFMC into a Google Sheets dashboard.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The marketing campaign identifier.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      steps:
      - name: get-ga-metrics
        type: call
        call: ga.get-report
        with:
          campaign_id: '{{campaign_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-adobe-metrics
        type: call
        call: adobe-analytics.get-report
        with:
          campaign_id: '{{campaign_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-sfmc-metrics
        type: call
        call: sfmc.get-campaign-stats
        with:
          campaign_id: '{{campaign_id}}'
      - name: write-dashboard
        type: call
        call: gsheets.update-range
        with:
          spreadsheet_id: marketing_dashboard
          range: Campaign_{{campaign_id}}!A1
          values:
          - - Source
            - Sessions
            - Conversions
          - - Google Analytics
            - '{{get-ga-metrics.sessions}}'
            - '{{get-ga-metrics.conversions}}'
          - - Adobe Analytics
            - '{{get-adobe-metrics.visits}}'
            - '{{get-adobe-metrics.conversions}}'
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://warnerbros.rest.marketingcloudapis.com/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign_id}}/stats
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-stats
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: values
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: update-range
        method: PUT
Open in Framework → View in Fleet → marketing-campaign-performance-dashboard.yml

Queries the content catalog API to retrieve metadata for a title including availability, ratings, and streaming platform distribution status.

naftiko: '0.5'
info:
  label: Streaming Content Catalog Lookup
  description: Queries the content catalog API to retrieve metadata for a title including availability, ratings, and streaming platform distribution status.
  tags:
  - streaming
  - content
  - catalog
capability:
  exposes:
  - type: mcp
    namespace: content-catalog
    port: 8080
    tools:
    - name: get-title-metadata
      description: Look up a streaming title by ID and return metadata including availability, ratings, genre, and distribution status.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The internal content catalog title identifier.
      call: catalog.get-title
      with:
        title_id: '{{title_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.data.title
      - name: availability
        type: string
        mapping: $.data.availability_status
      - name: rating
        type: string
        mapping: $.data.content_rating
      - name: platforms
        type: array
        mapping: $.data.distribution_platforms
  consumes:
  - type: http
    namespace: catalog
    baseUri: https://api.warnerbros.com/content/v2
    authentication:
      type: bearer
      token: $secrets.content_catalog_token
    resources:
    - name: titles
      path: /titles/{{title_id}}
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: get-title
        method: GET
Open in Framework → View in Fleet → streaming-content-catalog-lookup.yml

Retrieves viewership data for a content title.

naftiko: '0.5'
info:
  label: Content Viewership Report
  description: Retrieves viewership data for a content title.
  tags:
  - media
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-content
      description: Retrieves viewership data for a content title.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The content viewership report identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_api_token
    resources:
    - name: content
      path: /content/viewership/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-content
        method: GET
Open in Framework → View in Fleet → content-viewership-report.yml

When a talent contract approaches expiry, retrieves contract details from Salesforce, creates a renewal task in ServiceNow, generates a DocuSign envelope for signature, and notifies talent relations in Slack.

naftiko: '0.5'
info:
  label: Talent Contract Renewal Pipeline
  description: When a talent contract approaches expiry, retrieves contract details from Salesforce, creates a renewal task in ServiceNow, generates a DocuSign envelope for signature, and notifies talent relations in Slack.
  tags:
  - talent
  - licensing
  - salesforce
  - servicenow
  - slack
  - contracts
capability:
  exposes:
  - type: mcp
    namespace: talent-contracts
    port: 8080
    tools:
    - name: initiate-contract-renewal
      description: Given a Salesforce contract ID and talent name, create renewal task, prepare DocuSign, and notify team.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: The Salesforce contract record ID.
      - name: talent_name
        in: body
        type: string
        description: The name of the talent.
      - name: talent_email
        in: body
        type: string
        description: The talent's email address.
      steps:
      - name: get-contract
        type: call
        call: salesforce.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: create-renewal-task
        type: call
        call: servicenow.create-request
        with:
          short_description: 'Contract renewal: {{talent_name}}'
          category: talent_contracts
          description: 'Contract {{contract_id}} expires {{get-contract.end_date}}. Value: {{get-contract.amount}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: talent-relations
          text: 'Contract renewal initiated for {{talent_name}}. Expires: {{get-contract.end_date}}. ServiceNow: {{create-renewal-task.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://warnerbros.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contracts
      path: /sobjects/Contract/{{contract_id}}
      inputParameters:
      - name: contract_id
        in: path
      operations:
      - name: get-contract
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://warnerbros.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → talent-contract-renewal-pipeline.yml

Retrieves media operational data for workflow 18.

naftiko: '0.5'
info:
  label: Media Data Query 18
  description: Retrieves media operational data for workflow 18.
  tags:
  - media
  - operations
capability:
  exposes:
  - type: mcp
    namespace: media
    port: 8080
    tools:
    - name: get-data-18
      description: Query media data for workflow 18.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: media-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: media-api
    baseUri: https://api.warner-brothers.com/media/v1
    authentication:
      type: bearer
      token: $secrets.warner_brothers_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 → media-data-query-18.yml

When a potential IP infringement is detected, logs the case in Salesforce, creates a legal review task in ServiceNow, notifies the legal team in Microsoft Teams, and archives evidence to Amazon S3.

naftiko: '0.5'
info:
  label: IP Infringement Detection Workflow
  description: When a potential IP infringement is detected, logs the case in Salesforce, creates a legal review task in ServiceNow, notifies the legal team in Microsoft Teams, and archives evidence to Amazon S3.
  tags:
  - legal
  - ip-protection
  - salesforce
  - servicenow
  - microsoft-teams
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: ip-protection
    port: 8080
    tools:
    - name: report-infringement
      description: Given infringement details, create cases in Salesforce and ServiceNow, notify legal, and archive evidence.
      inputParameters:
      - name: title_id
        in: body
        type: string
        description: The content catalog title ID being infringed.
      - name: infringing_url
        in: body
        type: string
        description: URL where the infringement was detected.
      - name: evidence_file_url
        in: body
        type: string
        description: URL to the evidence screenshot or file.
      - name: severity
        in: body
        type: string
        description: Severity level (low, medium, high, critical).
      steps:
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'IP Infringement: {{title_id}}'
          priority: '{{severity}}'
          description: Infringement detected at {{infringing_url}} for title {{title_id}}
      - name: create-legal-task
        type: call
        call: servicenow.create-request
        with:
          short_description: 'Legal review: IP infringement {{title_id}}'
          category: legal_ip
          priority: '{{severity}}'
      - name: archive-evidence
        type: call
        call: s3.put-object
        with:
          bucket: wb-legal-evidence
          key: infringements/{{title_id}}/{{create-case.id}}
      - name: notify-legal
        type: call
        call: msteams.send-message
        with:
          channel_id: legal-ip-enforcement
          text: 'IP infringement reported for {{title_id}} at {{infringing_url}}. Severity: {{severity}}. Case: {{create-case.id}}. ServiceNow: {{create-legal-task.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://warnerbros.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://warnerbros.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: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: awsSigV4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
      region: us-east-1
    resources:
    - name: objects
      path: /{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{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 → ip-infringement-detection-workflow.yml

When a new licensing opportunity is created in Salesforce, retrieves title metadata from the content catalog, generates a deal summary in Google Sheets, and sends a Slack notification to the licensing team.

naftiko: '0.5'
info:
  label: Licensing Deal Pipeline
  description: When a new licensing opportunity is created in Salesforce, retrieves title metadata from the content catalog, generates a deal summary in Google Sheets, and sends a Slack notification to the licensing team.
  tags:
  - licensing
  - salesforce
  - google-sheets
  - slack
  - deals
capability:
  exposes:
  - type: mcp
    namespace: licensing
    port: 8080
    tools:
    - name: initiate-license-deal
      description: Given a Salesforce opportunity ID and title ID, fetch title metadata, create a deal summary spreadsheet, and notify the licensing team.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID for the licensing deal.
      - name: title_id
        in: body
        type: string
        description: The content catalog title ID being licensed.
      - name: licensee_name
        in: body
        type: string
        description: The name of the licensee organization.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: get-title
        type: call
        call: catalog.get-title
        with:
          title_id: '{{title_id}}'
      - name: create-summary
        type: call
        call: gsheets.create-spreadsheet
        with:
          title: 'License Deal: {{licensee_name}} - {{get-title.title}}'
          data:
            deal_value: '{{get-opportunity.amount}}'
            title: '{{get-title.title}}'
            licensee: '{{licensee_name}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: licensing-deals
          text: 'New licensing deal initiated: {{licensee_name}} for {{get-title.title}}. Value: {{get-opportunity.amount}}. Sheet: {{create-summary.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://warnerbros.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: catalog
    baseUri: https://api.warnerbros.com/content/v2
    authentication:
      type: bearer
      token: $secrets.content_catalog_token
    resources:
    - name: titles
      path: /titles/{{title_id}}
      inputParameters:
      - name: title_id
        in: path
      operations:
      - name: get-title
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets
      operations:
      - name: create-spreadsheet
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → licensing-deal-pipeline.yml

Areas — Total: 2166

  • .NET
  • 3D
  • 3D Graphics
  • A/B Testing
  • AI Agents
  • AI Applications
  • AI Governance
  • AI Ops
  • AI Platforms
  • AI Solutions
  • AI Technologies
  • AI Toolings
  • AI Tools
  • AJAX
  • API Design
  • API Development
  • API Gateways
  • API Integrations
  • API Management
  • API Securities
  • API Testing
  • Acceptance Testing
  • Access Controls
  • Access Management
  • Access Management Solutions
  • Accessibility
  • Account Management
  • Accountability
  • Accounting
  • Accounting Software
  • Accounting Systems
  • Accounts Payables
  • Accounts Receivables
  • Actionscripts
  • Active Directory
  • Ad Management
  • Ad Platforms
  • Ad Tags
  • Ad-teches
  • Administration
  • Administratives
  • Advertising
  • Advertising Platforms
  • Advertising Technologies
  • Agent Frameworks
  • Agentic AI
  • Agentic Solutions
  • Agentic Systems
  • Agentics
  • Agents
  • Alarm Systems
  • Alerting
  • Alerts
  • Algorithm Design
  • Algorithms
  • Ambassadors
  • Analysis
  • Analytics
  • Analytics Infrastructure
  • Androids
  • Animations
  • Annotations
  • Anomaly Detections
  • Anti-Money Launderings
  • Apache Portable Runtimes
  • App Store Deployments
  • Applicant Tracking Systems
  • Application Architectures
  • Application Deliveries
  • Application Development
  • Application Integrations
  • Application Lifecycle Management
  • Application Management
  • Application Monitoring
  • Application Performance Management
  • Application Platforms
  • Application Programming Interfaces
  • Application Securities
  • Application Servers
  • Applications
  • Architecture Design
  • Architecture Governance
  • Architecture Strategies
  • Architectures
  • Archives
  • Archiving
  • Arrays
  • Artemis
  • Artifact Management
  • Artifact Storage
  • Artificial Intelligence
  • Artificial Intelligence/Machine Learning
  • Assessments
  • Asset Inventories
  • Asset Management
  • Asset Managers
  • Asset Tracking
  • Assignments
  • Asynchronous
  • Asynchronous Communications
  • Attendance Tracking
  • Attendee Tracking
  • Audience Engagements
  • Audience Segmentations
  • Audience Targetings
  • Audio
  • Audit Processes
  • Audit Reports
  • Audit Systems
  • Audit Tools
  • Audit Trails
  • Audits
  • Australias
  • Authentications
  • Authoring Tools
  • Authorizations
  • Automated Monitoring Systems
  • Automated Testing
  • Automated Testing Frameworks
  • Automation
  • Automation Platforms
  • Automation Testing
  • Automation Toolings
  • Automls
  • Automotive
  • Autonomous Agents
  • Autoscalings
  • Awareness
  • B2B Marketing
  • BI
  • BPM
  • Backend Development
  • Backend Engineering
  • Backends
  • Background Checks
  • Backup And Recovery
  • Backups
  • Banking
  • Bashes
  • Behavioral Analysis
  • Benchmarkings
  • Benchmarks
  • Benefits Administration
  • Best Practices
  • Big Data
  • Billings
  • Biotechnologies
  • Blockchains
  • Bloggings
  • Booking Systems
  • Bookings
  • Border Controls
  • Bots
  • Bridges
  • Broadcast Technologies
  • Broadcastings
  • Browser Compatibilities
  • Browser Extensions
  • Browsers
  • Budgetings
  • Build Automation
  • Build Pipelines
  • Build Securities
  • Build Systems
  • Build Tools
  • Building Automation
  • Building Securities
  • Built Environments
  • Business
  • Business Alignments
  • Business Analysis
  • Business Analytics
  • Business Applications
  • Business Automation
  • Business Continuities
  • Business Intelligence
  • Business Logics
  • Business Management
  • Business Models
  • Business News
  • Business Operations
  • Business Plannings
  • Business Plans
  • Business Process
  • Business Process Management
  • Business Solutions
  • Business Strategies
  • Business Tools
  • Business Transformations
  • Business to Consumers
  • Business-to-Business
  • Buyer Engagements
  • CI
  • CI/CD Pipelines
  • Caches
  • Caching
  • Calendars
  • Cameras
  • Campaign Management
  • Capacity Management
  • Capital Markets
  • Career Development
  • Case Laws
  • Case Management
  • Cash Management
  • Cash Reconciliations
  • Catalog Management
  • Catalogs
  • Centralized Repositories
  • Certificates
  • Certifications
  • Change Data Captures
  • Change Management
  • Charting
  • Charts
  • Chatbots
  • Chats
  • Cities
  • Claims Management
  • Claims Management Systems
  • Classification
  • Clearings
  • Client Communications
  • Client Data
  • Client Experiences
  • Client Libraries
  • Client Management
  • Client Relations
  • Client Relationship Management
  • Client Reportings
  • Client Services
  • Client Solutions
  • Client-servers
  • Clients
  • Climate Changes
  • Climates
  • Cloud Access
  • Cloud Adoptions
  • Cloud Architectures
  • Cloud Computes
  • Cloud Computing
  • Cloud Computing Platforms
  • Cloud Connectivity
  • Cloud Data
  • Cloud Data Platforms
  • Cloud Databases
  • Cloud Deployments
  • Cloud Development
  • Cloud Engineering
  • Cloud Environments
  • Cloud Gamings
  • Cloud Infrastructure
  • Cloud Integrations
  • Cloud Migrations
  • Cloud Natives
  • Cloud Networking
  • Cloud Operations
  • Cloud Platforms
  • Cloud Securities
  • Cloud Security Best Practices
  • Cloud Security Controls
  • Cloud Security Frameworks
  • Cloud Security Posture Management
  • Cloud Security Posture Management (CSPM)
  • Cloud Services
  • Cloud Solutions
  • Cloud Spanners
  • Cloud Storage
  • Cloud Systems
  • Cloud Technologies
  • Cloud-Based
  • Cloud-Based Applications
  • Cloud-Based Data Platforms
  • Cloud-Based Infrastructure
  • Cloud-based Environments
  • Cloud-based Services
  • Cloud-based Solutions
  • Cloud-native Applications
  • Cloud-native Architectures
  • Cloud-native Design
  • Cloud-native Development
  • Cloud-native Services
  • Cloud-native Solutions
  • Clouds
  • Cluster Management
  • Clustering
  • Coals
  • Code Analysis
  • Code Assistants
  • Code Coverages
  • Code Generations
  • Code Management
  • Code Quality
  • Code Refactorings
  • Code Reuses
  • Code Reviews
  • Code Signings
  • Codes
  • Collaboration Tools
  • Collaborations
  • Collaborative Development
  • Collaterals
  • Collections
  • Command Lines
  • Commerce
  • Commercial Services
  • Commodities
  • Common Sense
  • Communication Tools
  • Communications
  • Communities
  • Community Driven
  • Community Engagements
  • Community Healths
  • Compatibilities
  • Compensation Management
  • Competitive Analyses
  • Competitive Analysis
  • Competitive Intelligence
  • Competitor Analysis
  • Compilations
  • Compilers
  • Complex Systems
  • Complexity Analysis
  • Compliance
  • Compliance Frameworks
  • Compliance Management
  • Compliance Management Programs
  • Compliance Managers
  • Compliance Monitoring
  • Compliance Oversights
  • Compliance Policies
  • Compliance Services
  • Compliance Technologies
  • Compliance Tools
  • Component Architectures
  • Component Frameworks
  • Component Libraries
  • Compressions
  • Computational Biologies
  • Computations
  • Computer Aided Design
  • Computer Aided Engineering
  • Computer Aided Manufacturing
  • Computer Applications
  • Computer Graphics
  • Computer Sciences
  • Computer Systems
  • Computer Visions
  • Computers
  • Computes
  • Computing
  • Concurrencies
  • Conferences
  • Conferencings
  • Configuration Management
  • Configuration Management Tools
  • Configurations
  • Connection Management
  • Connectivity
  • Connectors
  • Construction
  • Consultings
  • Consumer Behaviors
  • Consumer Electronics
  • Consumer Protection
  • Contact Centers
  • Contact Management
  • Contacts
  • Container Management
  • Container Orchestration
  • Container Securities
  • Containerization
  • Containerization Technologies
  • Containerized Applications
  • Containerized Deployments
  • Containerized Environments
  • Containerized Workloads
  • Containers
  • Content Analytics
  • Content Creations
  • Content Deliveries
  • Content Delivery Networks
  • Content Generations
  • Content Integrations
  • Content Management
  • Content Management Systems
  • Content Marketing
  • Content Organizations
  • Content Personalizations
  • Content Repositories
  • Content Sharing
  • Content Strategies
  • Contents
  • Contexts and Dependency Injections
  • Continuous Deliveries
  • Continuous Deployments
  • Continuous Improvements
  • Continuous Integration/Continuous Deployments
  • Continuous Integrations
  • Continuous Learning
  • Continuous Monitoring
  • Contract Management
  • Contributions
  • Control Methods
  • Control Planes
  • Control Systems
  • Controllers
  • Controls
  • Coordinates
  • Copywritings
  • Core Systems
  • Corporate Finances
  • Cost Accounting
  • Cost Containments
  • Cost Controls
  • Cost Engineering
  • Cost Management
  • Cost Optimizations
  • Country-Specific
  • Creative Productions
  • Creative Services
  • Creative Suites
  • Creative Tools
  • Credentials
  • Credit Applications
  • Credit Cards
  • Credit Controls
  • Credit Management
  • Credit Process
  • Credit Risks
  • Credit Valuation Adjustments
  • Crisis Management
  • Critical Thinkings
  • Cross Platforms
  • Cross-browser Compatibilities
  • Cs
  • Cultural Changes
  • Currencies
  • Custodial Services
  • Custodies
  • Custom Software
  • Custom Solutions
  • Customer Data
  • Customer Data Platforms
  • Customer Engagements
  • Customer Experiences
  • Customer Feedback
  • Customer Journeys
  • Customer Management
  • Customer Onboardings
  • Customer Relationship Management
  • Customer Satisfactions
  • Customer Segmentations
  • Customer Service
  • Customer Success
  • Customer Support
  • Customizations
  • Customs
  • Cyber Defenses
  • Cyber Governance
  • Cyber Risk Management
  • Cyber Securities
  • Cybersecurities
  • DNS, DHCP, and IP Address Management
  • Dashboards
  • Data
  • Data Access
  • Data Accessibility
  • Data Acquisition
  • Data Activations
  • Data Analysis
  • Data Analysis Techniques
  • Data Analysis Tools
  • Data Analysis Tools And Techniques
  • Data Analytics
  • Data Analytics Tools
  • Data Annotations
  • Data Architectures
  • Data As A Services
  • Data Blendings
  • Data Capabilities
  • Data Captures
  • Data Catalogs
  • Data Center Operations
  • Data Center Services
  • Data Centers
  • Data Classification
  • Data Cleanings
  • Data Cleansing
  • Data Collections
  • Data Conversions
  • Data Cores
  • Data Dashboards
  • Data Deletions
  • Data Discoveries
  • Data Distributions
  • Data Encryptions
  • Data Engineering
  • Data Engines
  • Data Enrichments
  • Data Entries
  • Data Exchanges
  • Data Explorations
  • Data Extractions
  • Data Fabrics
  • Data Factories
  • Data Flows
  • Data Foundations
  • Data Governance
  • Data Governance Frameworks
  • Data Governance Policies
  • Data Governance Tools
  • Data Handling
  • Data Infrastructure
  • Data Ingestions
  • Data Insights
  • Data Integrations
  • Data Integrity
  • Data Intelligence
  • Data Interchange
  • Data Interpretations
  • Data Labelings
  • Data Lakes
  • Data Licensings
  • Data Lifecycle
  • Data Lifecycle Management
  • Data Lineages
  • Data Loadings
  • Data Management
  • Data Management Frameworks
  • Data Management Platforms
  • Data Management Systems
  • Data Management Tools
  • Data Manipulations
  • Data Mappings
  • Data Marts
  • Data Migrations
  • Data Minimizations
  • Data Mining
  • Data Monetizations
  • Data Monitoring
  • Data Movements
  • Data Normalizations
  • Data Observability
  • Data Operations
  • Data Orchestration
  • Data Ownerships
  • Data Parsings
  • Data Pipelines
  • Data Platforms
  • Data Preparations
  • Data Privacies
  • Data Privacy Rules
  • Data Processes
  • Data Processing
  • Data Processing Frameworks
  • Data Products
  • Data Profilings
  • Data Protection
  • Data Providers
  • Data Publishings
  • Data Quality
  • Data Quality Checks
  • Data Quality Frameworks
  • Data Quality Management
  • Data Reconciliations
  • Data Reportings
  • Data Repositories
  • Data Retentions
  • Data Retrievals
  • Data Science Libraries
  • Data Science Models
  • Data Science Techniques
  • Data Sciences
  • Data Securities
  • Data Security And Privacies
  • Data Services
  • Data Sharing
  • Data Stacks
  • Data Stewardships
  • Data Storage
  • Data Storage Systems
  • Data Storytellings
  • Data Strategies
  • Data Streamings
  • Data Structures
  • Data Synchronizations
  • Data Systems
  • Data Technologies
  • Data Tools
  • Data Tracking
  • Data Transfers
  • Data Transformations
  • Data Transmissions
  • Data Validation
  • Data Visualisations
  • Data Visualization Platforms
  • Data Visualization Software
  • Data Visualization Tools
  • Data Visualizations
  • Data Warehouses
  • Data Warehousing
  • Data Wranglings
  • Data and Analytics
  • Data-Driven
  • Data-Informed Decision Making
  • Data-driven Decision Making
  • Data-driven Initiatives
  • Data-driven Insights
  • Database Administration
  • Database Architectures
  • Database Design
  • Database Management
  • Database Optimizations
  • Database Queries
  • Database Systems
  • Database Technologies
  • Database Tuning
  • Databases
  • Debuggings
  • Decentralized
  • Decentralized Autonomous Organizations
  • Decision Making
  • Decision Sciences
  • Decision Support
  • Deep Learning
  • Defis
  • Deliveries
  • Dependencies
  • Dependency Management
  • Dependency Mappings
  • Dependency Tracking
  • Deployment Automation
  • Deployment Infrastructure
  • Deployment Pipelines
  • Deployment Plannings
  • Deployment Practices
  • Deployment Strategies
  • Deployment Tools
  • Deployments
  • Derbies
  • Design
  • Design Guidelines
  • Design Principles
  • Design Reviews
  • Design Software
  • Design Systems
  • Design Thinkings
  • Design Tools
  • Design Validation
  • Desktop Virtualizations
  • Desktops
  • DevOps Practices
  • Developer Experiences
  • Developer Portals
  • Developer Productivity Tools
  • Developer Tools
  • Development
  • Development Lifecycle
  • Development Platforms
  • Development Practices
  • Development Process
  • Development Tools
  • Device Management
  • Diagnostic Tools
  • Diagnostics
  • Diagrammings
  • Digital Ads
  • Digital Advertising
  • Digital Arts
  • Digital Assets
  • Digital Channels
  • Digital Commerce
  • Digital Contents
  • Digital Distributions
  • Digital Engagements
  • Digital Experiences
  • Digital Marketing
  • Digital Marketing Technologies
  • Digital Media
  • Digital Operations
  • Digital Products
  • Digital Publishings
  • Digital Services
  • Digital Solutions
  • Digital Storytellings
  • Digital Strategies
  • Digital Systems
  • Digital Technologies
  • Digital Tools
  • Digital Transformations
  • Digital Wallets
  • Digitals
  • Digitizations
  • Directed Acyclic Graphs
  • Directory
  • Directory Services
  • Disaster Recovery
  • Discontinued
  • Distributed
  • Distributed Applications
  • Distributed Computing
  • Distributed Data Processing
  • Distributed Databases
  • Distributed Systems
  • Distributed Tracing
  • Distributed Trainings
  • Distribution Platforms
  • Distribution Systems
  • Distributions
  • Document Creations
  • Document Management
  • Document Management Systems
  • Document Object Models
  • Documentaries
  • Documentations
  • Documents
  • Drift Detections
  • Due Diligences
  • Dynamic Application Security Testing
  • Dynamic Contents
  • Dynamic Pricings
  • Dynamics
  • E-commerces
  • E-learnings
  • E-mails
  • E-procurements
  • ERP
  • ESB
  • ESG Reportings
  • Ecommerces
  • Econometrics
  • Economic Analysis
  • Economic Data
  • Economics
  • Ecosystems
  • Edge Computing
  • Ediscoveries
  • Educational Software
  • Educations
  • Efficiencies
  • Efficiency Optimizations
  • Elections
  • Electric Vehicles
  • Electrical Infrastructure
  • Electronic Communications
  • Electronic Data Interchange
  • Electronic Invoicings
  • Electronics
  • Email Marketing
  • Emails
  • Embedded Systems
  • Embeddings
  • Emergency Responses
  • Employee Benefits
  • Employee Development
  • Employee Engagements
  • Employee Experiences
  • Employment
  • Enablement
  • Encryptions
  • End To End
  • End-to-end Testing
  • Endpoint Management
  • Endpoint Securities
  • Energies
  • Energy Efficiencies
  • Energy Generations
  • Engineering
  • Enterprise Applications
  • Enterprise Architectures
  • Enterprise Automation
  • Enterprise Content Management
  • Enterprise Data
  • Enterprise IT
  • Enterprise Integrations
  • Enterprise Performance Management
  • Enterprise Risk Management
  • Enterprise Risks
  • Enterprise Securities
  • Enterprise Software
  • Enterprise Solutions
  • Enterprise Systems
  • Enterprise Technologies
  • Enterprises
  • Entertainments
  • Entity Data
  • Entity Resolutions
  • Entrepreneurships
  • Environment Management
  • Equipments
  • Equities
  • Error Handling
  • Estimations
  • Ethics
  • Evaluation Frameworks
  • Evaluations
  • Event Driven
  • Event Management
  • Event Marketing
  • Event Plannings
  • Event Processing
  • Event Streamings
  • Event Technologies
  • Event-driven Systems
  • Events
  • Examples
  • Excels
  • Executions
  • Executive Reportings
  • Expense Management
  • Experiment Design
  • Experimentations
  • Exploitations
  • Exploratory Data Analysis
  • Extended Detection and Responses
  • Extensions
  • External Services
  • External Systems
  • Extract Transform Loads
  • Facilities Management
  • Fault Tolerances
  • Fault Tolerants
  • Feature Engineering
  • Feature Enhancements
  • Feature Stores
  • Federations
  • Feedback
  • File Sharing
  • File Transfers
  • Filing Systems
  • Filmmakings
  • Finances
  • Financial Accounting
  • Financial Analysis
  • Financial Analytics
  • Financial Compliances
  • Financial Controls
  • Financial Crimes
  • Financial Data
  • Financial Engineering
  • Financial Instruments
  • Financial Management
  • Financial Modeling
  • Financial Models
  • Financial Operations
  • Financial Plannings
  • Financial Policies
  • Financial Reportings
  • Financial Researches
  • Financial Risk Management
  • Financial Securities
  • Financial Services
  • Financial Software
  • Financial Systems
  • Financial Technologies
  • Fine-tunings
  • Fintech
  • Firewalls
  • Firmwares
  • First-Party Data
  • Flashes
  • Flexibilities
  • Flexible Workings
  • Flinks
  • Floor Plannings
  • Food Safety
  • Forecasting
  • Forecasting Models
  • Foreign Exchanges
  • Forexes
  • Forge
  • Formatting Objects Processors
  • Forms
  • Foundations
  • Frameworks
  • Fraud Detection Tools
  • Fraud Detections
  • Fraud Preventions
  • Frenches
  • Front-ends
  • Frontend Development
  • Frontend Frameworks
  • Frontends
  • Full Stack Development
  • Full Stacks
  • Functional Testing
  • Functions
  • Futures
  • Game Developers
  • Game Development
  • Game Engines
  • Gamings
  • Gateways
  • General Ledger Systems
  • General Ledgers
  • Generative AI
  • Generative Models
  • Geographies
  • Geolocations
  • Geospatials
  • GitHub Copilots
  • Global Markets
  • Global Positioning Systems
  • Globalizations
  • Goal Settings
  • Google Cloud Functions
  • Governance
  • Governance Frameworks
  • Governance Tools
  • Government
  • Government Policies
  • Government Relations
  • Graph Databases
  • Graphic Design
  • Graphical User Interfaces
  • Graphics
  • Graphics Processing Units
  • Graphings
  • Graphs
  • Green Buildings
  • Guest Services
  • HCM
  • HR Management
  • HR Systems
  • HR Tech
  • HR Technologies
  • Hadoop Distributed File Systems
  • Hardenings
  • Hardware
  • Hbases
  • Healthcare
  • Heating, Ventilation, and Air Conditionings
  • Help Desks
  • High Availabilities
  • High Performance Computing
  • High Performances
  • High Throughputs
  • Hirings
  • Hospitality
  • Hosting
  • Human Factors
  • Human Resources
  • Human-Centered Design
  • Hybrid Clouds
  • Hypervisors
  • Hypothesis Testing
  • IT Management
  • IT Operations
  • IT Plannings
  • IT Project Management
  • IT Risks
  • IT Service Management
  • IT Strategies
  • IT and Operational Risks
  • Ideas
  • Ideations
  • Identities
  • Identity And Access Management
  • Identity Management
  • Illuminations
  • Image Editings
  • Implementations
  • Incident Management
  • Incident Management Systems
  • Incident Management Tools
  • Incident Response Management
  • Incident Responses
  • Inclusive Design
  • Incremental Processing
  • Incubation
  • Indexings
  • Industrial Automation
  • Industrial Engineering
  • Industrial Equipments
  • Inferences
  • Informatics
  • Information Architectures
  • Information Design
  • Information Governance
  • Information Management
  • Information Retrievals
  • Information Securities
  • Information Security Frameworks
  • Information Systems
  • Information Technologies
  • Infrastructure
  • Infrastructure As Codes
  • Infrastructure Components
  • Infrastructure Improvements
  • Infrastructure Management
  • Infrastructure Securities
  • Infrastructure Testing
  • Innovation
  • Insights
  • Inspections
  • Institutional Finances
  • Instrumentations
  • Insurances
  • Integrated Development Environments
  • Integrated Solutions
  • Integration Frameworks
  • Integration Platforms
  • Integration Strategies
  • Integration Testing
  • Integration Tests
  • Integrations
  • Integrity
  • Intellectual Properties
  • Intelligence
  • Intelligent Systems
  • Interactive Contents
  • Interactive Media
  • Interactive Prototypes
  • Interactive Voice Responses
  • Interactives
  • Interface Design
  • Interfaces
  • Internal Applications
  • Internal Audits
  • Internal Communications
  • Internal Control Frameworks
  • Internal Controls
  • Internal Databases
  • Internal Networks
  • Internal Platforms
  • Internal Reporting Tools
  • Internal Systems
  • Internal Tools
  • International Banking
  • International Markets
  • International Relations
  • International Trades
  • Internationalizations
  • Internet
  • Internet Applications
  • Internet Technologies
  • Internet of Things
  • Interoperabilities
  • Intranets
  • Intrusion Detection Systems
  • Intrusion Detections
  • Inventory Management
  • Investment Analysis
  • Investment Banking
  • Investments
  • Investor Relations
  • Invoice Processing
  • Isolations
  • Issue Tracking
  • Iterative Development
  • Ivies
  • Java Virtual Machines
  • Job Boards
  • Job Scheduling
  • Journalism
  • Journey Design
  • Kernels
  • Key Management
  • Key Metrics
  • Key Value Stores
  • Key Values
  • Knowledge Bases
  • Knowledge Graphs
  • Knowledge Management
  • Knowledge Representations
  • Knowledge Sharing
  • LLM
  • Large Data Sets
  • Large Datasets
  • Large Distributed Systems
  • Large Language Models
  • Large-scale Distributed Systems
  • Launch Strategies
  • Law Enforcements
  • Layer 2S
  • Lead Generations
  • Lead Management
  • Leaderships
  • Learning
  • Learning And Development
  • Learning Management
  • Learning Technologies
  • Ledgers
  • Legacy Systems
  • Legal
  • Legal Compliances
  • Legal Frameworks
  • Legal Holds
  • Legal Researches
  • Legal Tech
  • Legal Technologies
  • Lendings
  • Lessons Learned
  • Libraries
  • License Management
  • Licensings
  • Lifecycle Management
  • Lightings
  • Linear Algebras
  • Liquidity Management
  • Live Chats
  • Live Data
  • Live Streamings
  • Live TV
  • Load Balancers
  • Load Balancings
  • Load Testing
  • Localization Workflows
  • Localizations
  • Location Services
  • Log Analysis
  • Log Analysis Tools
  • Log Analytics
  • Log Management
  • Logging
  • Logistic Regressions
  • Logistics
  • Low Latencies
  • Low-Code Platforms
  • Lucenes
  • Lunar Missions
  • 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
  • Machinings
  • Mails
  • Maintenance
  • Major Incident Management
  • Managed Services
  • Management
  • Management Accounting
  • Management Information
  • Management Software
  • Management Systems
  • Management Tools
  • Manual Processes
  • Manual Testing
  • Manufacturing
  • Mappings
  • Market Analysis
  • Market Coverages
  • Market Data
  • Market Intelligence
  • Market Researches
  • Marketing
  • Marketing Analytics
  • Marketing Automation
  • Marketing Platforms
  • Marketing Strategies
  • Marketing Technologies
  • Marketing Tools
  • Marketplace Platforms
  • Marketplaces
  • Markets
  • Massively Parallel Processing
  • Master Data
  • Master Data Management
  • Material Handling
  • Mathematical Modeling
  • Mathematics
  • Matrixes
  • Measurements
  • Mechanical Systems
  • Media
  • Media Contents
  • Media Deliveries
  • Media Encodings
  • Media Management
  • Media Monitoring
  • Media Productions
  • Mediations
  • Medical Records
  • Meeting Management
  • Meetings
  • Memory Management
  • Mental Healths
  • Mentoring
  • Mergers And Acquisitions
  • Meridians
  • Message Queues
  • Messaging
  • Messaging Infrastructure
  • Messaging Platforms
  • Messaging Systems
  • Metadata
  • Metadata Management
  • Metrics
  • Micro-services
  • Microfinances
  • Microservices
  • Microsoft Access
  • Middlewares
  • Migration Plannings
  • Migrations
  • Milestone Tracking
  • Mission Critical
  • Mobile Applications
  • Mobile Apps
  • Mobile Development
  • Mobile Devices
  • Mobile Payments
  • Mobile Technologies
  • Mobile Testing
  • Mobiles
  • Mocks
  • Model Adaptations
  • Model Architectures
  • Model Compressions
  • Model Context Protocols
  • Model Context Protocols (MCP)
  • Model Deployments
  • Model Development
  • Model Evaluations
  • Model Fine-tunings
  • Model Integrity
  • Model Lifecycle Management
  • Model Management
  • Model Monitoring
  • Model Observability
  • Model Optimizations
  • Model Performance
  • Model Retrainings
  • Model Servings
  • Model Testing
  • Model Trainings
  • Model Versionings
  • Modeling
  • Modeling Tools
  • Modernizations
  • Modularity
  • Monetizations
  • Monitoring
  • Monitoring And Alerting Frameworks
  • Monitoring Tools
  • Monte Carloes
  • Multi-Factor Authentications
  • Multi-channels
  • Multi-platforms
  • Multi-regions
  • Multimedia Platforms
  • Multimedias
  • Multimodals
  • Multiplatforms
  • Multiple Systems
  • NLP
  • Natural Gas
  • Natural Language Processing
  • Navigation
  • Negotiations
  • Network Access
  • Network Architectures
  • Network Automation
  • Network Configurations
  • Network Design
  • Network Devices
  • Network Engineering
  • Network Firewalls
  • Network Infrastructure
  • Network Management
  • Network Monitoring
  • Network Optimizations
  • Network Performance
  • Network Programming
  • Network Securities
  • Network Topologies
  • Networking
  • Neural Networks
  • Neurodiversities
  • New Tabs
  • News
  • News Media
  • News Platforms
  • News Services
  • Newsletters
  • NoSQL
  • Nonprofits
  • Notebooks
  • Notifications
  • OIA
  • OLE for Process Controls
  • ORM
  • OSX
  • 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 Learning
  • Online Services
  • Online Shoppings
  • Online Tools
  • Online Transaction Processing
  • Open Data
  • Open Source
  • Open-Source Software
  • Operating Systems
  • Operational Efficiencies
  • Operational Excellence
  • Operational Intelligence
  • Operational Metrics
  • Operational Practices
  • Operational Reportings
  • Operational Resiliences
  • Operational Risks
  • Operational Safety
  • Operational Systems
  • Operational Technologies
  • Operations
  • Operations Management
  • Operations Researches
  • Operators
  • Optical Character Recognitions
  • Optimization Techniques
  • Optimizations
  • Options
  • Orchestration
  • Order Books
  • Order Management
  • Order Management Systems
  • Organizational Changes
  • Organizational Design
  • Organizational Development
  • Organizational Learning
  • Organizational Structures
  • Organizational Transformations
  • Organizations
  • Package Management
  • Packages
  • Packaging
  • Packaging Innovation
  • Packet Captures
  • Packet Loss
  • Paid Media
  • Pair Programming
  • Panoramas
  • Parallel Computing
  • Patch Management
  • Pattern Recognitions
  • Patterns
  • Pay Per Clicks
  • Payment Models
  • Payment Processing
  • Payment Solutions
  • Payment Systems
  • Payments
  • Payroll
  • Penetration Testing
  • Performance
  • Performance Analysis
  • Performance Engineering
  • Performance Evaluations
  • Performance Improvements
  • Performance Management
  • Performance Marketing
  • Performance Measurements
  • Performance Metrics
  • Performance Monitoring
  • Performance Optimizations
  • Performance Testing
  • Performance Tracking
  • Performance Tuning
  • Persistences
  • Personal Finances
  • Personalizations
  • Pharmaceuticals
  • Photo Editings
  • Photographies
  • Physical Securities
  • Physics Simulations
  • Pigs
  • Pipeline Management
  • Pipeline Orchestration
  • Pipelines
  • Pivot Tables
  • Planning Analytics
  • Plannings
  • Platform Development
  • Platform Ecosystems
  • Platform Engineering
  • Platform Management
  • Platform Modernizations
  • Platform Securities
  • Platform Services
  • Platform Software
  • Platform Solutions
  • Platform Strategies
  • Platform Systems
  • Platforms
  • Plugins
  • Point Of Sales
  • Policies
  • Policy Enforcements
  • Policy Management
  • Portabilities
  • Portables
  • Portals
  • Portfolio Management
  • Post Productions
  • Postmortems
  • Power Distributions
  • Power Generations
  • Power Tools
  • Predictabilities
  • Predictions
  • Predictive Analytics
  • Predictive Modeling
  • Presentation Software
  • Presentations
  • Pricing Models
  • Pricing Strategies
  • Pricing Tools
  • Pricings
  • Prioritizations
  • Privacy
  • Privacy Impact Assessments
  • Probabilities
  • Problem Management
  • Problem Resolutions
  • Problem Solving
  • Process Analysis
  • Process Automation
  • Process Controls
  • Process Design
  • Process Documentations
  • Process Engineering
  • Process Frameworks
  • Process Improvements
  • Process Management
  • Process Mapping Tools
  • Process Mappings
  • Process Maps
  • Process Mining
  • Process Modeling
  • Process Optimizations
  • Process Re-engineerings
  • Process Reengineerings
  • Processes
  • Procure To Pays
  • Procurements
  • Product Analytics
  • Product Areas
  • Product Design
  • Product Development
  • Product Development Lifecycle
  • Product Development Roadmaps
  • Product Information Management
  • Product Integrations
  • Product Lifecycle Management
  • Product Management
  • Product Management Tools
  • Product Owners
  • Product Ownerships
  • Product Platforms
  • Product Roadmaps
  • Product Securities
  • Product Strategies
  • Product Testing
  • Product Tools
  • Production
  • Production Deployments
  • Production Environments
  • Production Management
  • Production Monitoring
  • Production Securities
  • Production Support
  • Production Systems
  • Productivity
  • Productivity Suites
  • Productivity Tools
  • Products
  • Professional Development
  • Professional Services
  • Professional Trainings
  • Profilings
  • Program Management
  • Programmable Logic Controllers
  • Programming
  • Programming Languages
  • Progress Reports
  • Project Management
  • Project Management Tools
  • Project Schedules
  • Projects
  • Prompt Engineering
  • Promptings
  • Prompts
  • Property Management
  • Proprietary Software
  • Protection
  • Protocols
  • Prototyping
  • Provisionings
  • Proxies
  • Prunings
  • Psychologies
  • Pub/Sub Systems
  • Public Affairs
  • Public Clouds
  • Public Healths
  • Public Key Infrastructure
  • Purchasings
  • Push Notifications
  • QA
  • Quality Assurance
  • Quality Assurance Processes
  • Quality Assurance Testing
  • Quality Controls
  • Quality Frameworks
  • Quality Management
  • Quality Metrics
  • Quality Tools
  • Quantitative Analysis
  • Quantitative Methods
  • Quantitative Modeling
  • Quantitative Models
  • Query Engines
  • Query Languages
  • Query Optimizations
  • Query Tools
  • Queues
  • Rapid Development
  • Rapid Prototyping
  • Ratings
  • Reactives
  • Real Estates
  • Real Time
  • Real-Time Operating Systems
  • Real-time Analytics
  • Real-time Applications
  • Real-time Data
  • Real-time Data Environments
  • Real-time Inferences
  • Real-time Insights
  • Real-time Monitoring
  • Real-time Operations
  • Real-time Processing
  • Real-time Streamings
  • Real-time Systems
  • Real-time Visibility
  • Reasonings
  • Recipes
  • Recommendation Engines
  • Recommendation Systems
  • Reconciliations
  • Reconnaissances
  • Record Keepings
  • Recordings
  • Records Management
  • Recruitings
  • Recruitment
  • Reference Data
  • Reference Models
  • Registrations
  • Regression Analysis
  • Regression Testing
  • Regulatory Affairs
  • Regulatory Compliances
  • Regulatory Filings
  • Regulatory Reportings
  • Reinforcement Learning
  • Relational Data
  • Relational Data Stores
  • Relational Database Management Systems
  • Relational Databases
  • Relationals
  • Relationship Buildings
  • Relationship Management
  • Release Activities
  • Release Engineering
  • Release Governance
  • Release Management
  • Release Management Processes
  • Release Pipelines
  • Release Plannings
  • Reliabilities
  • Reliability Engineering
  • Remittances
  • Remote Access
  • Remote Desktops
  • Remote Works
  • Rendering
  • Renewable Energies
  • Replications
  • Reporting And Analytics
  • Reporting And Analytics Tools
  • Reporting And Measurements
  • Reporting Applications
  • Reporting Automation
  • Reporting Dashboards
  • Reporting Frameworks
  • Reporting Mechanisms
  • Reporting Metrics
  • Reporting Platforms
  • Reporting Solutions
  • Reporting Systems
  • Reporting Tools
  • Reportings
  • Repository Management
  • Requirements
  • Requirements Gatherings
  • Research
  • Research Data
  • Research Methods
  • Research Tools
  • Reservation Systems
  • Resilience Engineering
  • Resiliences
  • Resiliency
  • Resilient Systems
  • Resource Allocations
  • Resource Management
  • Resource Plannings
  • Resource Scheduling
  • Responsive Design
  • Rest Assured
  • Retail Technologies
  • Retails
  • Reusable Components
  • Revenue Generations
  • Revenue Management
  • Revenue Models
  • Revenue Operations
  • Revenue Optimizations
  • Revenue Strategies
  • Revenues
  • Reverse Proxies
  • Review And Approvals
  • Reviews
  • Rich Internet Applications
  • Risk Analysis
  • Risk Assessments
  • Risk Management
  • Roadmappings
  • Robotic Process Automation
  • Robotics
  • Robustness
  • Root Cause Analysis
  • Routers
  • Routings
  • Rule-Based Systems
  • Runtimes
  • SQL Queries
  • Safes
  • Safety
  • Sales
  • Sales Analytics
  • Sales Clouds
  • Sales Enablement
  • Sales Enablement Tools
  • Sales Management
  • Sales Productivity
  • Sales Tools
  • Sales Trainings
  • Sanctions
  • Sandboxes
  • Scalabilities
  • Scaling
  • Scannings
  • Scenario Analysis
  • Scenario Modeling
  • Scenarios
  • Scheduling
  • Scorings
  • Screenings
  • Scripting Languages
  • Scriptings
  • Search
  • Search Engine Optimizations
  • Search Engines
  • Secrets Management
  • Secure Architecture Design
  • Secure Architectures
  • Secure Code Reviews
  • Secure Coding Practices
  • Secure Codings
  • Secure Configurations
  • Secure Design
  • Secure Development
  • Secure Software Development
  • Security
  • Security Alarms
  • Security Analysis
  • Security Analytics
  • Security Architectures
  • Security Assessments
  • Security Audits
  • Security Automation
  • 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 Management
  • Security Measures
  • Security Models
  • Security Monitoring
  • Security Operations
  • Security Orchestration, Automation and Responses
  • Security Platforms
  • Security Procedures
  • Security Requirements
  • Security Reviews
  • Security Settings
  • Security Solutions
  • Security Systems
  • Security Testing
  • Security Tools
  • Security Updates
  • Segmentations
  • Self-Service Dashboards
  • Self-healings
  • Self-improvements
  • Semantic Searches
  • Serializations
  • Serverless
  • Serverless Architectures
  • Servers
  • Service Assurance
  • Service Bus
  • Service Catalogs
  • Service Deliveries
  • Service Design
  • Service Desks
  • Service Governance
  • Service Level Objectives (SLOs)
  • Service Management
  • Service Mappings
  • Service Meshes
  • Service Operations
  • Service Strategies
  • Services
  • Settlements
  • Shared Resources
  • Shared Responsibilities
  • Shells
  • Shippings
  • Short Message Services
  • Signal Distributions
  • Signal Processing
  • Simple API for XML
  • Simulation Platforms
  • Simulation Tools
  • Simulations
  • Simulators
  • Single Sign Ons
  • Site Reliability Engineering
  • Skill Development
  • Skills Development
  • Slides
  • Slideshows
  • Social
  • Social Media
  • Social Media Analytics
  • Social Media Management
  • Social Media Marketing
  • Software
  • Software Applications
  • Software Architectures
  • Software Asset Management
  • Software Configuration Management
  • Software Deliveries
  • Software Deployments
  • Software Design
  • Software Development
  • Software Development Best Practices
  • Software Development Kits
  • Software Engineering
  • Software Infrastructure
  • Software Licensings
  • Software Management
  • Software Platforms
  • Software Projects
  • Software Solutions
  • Software Supply Chain Securities
  • Software Systems
  • Software Testing
  • Software Tools
  • Software Upgrades
  • Software-as-a-Service
  • Solutions
  • Source Code Management
  • Source Codes
  • Source Control Management
  • Source Controls
  • Source Systems
  • Sourcings
  • Space Explorations
  • Spatial Analysis
  • Spatial Data
  • Spend Management
  • Spreadsheets
  • Stakeholder Management
  • Standups
  • Startups
  • State Machines
  • State Management
  • Statefuls
  • Static Application Security Testing
  • Statistical Analysis
  • Statistical Inferences
  • Statistical Methods
  • Statistical Modeling
  • Statistical Modellings
  • Statistical Models
  • Statistical Techniques
  • Statistics
  • Stock Controls
  • Storage
  • Storage Engines
  • Storage Management
  • Stored Procedures
  • Strategic Design
  • Strategic Plannings
  • Strategies
  • Strategy Games
  • Stream Analytics
  • Stream Processing
  • Streaming Algorithms
  • Streaming Architectures
  • Streaming Data
  • Streamings
  • Structured Data
  • Structured Databases
  • Subscription Management
  • Subscription Models
  • Subscriptions
  • Supervised Learning
  • Supplier Management
  • Supply Chain Management
  • Supply Chain Securities
  • Supply Chains
  • Support
  • Support Platforms
  • Support Systems
  • Surveillances
  • Survey Platforms
  • Survey Tools
  • Sustainability
  • Switches
  • System Administration
  • System Analysis
  • System Architectures
  • System Configurations
  • System Design
  • System Development
  • System Enhancements
  • System Implementations
  • System Integrations
  • System Interfaces
  • System Maintenance
  • System Management
  • System Monitoring
  • System Of Records
  • System Operations
  • System Optimizations
  • System Performances
  • System Requirements
  • System Securities
  • System Software
  • System Solutions
  • System Stabilities
  • System Testing
  • System Tools
  • System Updates
  • Systems
  • Systems Administration
  • Systems Architectures
  • Systems Design
  • Systems Development
  • Systems Engineering
  • Systems Enhancements
  • Systems Integrations
  • Systems Management
  • Systems Programming
  • Systems Software
  • Systems Testing
  • Systems Thinkings
  • T1S
  • Tableaux De Bords
  • Tablets
  • Tag Management
  • Tainas
  • Talent Acquisition
  • Talent Management
  • Task Automation
  • Task Management
  • Task Queues
  • Tasks
  • Tax Compliances
  • Tax Laws
  • Tax Plannings
  • Tax Researches
  • Tax Software
  • Tax Systems
  • Taxes
  • Tcls
  • Team Collaborations
  • Team Communications
  • Team Development
  • Team Management
  • Teaps
  • Technical Debt
  • Technical Plannings
  • Technical Reviews
  • Technical Support
  • Technical Writings
  • Technologies
  • Technology Adoptions
  • Technology Architectures
  • Technology Governance
  • Technology Plannings
  • Technology Platforms
  • Technology Services
  • Technology Stacks
  • Technology Strategies
  • Technology Upgrades
  • Telecommunications
  • Telemetry
  • Telephonies
  • Telewerkens
  • Terminals
  • Territory Management
  • Test Anything Protocols
  • Test Automation
  • Test Automation Frameworks
  • Test Automation Tools
  • Test Design
  • Test Engineering
  • Test Environments
  • Test Equipments
  • Test Executions
  • Test Plannings
  • Test Pyramids
  • Test Strategies
  • Test Tools
  • Test-and-learn Approaches
  • Test-and-learns
  • Testing Frameworks
  • Testing Strategies
  • Testing Tools
  • Tests
  • Text Analysis
  • Text Extractions
  • Third Parties
  • Third Party Services
  • Third-Party Integrations
  • Third-party Data
  • Third-party Systems
  • Threat Analysis
  • Threat Detections
  • Threat Huntings
  • Threat Intelligence
  • Threat Management
  • Threat Mitigations
  • Threat Modeling
  • Threat Monitoring
  • Ticketing
  • Ticketing Systems
  • Tickets
  • Time Management
  • Time Series
  • Time Series Analysis
  • Time Series Databases
  • Time Series Forecasting
  • Timelines
  • Token-Based
  • Tokens
  • Tools
  • Total Rewards
  • Tracing
  • Tracking
  • Tracking Software
  • Tracs
  • Trade Compliances
  • Trade Management
  • Trade Operations
  • Trade Shows
  • Tradings
  • Traffic Analysis
  • Traffic Management
  • Training Platforms
  • Trainings
  • Transaction Management
  • Transaction Processing
  • Transformations
  • Transformers
  • Translations
  • Transparency
  • Transportation
  • Travel Management
  • Travel Technologies
  • Travels
  • Treasuries
  • Treasury Operations
  • Troubleshooting
  • Trust And Safety
  • Tuning
  • Turkishes
  • UI
  • UI Design
  • UX
  • UX Design
  • Underwritings
  • Unified Communications
  • Unit Testing
  • Unixes
  • Unstructured Data
  • Unsupervised Learning
  • Updates
  • Uptime
  • Urban Plannings
  • Usabilities
  • Usability Testing
  • Usage-Based Pricings
  • User Acceptance Testing
  • User Engagements
  • User Experiences
  • User Feedback
  • User Generated Contents
  • User Guides
  • User Insights
  • User Interface/User Experiences
  • User Interfaces
  • User Journeys
  • User Lifecycle
  • User Provisionings
  • User Researches
  • User Testing
  • Utilities
  • VBA
  • VOIP
  • Validation
  • Validation Frameworks
  • Validation Rules
  • Valuations
  • Value Streams
  • Vector Databases
  • Vector Stores
  • Vehicle Repairs
  • Vendor Management
  • Vendor Researches
  • Venture Capital
  • Venue Management
  • Venue Sourcings
  • Venues
  • Verifications
  • Version Control Systems
  • Version Controls
  • Versionings
  • Video Chats
  • Video Conferencings
  • Video Editing Tools
  • Video Editings
  • Video Encodings
  • Video Games
  • Video Platforms
  • Video Processing
  • Video Productions
  • Video Transcodings
  • Videos
  • Virtual Desktop Infrastructure
  • Virtual Environments
  • Virtual Events
  • Virtual Meetings
  • Virtual Trainings
  • Virtualizations
  • Visibility
  • Visioconférences
  • Visual Arts
  • Visual Design
  • Visual Effects
  • Visual Management
  • Visualizations
  • Voice
  • Voice Chats
  • Votings
  • Vues
  • Vulnerability Assessments
  • Vulnerability Management
  • Vulnerability Management Tools
  • Vulnerability Reductions
  • Vulnerability Scanners
  • Vulnerability Scannings
  • Wallets
  • Warehouse Equipments
  • Warehouse Management
  • Web Analytics
  • Web Application Development
  • Web Application Securities
  • Web Applications
  • Web Apps
  • Web Architectures
  • Web Based
  • Web Browsers
  • Web Components
  • Web Design
  • Web Development
  • Web Frameworks
  • Web Interfaces
  • Web Performances
  • Web Platforms
  • Web Scrapings
  • Web Servers
  • Web Services
  • Web Sites
  • Web Systems
  • Web Technologies
  • Web-based Applications
  • Webinars
  • Webs
  • Wellbeings
  • Whiteboards
  • Wi-Fi
  • Wikis
  • Windows Servers
  • Wins
  • Words
  • Work From Homes
  • Work Life Balances
  • Workflow Automation
  • Workflow Design
  • Workflow Management
  • Workflow Management Tools
  • Workflow Optimizations
  • Workflow Orchestration
  • Workflow Products
  • Workflow Systems
  • Workflow Tools
  • Workflows
  • Workforce Development
  • Workforce Management
  • Working Capital
  • Workplace Safety
  • Workplace Technologies
  • Workshops
  • Workspaces
  • Zero-click Searches

Services — Total: 383

  • 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 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
  • Apple
  • Apple Keynote
  • Apple Safari
  • Ariba
  • Artifactory
  • Aruba
  • Asana
  • Atlassian
  • AutoCAD
  • Autodesk
  • Autodesk Fusion 360
  • Autodesk Maya
  • Azure Active Directory
  • Azure Data Factory
  • Azure Databricks
  • Azure DevOps
  • Azure Event Hubs
  • Azure Functions
  • Azure Key Vault
  • Azure Kubernetes Service
  • Azure Log Analytics
  • Azure Machine Learning
  • Azure Monitor
  • Azure Repo
  • Azure Service Bus
  • Azure Synapse Analytics
  • Azure Virtual Desktop
  • Backstage
  • BigCommerce
  • Bitbucket
  • Bloomberg
  • Bloomberg AIM
  • Bloomberg Buyside Enterprise Solutions
  • Bloomberg Economics
  • Bloomberg Enterprise Data
  • Bloomberg Intelligence
  • Bloomberg News
  • Bloomberg Professional Service
  • Bloomberg Query Language (BQL)
  • Bloomberg TV
  • Bloomberg Television and Radio
  • Bloomberg Terminal
  • BlueSky
  • Boomi
  • Box
  • Bruno
  • Burp Suite
  • CAST AI
  • Canva
  • ChatGPT
  • Choreo
  • Circana
  • Cisco
  • Cisco Control Hub
  • Cisco Firepower
  • Cisco Hardware
  • Cisco Nexus
  • Cisco Voice Portal
  • Cisco Webex
  • Citrix
  • Citrix NetScaler
  • Claude
  • CloudFormation
  • CloudWatch
  • Cloudflare
  • Cobalt
  • Concur
  • Conductor
  • Confluence
  • Cortex
  • Coupa
  • Crystal Reports
  • Dagster
  • DataHub
  • Databricks
  • Datadog
  • Demandbase
  • Discord
  • DocuSign
  • DynamoDB
  • Dynatrace
  • EC2
  • EMC
  • F5 Networks
  • Facebook
  • Facebook Ads
  • Facebook Business Manager
  • FactSet
  • Fern
  • Figma
  • ForgeRock
  • Fortify
  • Fortinet
  • Fusio
  • G2
  • GCP Cloud Storage
  • Gainsight
  • Gemini
  • GitHub
  • GitHub Actions
  • GitHub Copilot
  • GitLab
  • Gmail
  • Gong
  • Google
  • Google Ads
  • Google Analytics
  • Google Android
  • Google Apps Script
  • Google Campaign Manager
  • Google Chrome
  • Google Cloud Dataflow
  • Google Cloud Logging
  • Google Cloud Platform
  • Google Data Studio
  • Google Docs
  • Google Drive
  • Google Forms
  • Google Maps
  • Google Marketing Platform
  • Google Optimize
  • Google Search Console
  • Google Sheets
  • Google Slides
  • Google Tag Manager
  • Google Workspace
  • HAProxy
  • Harness
  • HubSpot
  • Hugging Face
  • Hunter
  • Hvault
  • IBM
  • Indeed
  • Infoblox
  • Informatica
  • Informática
  • Instagram
  • IntelliJ IDEA
  • International Business Machines
  • Intuit
  • Istio
  • JFrog
  • JFrog Artifactory
  • Jira
  • Juniper
  • Juniper Networks
  • Jupyter Notebook
  • Kinesis
  • Kion
  • Knit
  • Kong
  • Lambda
  • Lightroom
  • LinkedIn
  • Looker
  • Looker Studio
  • MATLAB
  • MailChimp
  • Make
  • Mastercard
  • Maya
  • Merge
  • Meta
  • Metasploit
  • Microsoft
  • Microsoft .NET
  • Microsoft 365
  • Microsoft Access
  • Microsoft Azure
  • 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 Identity Manager
  • Microsoft Intune
  • Microsoft Office
  • Microsoft Office 365
  • Microsoft Outlook
  • Microsoft Planner
  • Microsoft Power Apps
  • Microsoft Power Automate
  • Microsoft Power Platform
  • Microsoft PowerPoint
  • Microsoft Project
  • Microsoft Purview
  • Microsoft Sentinel
  • Microsoft Teams
  • Microsoft Visio
  • Microsoft Windows
  • Microsoft Windows 10
  • Microsoft Windows Server
  • Microsoft Word
  • Microsoft Xbox
  • Mistral
  • Montran
  • Moody's
  • MuleSoft
  • Navision
  • Nessus
  • NetApp
  • Netcool
  • Netflix Zuul
  • Netlify
  • New Relic
  • Notion
  • Nutanix
  • OpenAI
  • OpenShift
  • Oracle
  • Oracle APEX
  • Oracle Cloud
  • Oracle Database
  • Oracle E-Business Suite
  • Oracle Enterprise Database
  • Oracle Enterprise Manager
  • Oracle Essbase
  • Oracle Fusion
  • Oracle GoldenGate
  • Oracle Hyperion
  • Oracle Integration
  • Oracle Planning
  • Oracle R12
  • Oracle Smart View
  • Oracle WebLogic
  • Orion
  • Palo Alto Networks
  • Panora
  • Paw
  • PeopleSoft
  • PeopleSoft Financials
  • Perforce
  • Photoshop
  • Pluralsight
  • Port
  • Postman
  • Power Apps
  • Power BI
  • Power Platform
  • Power Query
  • Prefect
  • Prisma
  • Productiv
  • Pulse
  • QRadar
  • Qlik
  • Qlik Sense
  • QlikSense
  • QlikView
  • Qube
  • ReadMe
  • Red Hat
  • Red Hat Ansible Automation Platform
  • Red Hat Enterprise Linux
  • Red Hat Satellite
  • Reuters
  • SAP
  • SAP Ariba
  • SAP BI
  • SAP BI Tools
  • SAP BRIM (Billing and Revenue Innovation Management)
  • SAP BW
  • SAP Commerce Cloud
  • SAP Concur
  • SAP HANA
  • SAP S/4HANA
  • SQL Server
  • SailPoint
  • Salesforce
  • Salesforce Automation
  • Salesforce Einstein
  • Salesforce Experience Cloud
  • Salesforce Lightning
  • Salesforce Marketing Cloud
  • Salesforce Sales Cloud
  • Seismic
  • SendGrid
  • Sentry System
  • ServiceNow
  • SharePoint
  • Shell
  • Shopify
  • SimCorp Dimension
  • Slack
  • Snowflake
  • SolarWinds
  • Solaris
  • Solaris Zones
  • Sparx Enterprise Architect
  • Splunk
  • Splunk Enterprise Security
  • Spot
  • Square
  • Stripe
  • Tableau
  • Tableau Desktop
  • TeamCity
  • Temenos Transact
  • Temporal
  • Teradata
  • Tradeweb
  • Trellix Web Gateway
  • Triton
  • Tropic
  • Truto
  • Twilio
  • Twitch
  • Twitter
  • Tyk
  • Unity
  • Unix
  • VMware
  • Vantage
  • Vendr
  • Veritas Cluster
  • Veritas InfoScale
  • Veritas NetBackup
  • Veritas Volume Manager
  • Vessel
  • Visio
  • Visualforce
  • WebLogic
  • WebSphere
  • WhatsApp
  • Workato
  • Workday
  • Workday Financials
  • Workday Integration
  • Workday Integrations
  • Workday Payroll
  • Workday Reporting
  • Workday Security
  • Workday Studio
  • Youtube
  • Zapier
  • Zendesk
  • Zoom
  • ZoomInfo
  • n8n
  • nOps

Tools — Total: 233

  • Akri
  • Angular
  • Ansible
  • Apache
  • Apache AGE
  • Apache APR
  • Apache ActiveMQ
  • Apache Airflow
  • 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 CouchDB
  • Apache DB
  • Apache Directory
  • Apache DolphinScheduler
  • Apache Doris
  • Apache Drill
  • Apache Druid
  • Apache Flex
  • Apache Flink
  • Apache FreeMarker
  • Apache Gora
  • Apache Gump
  • Apache HBase
  • Apache HTTP
  • Apache HTTP Server
  • Apache Hadoop
  • Apache Hive
  • Apache Hop
  • Apache Hudi
  • Apache Iceberg
  • Apache Ignite
  • Apache Ivy
  • Apache Jackrabbit
  • Apache James
  • Apache Kafka
  • Apache Knox
  • Apache Kylin
  • Apache Lucene
  • Apache MINA
  • Apache Maven
  • Apache NiFi
  • Apache ORC
  • Apache Olingo
  • Apache OpenJPA
  • Apache OpenOffice
  • Apache OpenWebBeans
  • Apache POI
  • Apache Parquet
  • Apache Phoenix
  • Apache Pig
  • Apache Pivot
  • Apache Portals
  • Apache Pulsar
  • Apache Ranger
  • Apache Roller
  • Apache Rya
  • Apache SINGA
  • Apache Serf
  • Apache ShenYu
  • Apache Shiro
  • Apache SkyWalking
  • Apache Sling
  • Apache SpamAssassin
  • Apache Spark
  • Apache Spatial
  • Apache Steve
  • Apache Storm
  • Apache Streams
  • Apache Subversion
  • Apache Superset
  • Apache Synapse
  • Apache TVM
  • Apache Tcl
  • Apache Tez
  • Apache Tika
  • Apache Tomcat
  • Apache Traffic Control
  • Apache Traffic Server
  • Apache VCL
  • Apache Velocity
  • Apache Web Services
  • Apache XML Graphics
  • Apache Zeppelin
  • Apache ZooKeeper
  • Appium
  • Argo
  • BFE
  • Backstage
  • Blender
  • Buildpacks
  • C#
  • C++
  • Capsule
  • Chef
  • ClickHouse
  • Cloud Custodian
  • Consul
  • Cortex
  • Crossplane
  • Cucumber
  • Debian
  • 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
  • Istio
  • JUnit
  • Jaeger
  • Jenkins
  • Jest
  • Jupyter
  • K3s
  • KCL
  • Kafka Connect
  • Keycloak
  • Kibana
  • Kotlin
  • Kubeflow
  • Kubeflow Pipelines
  • Kubernetes
  • Kubernetes Operators
  • Lean
  • Lightning Web Components
  • Lima
  • Linux
  • Llama
  • Logstash
  • Matplotlib
  • Maven Central
  • Mockito
  • MongoDB
  • MySQL
  • Nexus
  • Nginx
  • Node.js
  • NumPy
  • ORAS
  • Open Policy Agent
  • OpenSearch
  • OpenTelemetry
  • PHP
  • Pandas
  • Perl
  • Pixie
  • Playwright
  • Porter
  • PostgreSQL
  • PowerShell
  • Prometheus
  • Pulumi
  • Puppet
  • PySpark
  • PyTorch
  • Python
  • R
  • RabbitMQ
  • Radius
  • React
  • React Native
  • Redis
  • Redux
  • Rook
  • SOPS
  • SPIRE
  • SVN
  • Scala
  • Score
  • Selenium
  • Semantic Kernel
  • Sonar
  • SonarQube
  • Spring
  • Spring Boot
  • Spring Boot Admin Console
  • Spring Cloud
  • Spring Cloud Stream
  • Spring Data
  • Spring Framework
  • Spring Security
  • Stacker
  • Swift
  • Telepresence
  • TensorFlow
  • Terraform
  • Ubuntu
  • Vault
  • Vite
  • Vitess
  • Vue.js
  • WebFlux
  • WordPress
  • Zabbix
  • Zot
  • bootc
  • cURL
  • eBPF
  • gRPC
  • jQuery
  • kpt
  • werf

Standards — Total: 218

  • ACID
  • AIS
  • AUTHORS.md
  • Acceptance Criteria
  • Accessibility Standards
  • Accounting Standards
  • Actor Model
  • Agile
  • Agile Delivery
  • Agile Methodology
  • Agile SDLC
  • Architectural Design Patterns
  • Architecture Pattern
  • BDD
  • BLE
  • Banking Regulation
  • Big O Notation
  • CCPA
  • CITATION.cff
  • CNCF
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • CONTRIBUTORS.md
  • CSS
  • Certificate Enrolment Protocols
  • Circuit Breaker
  • Communication Protocols
  • Component Model
  • Configuration Language
  • Consensus
  • Convention Over Configuration
  • Cybersecurity Standards
  • DHCP
  • DNS
  • DSL
  • Data Flow Diagrams
  • Data Format
  • Data Modeling
  • Data Models
  • Data Privacy Standards
  • Data Quality Standards
  • Data Warehouse Schemas
  • Database Schema Design
  • Defense In Depth
  • Dependency Injection
  • Design Patterns
  • Design Standards
  • DevOps
  • DevSecOps
  • Development Methodology
  • Dimensional Modeling
  • Disclosure Requirements
  • Domain-Driven Design
  • Enterprise Integration Patterns
  • Entity Relationship
  • Equator Principles
  • Event Sourcing
  • Event-driven Architecture
  • Extreme Programming
  • FTP
  • File Format
  • FinOps
  • Financial Regulation
  • Flowcharts
  • Functional Programming
  • GDPR
  • GitOps
  • Good Manufacturing Practices
  • Graph Query Language (GQL)
  • GraphQL
  • HIPAA
  • HTML
  • HTML5
  • HTTP
  • HTTP/2
  • IAM
  • ISO
  • IT Standards
  • ITIL
  • ITSM
  • Integration Patterns
  • Internal Control Standards
  • Inversion Of Control
  • JCR
  • JMS
  • JPA
  • JSF
  • JSON
  • Kanban
  • Kerberos
  • LDAP
  • LICENSE.md
  • Lakehouse Architecture
  • Lean Management
  • Lean Manufacturing
  • Lean Six Sigma
  • MLOps
  • MVC
  • Mandatory Reserves Requirement
  • MapReduce
  • Methodology
  • Mockups
  • Monolithic Architecture
  • NIO
  • NIST
  • Network Protocols
  • Normalization
  • OAuth
  • OCI
  • OData
  • OIDC
  • 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
  • Project Management Methodology
  • Protocol Buffers
  • Prototypes
  • Pub/Sub
  • QoS
  • Quality Of Service
  • Quality Standards
  • RACI
  • RBAC
  • RDF
  • RDP
  • README.md
  • REST
  • RPC
  • RTSP
  • Raft
  • Reactive Programming
  • Regular Expressions
  • Regulation
  • Regulatory
  • Relational Data Modeling
  • Reporting Templates
  • Runbooks
  • SAFe Agile
  • SAML
  • SDLC
  • SECURITY.md
  • SFTP
  • SOA
  • SOAP
  • SPA
  • SQL
  • SSH
  • SSL/TLS
  • SSO
  • SUPPORT.md
  • Scaled Agile
  • Schema Design
  • Schema Validation
  • Scrum
  • SecOps
  • Secure Software Development Life Cycle
  • Secure Software Development Lifecycle
  • Secure-by-Default
  • Secure-by-Design
  • Security By Design
  • Security Protocols
  • Security Standards
  • Security Standards And Procedures
  • 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 Suites
  • Test-driven Development
  • UML
  • Use Cases
  • User Stories
  • VNC
  • VPN
  • WCAG
  • Waterfall
  • WebSockets
  • Wireframes
  • Write Ahead Log
  • XML
  • XSLT
  • Zero Trust
  • Zero Trust Architecture
  • Zero Trust Network Access
  • Zero-Trust Security Model
  • dependabot.yml
  • 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 →