Disney Capabilities

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

Sort
Expand

Scans digital properties via GitHub Actions, logs findings in Snowflake, creates Jira remediation tickets, and reports to compliance via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Accessibility Compliance Audit Pipeline"
  description: "Scans digital properties via GitHub Actions, logs findings in Snowflake, creates Jira remediation tickets, and reports to compliance via Microsoft Teams."
  tags: [accessibility, github-actions, snowflake, jira, microsoft-teams]
capability:
  exposes:
    type: mcp
    namespace: disney-accessibility
    port: 8080
    tools:
      - name: run-audit
        description: Orchestrate digital accessibility audit.
        inputParameters:
          - name: property_url
            type: string
            description: URL to audit
            in: body
        steps:
          - name: run-scan
            call: github.createWorkflowDispatch
            with:
              repo: "disney/accessibility-scanner"
              workflow: "audit.yml"
          - name: log-findings
            call: snowflake.execute-statement
            with:
              statement: "INSERT INTO COMPLIANCE.ACCESSIBILITY_AUDITS (url, scan_date) VALUES ('{{property_url}}', CURRENT_DATE())"
          - name: create-tickets
            call: jira.createIssue
            with:
              project: "A11Y"
              summary: "Accessibility audit: {{property_url}}"
          - name: report
            call: msteams.sendMessage
            with:
              channel_id: $secrets.accessibility_channel
              text: "Accessibility audit complete: {{property_url}}. Jira: {{create-tickets.key}}."
  consumes:
    - namespace: github
      type: http
      baseUri: https://api.github.com
      authentication:
        type: bearer
        token: $secrets.github_token
      resources:
        - path: /repos/actions/workflows/dispatches
          operations:
            - name: createWorkflowDispatch
              method: POST
    - namespace: snowflake
      type: http
      baseUri: https://disney.snowflakecomputing.com/api/v2
      authentication:
        type: bearer
        token: $secrets.snowflake_token
      resources:
        - path: /statements
          operations:
            - name: execute-statement
              method: POST
    - namespace: jira
      type: http
      baseUri: https://disney.atlassian.net/rest/api/3
      authentication:
        type: basic
        username: $secrets.jira_user
        password: $secrets.jira_api_token
      resources:
        - path: /issue
          operations:
            - name: createIssue
              method: POST
    - namespace: msteams
      type: http
      baseUri: https://graph.microsoft.com/v1.0
      authentication:
        type: bearer
        token: $secrets.msgraph_token
      resources:
        - path: /teams/channels/messages
          operations:
            - name: sendMessage
              method: POST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Searches the Disney Confluence knowledge base for articles by keyword and space.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches the Disney Confluence knowledge base for articles by keyword and space."
  tags:
    - documentation
    - confluence
    - knowledge-base
capability:
  exposes:
    - type: mcp
      namespace: knowledge-search
      port: 8080
      tools:
        - name: search-kb
          description: "Search Confluence for knowledge base articles."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query."
            - name: space
              in: body
              type: string
              description: "Confluence space key."
          call: "confluence.search"
          with:
            cql: "text ~ '{{query}}' AND space = '{{space}}'"
          outputParameters:
            - name: results
              type: array
              mapping: "$.results"
  consumes:
    - namespace: confluence
      type: http
      baseUri: "https://disney.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - path: /search
          operations:
            - name: search
              method: GET

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

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

Extracts strings from Amazon S3, creates Jira translation tasks, tracks in Confluence, and notifies localization team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Content Localization Pipeline"
  description: "Extracts strings from Amazon S3, creates Jira translation tasks, tracks in Confluence, and notifies localization team via Microsoft Teams."
  tags: [localization, s3, jira, confluence, microsoft-teams]
