Warner Brothers Capabilities

Naftiko 0.5 capability definitions for Warner Brothers - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

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

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

Retrieves ADP payroll summary for a given pay period including gross pay, deductions, and net pay for a specific worker.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary"
  description: "Retrieves ADP payroll summary for a given pay period including gross pay, deductions, and net pay for a specific worker."
  tags:
    - hr
    - adp
    - payroll
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch ADP payroll summary for a worker and pay period."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The ADP worker identifier."
            - name: pay_period
              in: body
              type: string
              description: "The pay period identifier (e.g., 2026-03-15)."
          call: "adp.get-pay-statement"
          with:
            worker_id: "{{worker_id}}"
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: gross_pay
              type: number
              mapping: "$.payStatement.grossPayAmount"
            - name: net_pay
              type: number
              mapping: "$.payStatement.netPayAmount"
            - name: deductions
              type: number
              mapping: "$.payStatement.totalDeductions"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: pay-statements
          path: "/workers/{{worker_id}}/pay-statements"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-pay-statement
              method: GET

Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.

naftiko: "0.5"
info:
  label: "Annual Compliance Certification Orchestrator"
  description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
  tags:
    - compliance
    - hr
    - legal
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-annual-compliance-certification-orchestrator
          description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.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

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.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

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

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.warner-brothers.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_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 Confluence wiki page by ID or title, returning content, author, last updated date, and space key.

naftiko: "0.5"
info:
  label: "Confluence Wiki Page Lookup"
  description: "Retrieves a Confluence wiki page by ID or title, returning content, author, last updated date, and space key."
  tags:
    - collaboration
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: wiki
      port: 8080
      tools:
        - name: get-wiki-page
          description: "Fetch a Confluence page by ID. Returns title, content excerpt, author, and space key."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: space_key
              type: string
              mapping: "$.space.key"
            - name: author
              type: string
              mapping: "$.version.by.displayName"
            - name: last_updated
              type: string
              mapping: "$.version.when"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://warnerbros.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content/{{page_id}}?expand=space,version"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              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

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

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

When a title is approved for international release, triggers subtitle generation, updates the content catalog with localized metadata, uploads subtitle files to Amazon S3, and notifies the localization team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Content Localization Pipeline"
  description: "When a title is approved for international release, triggers subtitle generation, updates the content catalog with localized metadata, uploads subtitle files to Amazon S3, and notifies the localization team in Microsoft Teams."
  tags:
    - localization
    - content
    - amazon-s3
    - microsoft-teams
    - internationalization
capability:
  exposes:
    - type: mcp
      namespace: localization
      port: 8080
      tools:
        - name: initiate-localization
          description: "Given a title ID and target languages, trigger subtitle generation, upload to S3, update catalog, and notify team."
          inputParameters:
            - name: title_id
              in: body
              type: string
              description: "The content catalog title identifier."
            - name: target_languages
              in: body
              type: string
              description: "Comma-separated language codes (e.g., es,fr,de,ja)."
            - name: release_date
              in: body
              type: string
              description: "Target international release date in YYYY-MM-DD format."
          steps:
            - name: update-catalog
              type: call
              call: "catalog.update-title"
              with:
                title_id: "{{title_id}}"
                localization_status: "in_progress"
                target_languages: "{{target_languages}}"
            - name: upload-subtitles
              type: call
              call: "s3.put-object"
              with:
                bucket: "wb-localization-assets"
                key: "subtitles/{{title_id}}/{{target_languages}}"
                content_type: "application/zip"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "localization-ops"
                text: "Localization initiated for title {{title_id}} in {{target_languages}}. Target release: {{release_date}}. Assets: {{upload-subtitles.url}}"
  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: 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

Retrieves metadata for a content asset.

naftiko: "0.5"
info:
  label: "Content Metadata Lookup"
  description: "Retrieves metadata for a content asset."
  tags:
    - media
    - content-management
capability:
  exposes:
    - type: mcp
      namespace: media
      port: 8080
      tools:
        - name: get-content
          description: "Retrieves metadata for a content asset."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The content metadata lookup 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/metadata/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-content
              method: GET

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

Checks the content rights management system for titles with expiring licenses within a given window, syncs findings to Salesforce, and alerts the rights team via Slack.

