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.
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 NetworksAMC Networks is a global entertainment company that owns and operates distinctive cable television and...
- Blizzard EntertainmentAn American video game developer and publisher known for iconic franchises like World of Warcraft,...
- ComcastA global media and technology conglomerate and the largest cable television and internet provider in...
- Condé NastA global media company producing some of the world's most iconic magazine brands including Vogue,...
- DisneyA global entertainment conglomerate operating theme parks, film studios, television networks, and streaming services. One...
- Fox CorporationFox Corporation is a U.S. media company whose portfolio includes Fox News Media, Fox Sports,...
- HearstA diversified media, information, and services company operating magazines, television stations, and newspapers. Also owns...
- Major League BaseballThe oldest major professional sports league in the United States and Canada consisting of 30...
- National Basketball AssociationA professional basketball league consisting of 30 teams across the United States and Canada. One...
- National Football LeagueThe premier professional American football league consisting of 32 teams and the most-watched sports league...
- National Hockey LeagueA professional ice hockey league featuring 32 teams across the United States and Canada. Known...
- NBCA major American commercial broadcast television network and a subsidiary of Comcast through NBCUniversal. Produces...
- NetflixThe world's leading streaming entertainment service with hundreds of millions of subscribers across 190 countries....
- ParamountA global media and entertainment company producing and distributing film, television, and streaming content. Operates...
- Riot GamesAn American video game developer and esports organizer best known for creating League of Legends...
- RokuRoku is the leading TV streaming platform in the U.S., Canada, and Mexico, offering a...
- SpotifyThe 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 TODAYA major American daily national newspaper and digital news platform owned by Gannett. One of...
- Walt DisneyThe Walt Disney Company is a leading diversified international family entertainment and media enterprise with...
- Warner Bros. DiscoveryWarner Bros. Discovery is a leading global media and entertainment company that creates and distributes...
- Warner BrothersA 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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Financial Close Pipeline
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
tags:
- finance
- sap
- power-bi
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: financial-close-pipeline
port: 8080
tools:
- name: execute
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: power-bi.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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}}®ion={{region}}&queue={{queue}}
inputParameters:
- name: game
in: path
- name: region
in: path
- name: queue
in: path
operations:
- name: get-leaderboard
method: GET
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}}®ion={{region}}
inputParameters:
- name: game
in: path
- name: region
in: path
operations:
- name: get-catalog
method: GET
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
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
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
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
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
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
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
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
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
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
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
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
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}}®ion={{region}}
inputParameters:
- name: game
in: path
- name: region
in: path
operations:
- name: get-queues
method: GET
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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}}®ion={{region}}&date={{date}}
inputParameters:
- name: game
in: path
- name: region
in: path
- name: date
in: path
operations:
- name: get-engagement
method: GET
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Retrieves search performance data from Google Search Console.
naftiko: '0.5'
info:
label: Google Search Console Performance
description: Retrieves search performance data from Google Search Console.
tags:
- seo
- analytics
- google-search-console
capability:
exposes:
- type: mcp
namespace: seo-analytics
port: 8080
tools:
- name: get-search-performance
description: Fetch GSC performance data.
inputParameters:
- name: site_url
in: body
type: string
description: Site URL property.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: gsc.query-analytics
with:
site_url: '{{site_url}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: clicks
type: number
mapping: $.rows[0].clicks
- name: impressions
type: number
mapping: $.rows[0].impressions
consumes:
- type: http
namespace: gsc
baseUri: https://www.googleapis.com/webmasters/v3
authentication:
type: bearer
token: $secrets.google_search_console_token
resources:
- name: analytics
path: /sites/{{site_url}}/searchAnalytics/query
inputParameters:
- name: site_url
in: path
operations:
- name: query-analytics
method: POST
Retrieves 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Score Breakdown — Total: 16633
Each row links to its full definition on the Naftiko Signal Groups page.
187 42 79 630 686 272 564 314 232 1306 351 453 858 172 365 433 144 180 67 395 648 461 83 276 1151 2566 449 254 91 177 132 12 161 268 561 136 170 66 115 177 267Areas — 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 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 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
- IntelliJ IDEA
- International Business Machines
- Intuit
- Istio
- JFrog
- JFrog Artifactory
- Jira
- Juniper
- Juniper Networks
- Jupyter Notebook
- Kinesis
- Kion
- Knit
- Kong
- Lambda
- Lightroom
- 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
- Tyk
- Unity
- Unix
- VMware
- Vantage
- Vendr
- Veritas Cluster
- Veritas InfoScale
- Veritas NetBackup
- Veritas Volume Manager
- Vessel
- Visio
- Visualforce
- WebLogic
- WebSphere
- 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
- 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.
Where you stand
See your signals
The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.
See full report →What to build
Translate to capabilities
Capabilities being built across the peer set — tied to the markets you actually serve.
View capabilities →Where to go next
Navigate the next move
A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.
Get your navigation →Control what you build
Integrate with AI
Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.
First capability live in 90 days.
Become a design partner →