capability:
  exposes:
    type: mcp
    namespace: disney-content-localization
    port: 8080
    tools:
      - name: content-localization
        description: "Extracts strings from Amazon S3."
        inputParameters:
          - name: input_id
            type: string
            description: Primary input identifier
            in: body
        steps:
          - name: get-strings
            call: s3.putObject
            with:
              bucket: "content-strings"
              key: "{{title}}/en-US.json"
          - name: create-tasks
            call: jira.createIssue
            with:
              project: "LOC"
              summary: "Localize: {{title}} to {{languages}}"
          - name: create-tracker
            call: confluence.createPage
            with:
              space: "LOC"
              title: "Localization: {{title}}"
          - name: notify
            call: msteams.sendMessage
            with:
              channel_id: $secrets.loc_channel
              text: "Localization started: {{title}}. Jira: {{create-tasks.key}}."
  consumes:
    - namespace: s3
      type: http
      baseUri: https://s3.us-east-1.amazonaws.com
      authentication:
        type: awsSigV4
        accessKeyId: $secrets.aws_access_key_id
        secretAccessKey: $secrets.aws_secret_access_key
      resources:
        - path: /bucket/key
          operations:
            - name: putObject
              method: PUT
    - namespace: jira
      type: http
      baseUri: https://disney.atlassian.net/rest/api/3
      authentication:
        type: basic
        username: $secrets.jira_user
        password: $secrets.jira_api_token
      resources:
        - path: /issue
          operations:
            - name: createIssue
              method: POST
    - namespace: confluence
      type: http
      baseUri: https://disney.atlassian.net/wiki/rest/api
      authentication:
        type: basic
        username: $secrets.confluence_user
        password: $secrets.confluence_api_token
      resources:
        - path: /content
          operations:
            - name: createPage
              method: POST
    - namespace: msteams
      type: http
      baseUri: https://graph.microsoft.com/v1.0
      authentication:
        type: bearer
        token: $secrets.msgraph_token
      resources:
        - path: /teams/channels/messages
          operations:
            - name: sendMessage
              method: POST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Retrieves project status summary from Jira including open issues, sprint progress, and blockers.

naftiko: "0.5"
info:
  label: "Jira Project Status Lookup"
  description: "Retrieves project status summary from Jira including open issues, sprint progress, and blockers."
  tags:
    - project-management
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: project-status
      port: 8080
      tools:
        - name: get-project-status
          description: "Look up Jira project summary."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
          call: "jira.get-project"
          with:
            project_key: "{{project_key}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: issue_count
              type: number
              mapping: "$.issueCount"
  consumes:
    - namespace: jira
      type: http
      baseUri: "https://disney.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - path: /project/{{project_key}}
          operations:
            - name: get-project
              method: GET

Fetches completed sprint data from Jira and posts a velocity digest to the engineering Teams channel.

naftiko: "0.5"
info:
  label: Jira Sprint Velocity Report
  description: Fetches completed sprint data from Jira and posts a velocity digest to the engineering Teams channel.
  tags: [devops, jira, teams, sprint, agile]
capability:
  exposes:
    type: mcp
    namespace: disney-sprint-velocity
    port: 8080
    tools:
      - name: post-sprint-velocity-report
        description: Retrieves completed sprint data from Jira and posts a story point velocity summary to Teams.
        inputParameters:
          - name: board_id
            type: string
            description: Jira board ID
            required: true
            in: body
          - name: sprint_id
            type: string
            description: Jira sprint ID
            required: true
            in: body
          - name: teams_channel
            type: string
            description: Teams channel name to post the report
            required: true
            in: body
        steps:
          - name: get-sprint-data
            call: jira.getSprint
            with:
              boardId: "{{input.board_id}}"
              sprintId: "{{input.sprint_id}}"
          - name: get-sprint-issues
            call: jira.getSprintIssues
            with:
              sprintId: "{{input.sprint_id}}"
              status: Done
          - name: post-velocity-report
            call: microsoft-teams.sendMessage
            with:
              channel: "{{input.teams_channel}}"
              message: "Sprint {{get-sprint-data.name}} velocity: {{get-sprint-issues.total}} issues, {{get-sprint-issues.storyPoints}} story points completed."
  consumes:
    - namespace: jira
      type: http
      baseUri: https://disney.atlassian.net/rest/agile/1.0
      authentication:
        type: bearer
        token: $secrets.jira_token
      resources:
        - path: /board/{boardId}/sprint/{sprintId}
          operations:
            - name: getSprint
              method: GET
        - path: /sprint/{sprintId}/issue
          operations:
            - name: getSprintIssues
              method: GET
    - namespace: microsoft-teams
      type: http
      baseUri: https://graph.microsoft.com/v1.0
      authentication:
        type: bearer
        token: $secrets.msgraph_token
      resources:
        - path: /teams/channels/messages
          operations:
            - name: sendMessage
              method: POST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Provisions a new Disney employee across Workday, ServiceNow, Microsoft 365, and Teams, then sends a welcome message to the hiring manager.