naftiko: "0.5"
info:
  label: "Content Rights Expiry Monitor"
  description: "Checks the content rights management system for titles with expiring licenses within a given window, syncs findings to Salesforce, and alerts the rights team via Slack."
  tags:
    - licensing
    - rights-management
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: rights-management
      port: 8080
      tools:
        - name: check-expiring-rights
          description: "Given a number of days, find titles with rights expiring within that window, update Salesforce, and notify via Slack."
          inputParameters:
            - name: days_ahead
              in: body
              type: integer
              description: "Number of days ahead to check for expiring rights."
            - name: region
              in: body
              type: string
              description: "Region code to filter by (e.g., NA, EMEA, APAC)."
          steps:
            - name: get-expiring
              type: call
              call: "rights.list-expiring"
              with:
                days: "{{days_ahead}}"
                region: "{{region}}"
            - name: update-salesforce
              type: call
              call: "salesforce.create-task"
              with:
                subject: "Rights expiring within {{days_ahead}} days in {{region}}"
                description: "{{get-expiring.count}} titles with expiring rights. Review needed."
                priority: "High"
            - name: alert-team
              type: call
              call: "slack.post-message"
              with:
                channel: "rights-management"
                text: "Alert: {{get-expiring.count}} titles have rights expiring within {{days_ahead}} days in {{region}}. Salesforce task: {{update-salesforce.id}}"
  consumes:
    - type: http
      namespace: rights
      baseUri: "https://api.warnerbros.com/rights/v1"
      authentication:
        type: bearer
        token: "$secrets.rights_api_token"
      resources:
        - name: licenses
          path: "/licenses/expiring"
          operations:
            - name: list-expiring
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://warnerbros.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: slack
      baseUri: "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 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

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.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

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.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

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.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

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.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

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

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

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.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 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.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

Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
  tags:
    - hr
    - identity
    - operations
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-offboarding-orchestrator
          description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.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

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.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

Exports design assets from a Figma file, uploads them to Amazon S3, and notifies the creative team in Slack with download links.

naftiko: "0.5"
info:
  label: "Figma Design Asset Export"
  description: "Exports design assets from a Figma file, uploads them to Amazon S3, and notifies the creative team in Slack with download links."
  tags:
    - design
    - figma
    - amazon-s3
    - slack
capability:
  exposes:
    - type: mcp
      namespace: design-ops
      port: 8080
      tools:
        - name: export-design-assets
          description: "Given a Figma file key and node IDs, export assets, upload to S3, and notify the team."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "The Figma file key."
            - name: node_ids
              in: body
              type: string
              description: "Comma-separated Figma node IDs to export."
            - name: format
              in: body
              type: string
              description: "Export format (png, svg, pdf)."
          steps:
            - name: get-images
              type: call
              call: "figma.get-images"
              with:
                file_key: "{{file_key}}"
                ids: "{{node_ids}}"
                format: "{{format}}"
            - name: upload-to-s3
              type: call
              call: "s3.put-object"
              with:
                bucket: "wb-design-assets"
                key: "exports/{{file_key}}/{{format}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "creative-assets"
                text: "Design assets exported from Figma file {{file_key}} in {{format}} format. Download: {{upload-to-s3.url}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: images
          path: "/images/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-images
              method: GET
    - type: http
      namespace: s3
      baseUri: "https://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: slack
      baseUri: "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 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

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

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.warner-brothers.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Retrieves a HubSpot contact by email address, returning name, company, lifecycle stage, and last activity date.

naftiko: "0.5"
info:
  label: "HubSpot Contact Lookup"
  description: "Retrieves a HubSpot contact by email address, returning name, company, lifecycle stage, and last activity date."
  tags:
    - marketing
    - hubspot
    - crm
capability:
  exposes:
    - type: mcp
      namespace: marketing-crm
      port: 8080
      tools:
        - name: get-contact
          description: "Look up a HubSpot contact by email. Returns name, company, lifecycle stage, and last activity."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "The contact email address."
          call: "hubspot.get-contact-by-email"
          with:
            email: "{{email}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.properties.firstname + ' ' + $.properties.lastname"
            - name: company
              type: string
              mapping: "$.properties.company"
            - name: lifecycle_stage
              type: string
              mapping: "$.properties.lifecyclestage"
            - name: last_activity
              type: string
              mapping: "$.properties.notes_last_updated"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{email}}?idProperty=email"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact-by-email
              method: GET

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

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.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 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

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.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 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

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.warner-brothers.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              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.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 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

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

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.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 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

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

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

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

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

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

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

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

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

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

