Disney Capabilities
Naftiko 0.5 capability definitions for Disney - 100 capabilities showing integration workflows and service orchestrations.
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