naftiko: "0.5"
info:
  label: New Employee Onboarding Orchestrator
  description: Provisions a new Disney employee across Workday, ServiceNow, Microsoft 365, and Teams, then sends a welcome message to the hiring manager.
  tags: [hr, onboarding, workday, servicenow, microsoft-365, teams]
capability:
  exposes:
    type: mcp
    namespace: disney-employee-onboarding
    port: 8080
    tools:
      - name: onboard-new-employee
        description: Creates the employee record in Workday, opens an IT provisioning ticket in ServiceNow, grants Microsoft 365 licenses, and sends a Teams welcome notification.
        inputParameters:
          - name: first_name
            type: string
            description: Employee first name
            required: true
            in: body
          - name: last_name
            type: string
            description: Employee last name
            required: true
            in: body
          - name: job_title
            type: string
            description: Job title for the new hire
            required: true
            in: body
          - name: department
            type: string
            description: Department or business unit
            required: true
            in: body
          - name: manager_email
            type: string
            description: Hiring manager email address
            required: true
            in: body
          - name: start_date
            type: string
            description: Start date in YYYY-MM-DD format
            required: true
            in: body
        steps:
          - name: create-workday-employee
            call: workday.createEmployee
            with:
              firstName: "{{input.first_name}}"
              lastName: "{{input.last_name}}"
              jobTitle: "{{input.job_title}}"
              department: "{{input.department}}"
              startDate: "{{input.start_date}}"
          - name: open-it-ticket
            call: servicenow.createIncident
            with:
              short_description: "IT provisioning for new hire {{input.first_name}} {{input.last_name}}"
              category: request
              assignment_group: IT Onboarding
              employee_id: "{{create-workday-employee.workerId}}"
          - name: grant-m365-license
            call: microsoft-graph.assignLicense
            with:
              userPrincipalName: "{{input.first_name}}.{{input.last_name}}@disney.com"
              skuId: $secrets.m365_sku_id
          - name: notify-manager
            call: microsoft-teams.sendMessage
            with:
              recipient: "{{input.manager_email}}"
              message: "Welcome! {{input.first_name}} {{input.last_name}} has been onboarded. Workday ID: {{create-workday-employee.workerId}}. IT ticket: {{open-it-ticket.ticketNumber}}."
  consumes:
    - namespace: workday
      type: http
      baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
      authentication:
        type: bearer
        token: $secrets.workday_token
      resources:
        - path: /workers
          operations:
            - name: createEmployee
              method: POST
    - namespace: servicenow
      type: http
      baseUri: https://disney.service-now.com/api/now/v1
      authentication:
        type: basic
        username: $secrets.servicenow_user
        password: $secrets.servicenow_password
      resources:
        - path: /table/incident
          operations:
            - name: createIncident
              method: POST
    - namespace: microsoft-graph
      type: http
      baseUri: https://graph.microsoft.com/v1.0
      authentication:
        type: bearer
        token: $secrets.msgraph_token
      resources:
        - path: /users/{userPrincipalName}/assignLicense
          operations:
            - name: assignLicense
              method: POST
    - namespace: microsoft-teams
      type: http
      baseUri: https://graph.microsoft.com/v1.0
      authentication:
        type: bearer
        token: $secrets.msgraph_token
      resources:
        - path: /chats/sendMessage
          operations:
            - name: sendMessage
              method: POST

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

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

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

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

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

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

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

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Schedule"
  description: "Retrieves the current on-call engineer for a Disney service from PagerDuty."
  tags:
    - incident-management
    - pagerduty
    - on-call
capability:
  exposes:
    - type: mcp
      namespace: pagerduty-oncall
      port: 8080
      tools:
        - name: get-oncall
          description: "Look up who is on-call for a service."
          inputParameters:
            - name: escalation_policy_id
              in: body
              type: string
              description: "PagerDuty escalation policy ID."
          call: "pagerduty.get-oncalls"
          with:
            escalation_policy_ids: "{{escalation_policy_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.oncalls[0].user.name"
            - name: email
              type: string
              mapping: "$.oncalls[0].user.email"
  consumes:
    - namespace: pagerduty
      type: http
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - path: /oncalls
          operations:
            - name: get-oncalls
              method: GET

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Retrieves vendor payment status and outstanding invoices from SAP.

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

Retrieves IT change request details from ServiceNow by change number.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Triggers a Tableau extract refresh for box office performance dashboards.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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