Sends a formatted notification message to a Microsoft Teams channel, used for cross-team alerts and updates.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification message to a Microsoft Teams channel, used for cross-team alerts and updates."
  tags:
    - collaboration
    - microsoft-teams
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: teams-messaging
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a notification message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Microsoft Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The notification message text."
          call: "msteams.send-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              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.warner-brothers.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

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

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

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

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.warner-brothers.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              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

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.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

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.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

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.warner-brothers.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Retrieves a Salesforce opportunity by ID and returns deal stage, amount, close date, and account name.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Lookup"
  description: "Retrieves a Salesforce opportunity by ID and returns deal stage, amount, close date, and account name."
  tags:
    - sales
    - salesforce
    - crm
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-opportunity
          description: "Look up a Salesforce opportunity by ID. Returns stage, amount, close date, and account."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
          call: "salesforce.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
          outputParameters:
            - name: stage
              type: string
              mapping: "$.StageName"
            - name: amount
              type: number
              mapping: "$.Amount"
            - name: close_date
              type: string
              mapping: "$.CloseDate"
            - name: account_name
              type: string
              mapping: "$.Account.Name"
  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

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

Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date."
  tags:
    - procurement
    - sap
    - sap-s4hana
    - purchase-order
    - finance
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number. Returns status, vendor, total value, and delivery date."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          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://warnerbros-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

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.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

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.warner-brothers.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Retrieves a ServiceNow incident by number and returns status, priority, assigned group, and resolution notes.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number and returns status, priority, assigned group, and resolution notes."
  tags:
    - it-ops
    - servicenow
    - incident
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number. Returns status, priority, assigned group, and description."
          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.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
            - name: description
              type: string
              mapping: "$.result.short_description"
  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: incidents
          path: "/table/incident?sysparm_query=number={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              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.warner-brothers.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: sharepoint
          path: "/sharepoint/document/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sharepoint
              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

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.warner-brothers.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: slack
          path: "/slack/notification/publisher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-slack
              method: GET

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.warner-brothers.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              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

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

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

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

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

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

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

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.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 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

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

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.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 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 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

Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.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 employee details from Workday including name, department, manager, and contact information for a given worker ID.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday including name, department, manager, and contact information for a given worker ID."
  tags:
    - hr
    - workday
    - employee
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Workday employee by worker ID. Returns name, department, manager, and email."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.name.full"
            - name: department
              type: string
              mapping: "$.worker.organization.name"
            - name: manager
              type: string
              mapping: "$.worker.manager.name.full"
            - name: email
              type: string
              mapping: "$.worker.contact.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: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves employee profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Retrieves employee profile from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-workday
          description: "Retrieves employee profile from Workday."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The workday employee profile identifier."
          call: "hr-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: hr-api
      baseUri: "https://api.warner-brothers.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.warner_brothers_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Retrieves YouTube channel performance metrics including subscriber count, view totals, and top-performing videos for a given channel ID.

naftiko: "0.5"
info:
  label: "YouTube Channel Analytics"
  description: "Retrieves YouTube channel performance metrics including subscriber count, view totals, and top-performing videos for a given channel ID."
  tags:
    - streaming
    - analytics
    - youtube
capability:
  exposes:
    - type: mcp
      namespace: youtube-analytics
      port: 8080
      tools:
        - name: get-channel-stats
          description: "Fetch YouTube channel statistics including subscribers, total views, and video count."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The YouTube channel identifier."
          call: "youtube.get-channel"
          with:
            channel_id: "{{channel_id}}"
          outputParameters:
            - name: subscriber_count
              type: string
              mapping: "$.items[0].statistics.subscriberCount"
            - name: view_count
              type: string
              mapping: "$.items[0].statistics.viewCount"
            - name: video_count
              type: string
              mapping: "$.items[0].statistics.videoCount"
  consumes:
    - type: http
      namespace: youtube
      baseUri: "https://www.googleapis.com/youtube/v3"
      authentication:
        type: apiKey
        key: "$secrets.youtube_api_key"
      resources:
        - name: channels
          path: "/channels?part=statistics&id={{channel_id}}"
          inputParameters:
            - name: channel_id
              in: query
          operations:
            - name: get-channel
              method: GET

Retrieves a Zendesk support ticket by ID and returns status, priority, assignee, and customer details.

naftiko: "0.5"
info:
  label: "Zendesk Support Ticket Lookup"
  description: "Retrieves a Zendesk support ticket by ID and returns status, priority, assignee, and customer details."
  tags:
    - customer-service
    - zendesk
    - support
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: get-support-ticket
          description: "Look up a Zendesk ticket by ID. Returns status, priority, assignee, and requester email."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID."
          call: "zendesk.get-ticket"
          with:
            ticket_id: "{{ticket_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.ticket.status"
            - name: priority
              type: string
              mapping: "$.ticket.priority"
            - name: assignee
              type: string
              mapping: "$.ticket.assignee.name"
            - name: requester_email
              type: string
              mapping: "$.ticket.requester.email"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://warnerbros.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET

Creates a Zoom meeting for a given host, sends calendar invites via Microsoft Outlook, and posts the meeting link in a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting for a given host, sends calendar invites via Microsoft Outlook, and posts the meeting link in a Microsoft Teams channel."
  tags:
    - collaboration
    - zoom
    - microsoft-outlook
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: meeting-mgmt
      port: 8080
      tools:
        - name: schedule-meeting
          description: "Given a host email, topic, and time, create a Zoom meeting, send Outlook invites, and post to Teams."
          inputParameters:
            - name: host_email
              in: body
              type: string
              description: "The Zoom host email address."
            - name: topic
              in: body
              type: string
              description: "The meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Meeting start time in ISO 8601 format."
            - name: duration_minutes
              in: body
              type: integer
              description: "Meeting duration in minutes."
            - name: attendees
              in: body
              type: string
              description: "Comma-separated attendee email addresses."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                host_email: "{{host_email}}"
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration_minutes}}"
            - name: send-invite
              type: call
              call: "outlook.create-event"
              with:
                subject: "{{topic}}"
                start: "{{start_time}}"
                attendees: "{{attendees}}"
                body: "Join Zoom: {{create-meeting.join_url}}"
            - name: post-to-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "general"
                text: "Meeting scheduled: {{topic}} at {{start_time}}. 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/{{host_email}}/meetings"
          inputParameters:
            - name: host_email
              in: path
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/me/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - 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