Netflix Capabilities

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

Sort
Expand

Submits user-generated content or subtitle text to Anthropic Claude for moderation analysis, logs the result in Snowflake, and flags problematic content for human review in Jira.

naftiko: "0.5"
info:
  label: "Anthropic Content Moderation Assistant"
  description: "Submits user-generated content or subtitle text to Anthropic Claude for moderation analysis, logs the result in Snowflake, and flags problematic content for human review in Jira."
  tags:
    - ai
    - content-moderation
    - anthropic
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: ai-moderation
      port: 8080
      tools:
        - name: moderate-content
          description: "Given a piece of user-generated content or subtitle text and a content ID, submit it to Anthropic Claude for safety analysis, log the result in Snowflake, and open a Jira review task if flagged. Use for automated content safety screening."
          inputParameters:
            - name: content_id
              in: body
              type: string
              description: "Unique identifier for the content being moderated."
            - name: content_text
              in: body
              type: string
              description: "The text to be moderated."
            - name: content_type
              in: body
              type: string
              description: "Type of content: user_review, subtitle, or comment."
          steps:
            - name: analyze-content
              type: call
              call: "anthropic.create-message"
              with:
                model: "claude-3-5-sonnet-20241022"
                content: "Analyze the following {{content_type}} for policy violations. Return JSON with fields: safe (boolean), reason (string). Content: {{content_text}}"
            - name: log-result
              type: call
              call: "snowflake-mod.execute-statement"
              with:
                statement: "INSERT INTO content_moderation_log VALUES ('{{content_id}}', '{{analyze-content.safe}}', '{{analyze-content.reason}}', CURRENT_TIMESTAMP())"
            - name: open-review-task
              type: call
              call: "jira-mod.create-issue"
              with:
                project_key: "TRUST"
                issuetype: "Task"
                summary: "Content review required: {{content_id}}"
                description: "AI moderation flag reason: {{analyze-content.reason}}"
  consumes:
    - type: http
      namespace: anthropic
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: snowflake-mod
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: jira-mod
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

When AWS Cost Explorer detects unusual spend on a service, creates a Jira FinOps review ticket and posts an alert to the cloud cost Slack channel with estimated overage details.

naftiko: "0.5"
info:
  label: "AWS Cloud Cost Anomaly Responder"
  description: "When AWS Cost Explorer detects unusual spend on a service, creates a Jira FinOps review ticket and posts an alert to the cloud cost Slack channel with estimated overage details."
  tags:
    - cloud
    - finops
    - aws
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: cloud-finops
      port: 8080
      tools:
        - name: handle-cost-anomaly
          description: "Given an AWS service name, anomaly ID, and estimated excess cost, create a Jira cost-review task and notify the FinOps Slack channel. Invoke when AWS Cost Anomaly Detection fires an alert."
          inputParameters:
            - name: anomaly_id
              in: body
              type: string
              description: "The AWS Cost Explorer anomaly detection ID."
            - name: service_name
              in: body
              type: string
              description: "The AWS service experiencing the cost anomaly."
            - name: excess_cost_usd
              in: body
              type: number
              description: "The estimated excess spend in USD."
          steps:
            - name: create-review-ticket
              type: call
              call: "jira-finops.create-issue"
              with:
                project_key: "FINOPS"
                issuetype: "Task"
                summary: "AWS cost anomaly: {{service_name}} — ${{excess_cost_usd}} excess"
                description: "Anomaly ID: {{anomaly_id}}"
            - name: alert-finops
              type: call
              call: "slack-finops.post-message"
              with:
                channel: "cloud-cost-alerts"
                text: "Cost Anomaly: {{service_name}} | Excess: ${{excess_cost_usd}} | Jira: {{create-review-ticket.key}}"
  consumes:
    - type: http
      namespace: jira-finops
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-finops
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a New Relic deployment marker, and alerts the responsible team in Slack.

naftiko: "0.5"
info:
  label: "CI/CD Pipeline Failure Handler"
  description: "On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a New Relic deployment marker, and alerts the responsible team in Slack."
  tags:
    - devops
    - ci-cd
    - github
    - jira
    - new-relic
    - slack
capability:
  exposes:
    - type: mcp
      namespace: devops-ci
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions run ID, repository, branch, failing job name, and commit SHA, open a Jira bug, create a New Relic deployment event, and post an alert to the team's Slack channel. Invoke on any protected-branch pipeline failure."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The GitHub Actions workflow run ID."
            - name: repository
              in: body
              type: string
              description: "The GitHub repository in owner/repo format."
            - name: branch
              in: body
              type: string
              description: "The branch on which the failure occurred."
            - name: job_name
              in: body
              type: string
              description: "The name of the failed job."
            - name: commit_sha
              in: body
              type: string
              description: "The commit SHA that triggered the run."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel ID or name to notify."
          steps:
            - name: create-bug
              type: call
              call: "jira-ci.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{repository}} / {{branch}} — {{job_name}}"
                description: "Run: {{run_id}}\nCommit: {{commit_sha}}"
            - name: create-nr-event
              type: call
              call: "newrelic.create-deployment-marker"
              with:
                entity_name: "{{repository}}"
                version: "{{commit_sha}}"
                description: "Pipeline failure on {{branch}}: {{job_name}}"
            - name: alert-team
              type: call
              call: "slack-ci.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Pipeline Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}"
  consumes:
    - type: http
      namespace: jira-ci
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apikey
        key: "X-Api-Key"
        value: "$secrets.newrelic_api_key"
        placement: header
      resources:
        - name: deployments
          path: "/deployments.json"
          operations:
            - name: create-deployment-marker
              method: POST
    - type: http
      namespace: slack-ci
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates or updates an incident runbook page in Confluence from a structured template and posts the link to the relevant Slack on-call channel.

naftiko: "0.5"
info:
  label: "Confluence Runbook Publisher"
  description: "Creates or updates an incident runbook page in Confluence from a structured template and posts the link to the relevant Slack on-call channel."
  tags:
    - itsm
    - documentation
    - confluence
    - slack
    - runbooks
capability:
  exposes:
    - type: mcp
      namespace: runbook-ops
      port: 8080
      tools:
        - name: publish-runbook
          description: "Given a service name, runbook content, and Confluence space key, create or update the runbook page and post the page link to the on-call Slack channel. Use when a new service is deployed or when runbooks need updating."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The name of the service the runbook covers."
            - name: space_key
              in: body
              type: string
              description: "The Confluence space key where the runbook will be published."
            - name: runbook_content
              in: body
              type: string
              description: "The runbook body content in Confluence wiki markup or HTML."
          steps:
            - name: create-page
              type: call
              call: "confluence.create-page"
              with:
                space_key: "{{space_key}}"
                title: "Runbook: {{service_name}}"
                body: "{{runbook_content}}"
            - name: notify-oncall
              type: call
              call: "slack-runbook.post-message"
              with:
                channel: "on-call"
                text: "Runbook published for {{service_name}}: {{create-page.page_url}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://netflix.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack-runbook
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks video encoding pipeline health from Datadog monitors.

naftiko: "0.5"
info:
  label: "Datadog Encoding Pipeline Health Check"
  description: "Checks video encoding pipeline health from Datadog monitors."
  tags:
    - encoding
    - datadog
    - video
capability:
  exposes:
    - type: mcp
      namespace: encoding-ops
      port: 8080
      tools:
        - name: get-encoding-health
          description: "Given a service name, return encoding pipeline health."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Encoding service name."
          call: "dd-encode.get-monitors"
          with:
            name: "{{service_name}}"
          outputParameters:
            - name: monitors
              type: array
              mapping: "$.monitors"
  consumes:
    - type: http
      namespace: dd-encode
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: name
              in: query
          operations:
            - name: get-monitors
              method: GET

Checks video playback error rates from Datadog.

naftiko: "0.5"
info:
  label: "Datadog Playback Error Rate Check"
  description: "Checks video playback error rates from Datadog."
  tags:
    - streaming
    - datadog
    - playback
capability:
  exposes:
    - type: mcp
      namespace: playback-ops
      port: 8080
      tools:
        - name: get-playback-errors
          description: "Given a device type, return playback error rates."
          inputParameters:
            - name: device_type
              in: body
              type: string
              description: "Device type (e.g. smart_tv, mobile)."
          call: "dd-playback.get-metrics"
          with:
            query: "avg:playback.error_rate{device:{{device_type}}}"
          outputParameters:
            - name: series
              type: array
              mapping: "$.series"
  consumes:
    - type: http
      namespace: dd-playback
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: get-metrics
              method: GET

Queries Datadog for streaming CDN latency metrics by region.

naftiko: "0.5"
info:
  label: "Datadog Streaming CDN Latency Check"
  description: "Queries Datadog for streaming CDN latency metrics by region."
  tags:
    - streaming
    - datadog
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: cdn-ops
      port: 8080
      tools:
        - name: get-cdn-latency
          description: "Given a region, return streaming CDN latency metrics from Datadog."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Geographic region."
          call: "dd-cdn.get-metrics"
          with:
            query: "avg:cdn.latency{region:{{region}}}"
          outputParameters:
            - name: series
              type: array
              mapping: "$.series"
  consumes:
    - type: http
      namespace: dd-cdn
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: get-metrics
              method: GET

When an employee termination is recorded in Workday, deactivates their Okta account, removes GitHub organization membership, archives their Confluence profile, and notifies their manager in Slack.

naftiko: "0.5"
info:
  label: "Employee Offboarding Deprovisioner"
  description: "When an employee termination is recorded in Workday, deactivates their Okta account, removes GitHub organization membership, archives their Confluence profile, and notifies their manager in Slack."
  tags:
    - hr
    - offboarding
    - workday
    - okta
    - github
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: trigger-offboarding
          description: "Given a Workday employee ID, deactivate Okta account, remove from GitHub org, and notify the manager in Slack. Invoke on confirmed termination in Workday."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID of the departing employee."
          steps:
            - name: get-employee
              type: call
              call: "workday-off.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: deactivate-okta
              type: call
              call: "okta-off.deactivate-user"
              with:
                login: "{{get-employee.work_email}}"
            - name: remove-github
              type: call
              call: "github-off.remove-org-member"
              with:
                org: "netflix"
                username: "{{get-employee.github_username}}"
            - name: notify-manager
              type: call
              call: "slack-off.post-message"
              with:
                channel: "{{get-employee.manager_slack_id}}"
                text: "Offboarding complete for {{get-employee.full_name}}. Okta and GitHub access have been revoked."
  consumes:
    - type: http
      namespace: workday-off
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/netflix/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta-off
      baseUri: "https://netflix.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: user-lifecycle
          path: "/users/{{login}}/lifecycle/deactivate"
          inputParameters:
            - name: login
              in: path
          operations:
            - name: deactivate-user
              method: POST
    - type: http
      namespace: github-off
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: org-members
          path: "/orgs/{{org}}/members/{{username}}"
          inputParameters:
            - name: org
              in: path
            - name: username
              in: path
          operations:
            - name: remove-org-member
              method: DELETE
    - type: http
      namespace: slack-off
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves the latest Chaos Monkey release from GitHub.

naftiko: "0.5"
info:
  label: "GitHub Chaos Monkey Release Lookup"
  description: "Retrieves the latest Chaos Monkey release from GitHub."
  tags:
    - reliability
    - github
    - chaos-engineering
capability:
  exposes:
    - type: mcp
      namespace: chaos-ops
      port: 8080
      tools:
        - name: get-chaos-release
          description: "Return the latest Chaos Monkey release."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "Repository name."
          call: "github-chaos.get-release"
          with:
            repo_name: "{{repo_name}}"
          outputParameters:
            - name: release
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-chaos
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: releases
          path: "/repos/Netflix/{{repo_name}}/releases/latest"
          inputParameters:
            - name: repo_name
              in: path
          operations:
            - name: get-release
              method: GET

Checks CI status for a branch in the Conductor workflow repository.

naftiko: "0.5"
info:
  label: "GitHub Conductor Workflow Branch Status"
  description: "Checks CI status for a branch in the Conductor workflow repository."
  tags:
    - engineering
    - github
    - conductor
capability:
  exposes:
    - type: mcp
      namespace: conductor-dev
      port: 8080
      tools:
        - name: get-conductor-branch
          description: "Given a branch name, return CI status."
          inputParameters:
            - name: branch_name
              in: body
              type: string
              description: "Branch name."
          call: "github-conductor.get-branch"
          with:
            branch_name: "{{branch_name}}"
          outputParameters:
            - name: branch
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-conductor
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: branches
          path: "/repos/Netflix/conductor/branches/{{branch_name}}"
          inputParameters:
            - name: branch_name
              in: path
          operations:
            - name: get-branch
              method: GET

When Dependabot raises a critical or high vulnerability alert in a GitHub repository, opens a Jira security ticket and notifies the responsible team in Slack.

naftiko: "0.5"
info:
  label: "GitHub Dependabot Alert Triage"
  description: "When Dependabot raises a critical or high vulnerability alert in a GitHub repository, opens a Jira security ticket and notifies the responsible team in Slack."
  tags:
    - security
    - devops
    - github
    - jira
    - slack
    - dependency-management
capability:
  exposes:
    - type: mcp
      namespace: security-vuln
      port: 8080
      tools:
        - name: triage-dependabot-alert
          description: "Given a GitHub repository, Dependabot alert number, and severity, open a Jira security ticket and notify the repository owners in Slack. Use for automated vulnerability triage on critical and high severity Dependabot alerts."
          inputParameters:
            - name: repository
              in: body
              type: string
              description: "The GitHub repository in owner/repo format."
            - name: alert_number
              in: body
              type: integer
              description: "The Dependabot security alert number."
            - name: severity
              in: body
              type: string
              description: "Alert severity: critical, high, medium, or low."
            - name: package_name
              in: body
              type: string
              description: "The vulnerable package name."
          steps:
            - name: get-alert
              type: call
              call: "github-vuln.get-dependabot-alert"
              with:
                repo: "{{repository}}"
                alert_number: "{{alert_number}}"
            - name: create-ticket
              type: call
              call: "jira-vuln.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "[{{severity}}] Dependabot: {{package_name}} in {{repository}}"
                priority: "High"
            - name: notify-owners
              type: call
              call: "slack-vuln.post-message"
              with:
                channel: "security-alerts"
                text: "Dependabot alert ({{severity}}): {{package_name}} in {{repository}}. Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: github-vuln
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{repo}}/dependabot/alerts/{{alert_number}}"
          inputParameters:
            - name: repo
              in: path
            - name: alert_number
              in: path
          operations:
            - name: get-dependabot-alert
              method: GET
    - type: http
      namespace: jira-vuln
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-vuln
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

On a successful GitHub Actions deployment to production, creates a New Relic deployment marker, transitions the linked Jira issue to Done, and posts a release note to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Deployment to Production Tracker"
  description: "On a successful GitHub Actions deployment to production, creates a New Relic deployment marker, transitions the linked Jira issue to Done, and posts a release note to the engineering Slack channel."
  tags:
    - devops
    - deployment
    - github
    - new-relic
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: devops-deploy
      port: 8080
      tools:
        - name: record-production-deployment
          description: "Given a repository, commit SHA, environment, and Jira issue key, record a New Relic deployment marker, close the Jira issue, and post a release note to Slack. Use after every successful production deployment."
          inputParameters:
            - name: repository
              in: body
              type: string
              description: "The GitHub repository in owner/repo format."
            - name: commit_sha
              in: body
              type: string
              description: "The deployed commit SHA."
            - name: environment
              in: body
              type: string
              description: "The deployment environment (e.g., production, canary)."
            - name: jira_issue_key
              in: body
              type: string
              description: "Jira issue key to mark as Done (e.g., ENG-4321)."
          steps:
            - name: create-nr-marker
              type: call
              call: "newrelic-deploy.create-deployment-marker"
              with:
                entity_name: "{{repository}}"
                version: "{{commit_sha}}"
                description: "Deployed to {{environment}}"
            - name: close-jira
              type: call
              call: "jira-deploy.transition-issue"
              with:
                issue_key: "{{jira_issue_key}}"
                transition_id: "31"
            - name: post-release
              type: call
              call: "slack-deploy.post-message"
              with:
                channel: "releases"
                text: "Deployed {{repository}} ({{commit_sha}}) to {{environment}}. Jira: {{jira_issue_key}} closed."
  consumes:
    - type: http
      namespace: newrelic-deploy
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apikey
        key: "X-Api-Key"
        value: "$secrets.newrelic_api_key"
        placement: header
      resources:
        - name: deployments
          path: "/deployments.json"
          operations:
            - name: create-deployment-marker
              method: POST
    - type: http
      namespace: jira-deploy
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issue-transitions
          path: "/issue/{{issue_key}}/transitions"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: transition-issue
              method: POST
    - type: http
      namespace: slack-deploy
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Lists all public or unarchived repositories in the Netflix GitHub organization and flags any that are missing required topics, descriptions, or CODEOWNERS files.

naftiko: "0.5"
info:
  label: "GitHub Org Repo Audit"
  description: "Lists all public or unarchived repositories in the Netflix GitHub organization and flags any that are missing required topics, descriptions, or CODEOWNERS files."
  tags:
    - devops
    - github
    - compliance
    - audit
capability:
  exposes:
    - type: mcp
      namespace: github-audit
      port: 8080
      tools:
        - name: audit-org-repos
          description: "Given a GitHub organization name, list all repositories and identify those missing required metadata (description, topics, CODEOWNERS). Returns a list of non-compliant repos for remediation. Use for quarterly repository governance audits."
          inputParameters:
            - name: org
              in: body
              type: string
              description: "The GitHub organization name to audit."
          call: "github-org.list-repos"
          with:
            org: "{{org}}"
          outputParameters:
            - name: repos
              type: array
              mapping: "$.items[*]"
  consumes:
    - type: http
      namespace: github-org
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: repos
          path: "/orgs/{{org}}/repos"
          inputParameters:
            - name: org
              in: path
          operations:
            - name: list-repos
              method: GET

When a GitHub pull request is opened against a main branch, triggers a security scan, posts findings as a PR comment, and opens a Jira security ticket for any critical findings.

naftiko: "0.5"
info:
  label: "GitHub Pull Request Security Scan Orchestrator"
  description: "When a GitHub pull request is opened against a main branch, triggers a security scan, posts findings as a PR comment, and opens a Jira security ticket for any critical findings."
  tags:
    - devops
    - security
    - github
    - jira
    - code-review
capability:
  exposes:
    - type: mcp
      namespace: devops-security
      port: 8080
      tools:
        - name: scan-pull-request
          description: "Given a GitHub repository, PR number, and branch, trigger a security scan via the GitHub Security API, post findings to the PR as a review comment, and open a Jira issue for critical vulnerabilities. Invoke on every PR opened against main or release branches."
          inputParameters:
            - name: repository
              in: body
              type: string
              description: "The GitHub repository in owner/repo format."
            - name: pr_number
              in: body
              type: integer
              description: "The pull request number."
            - name: commit_sha
              in: body
              type: string
              description: "The head commit SHA of the pull request."
          steps:
            - name: get-pr
              type: call
              call: "github-pr.get-pull-request"
              with:
                repo: "{{repository}}"
                pr_number: "{{pr_number}}"
            - name: get-scan-alerts
              type: call
              call: "github-sec.list-code-scanning-alerts"
              with:
                repo: "{{repository}}"
                ref: "{{commit_sha}}"
            - name: post-review-comment
              type: call
              call: "github-review.create-review-comment"
              with:
                repo: "{{repository}}"
                pr_number: "{{pr_number}}"
                body: "Security scan complete. Alerts: {{get-scan-alerts.count}}. Critical: {{get-scan-alerts.critical_count}}"
            - name: open-security-ticket
              type: call
              call: "jira-sec.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "Security findings in {{repository}} PR#{{pr_number}}"
                priority: "High"
  consumes:
    - type: http
      namespace: github-pr
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/repos/{{repo}}/pulls/{{pr_number}}"
          inputParameters:
            - name: repo
              in: path
            - name: pr_number
              in: path
          operations:
            - name: get-pull-request
              method: GET
    - type: http
      namespace: github-sec
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: code-scanning-alerts
          path: "/repos/{{repo}}/code-scanning/alerts"
          inputParameters:
            - name: repo
              in: path
            - name: ref
              in: query
          operations:
            - name: list-code-scanning-alerts
              method: GET
    - type: http
      namespace: github-review
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: review-comments
          path: "/repos/{{repo}}/pulls/{{pr_number}}/reviews"
          inputParameters:
            - name: repo
              in: path
            - name: pr_number
              in: path
          operations:
            - name: create-review-comment
              method: POST
    - type: http
      namespace: jira-sec
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Audits GitHub repositories in the Netflix organization for missing branch protection rules and security policies, then opens Jira remediation tasks for non-compliant repos.

naftiko: "0.5"
info:
  label: "GitHub Repository Security Policy Enforcer"
  description: "Audits GitHub repositories in the Netflix organization for missing branch protection rules and security policies, then opens Jira remediation tasks for non-compliant repos."
  tags:
    - security
    - github
    - compliance
    - jira
capability:
  exposes:
    - type: mcp
      namespace: security-enforcement
      port: 8080
      tools:
        - name: audit-repo-security-policy
          description: "Given a GitHub organization and repository name, check for required branch protection and secret scanning policies. Open a Jira security remediation task for any gaps found. Use for monthly security compliance audits."
          inputParameters:
            - name: org
              in: body
              type: string
              description: "The GitHub organization name."
            - name: repo_name
              in: body
              type: string
              description: "The repository name to audit."
          steps:
            - name: get-branch-protection
              type: call
              call: "github-policy.get-branch-protection"
              with:
                org: "{{org}}"
                repo: "{{repo_name}}"
                branch: "main"
            - name: open-remediation-task
              type: call
              call: "jira-policy.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Task"
                summary: "Security policy gap: {{org}}/{{repo_name}}"
                description: "Branch protection status: {{get-branch-protection.enabled}}"
  consumes:
    - type: http
      namespace: github-policy
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: branch-protection
          path: "/repos/{{org}}/{{repo}}/branches/{{branch}}/protection"
          inputParameters:
            - name: org
              in: path
            - name: repo
              in: path
            - name: branch
              in: path
          operations:
            - name: get-branch-protection
              method: GET
    - type: http
      namespace: jira-policy
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves PR review status in the streaming platform repository.

naftiko: "0.5"
info:
  label: "GitHub Streaming Platform PR Status"
  description: "Retrieves PR review status in the streaming platform repository."
  tags:
    - engineering
    - github
    - streaming
capability:
  exposes:
    - type: mcp
      namespace: stream-dev
      port: 8080
      tools:
        - name: get-stream-pr
          description: "Given a PR number, return review status."
          inputParameters:
            - name: pr_number
              in: body
              type: integer
              description: "PR number."
          call: "github-stream.get-pr"
          with:
            pr_number: "{{pr_number}}"
          outputParameters:
            - name: pr
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-stream
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pulls
          path: "/repos/Netflix/streaming-platform/pulls/{{pr_number}}"
          inputParameters:
            - name: pr_number
              in: path
          operations:
            - name: get-pr
              method: GET

Retrieves the latest Zuul gateway release from GitHub.

naftiko: "0.5"
info:
  label: "GitHub Zuul Gateway Release Lookup"
  description: "Retrieves the latest Zuul gateway release from GitHub."
  tags:
    - engineering
    - github
    - zuul
capability:
  exposes:
    - type: mcp
      namespace: zuul-ops
      port: 8080
      tools:
        - name: get-zuul-release
          description: "Return the latest Zuul release from GitHub."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "Repository name."
          call: "github-zuul.get-release"
          with:
            repo_name: "{{repo_name}}"
          outputParameters:
            - name: release
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-zuul
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: releases
          path: "/repos/Netflix/{{repo_name}}/releases/latest"
          inputParameters:
            - name: repo_name
              in: path
          operations:
            - name: get-release
              method: GET

Retrieves sprint status for the content engineering Jira board.

naftiko: "0.5"
info:
  label: "Jira Content Engineering Sprint Status"
  description: "Retrieves sprint status for the content engineering Jira board."
  tags:
    - engineering
    - jira
    - content
capability:
  exposes:
    - type: mcp
      namespace: content-eng
      port: 8080
      tools:
        - name: get-sprint-status
          description: "Given a board ID, return sprint status."
          inputParameters:
            - name: board_id
              in: body
              type: integer
              description: "Jira board ID."
          call: "jira-content.get-sprints"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprints
              type: array
              mapping: "$.values"
  consumes:
    - type: http
      namespace: jira-content
      baseUri: "https://netflix.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprints
              method: GET

Returns status and details of a content engineering Jira ticket.

naftiko: "0.5"
info:
  label: "Jira Content Engineering Ticket Lookup"
  description: "Returns status and details of a content engineering Jira ticket."
  tags:
    - devops
    - jira
    - content-engineering
capability:
  exposes:
    - type: mcp
      namespace: jira_content_enginee
      port: 8080
      tools:
        - name: query-data
          description: "Returns status and details of a content engineering Jira ticket."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

After a P1 incident is resolved in Jira, automatically creates a Confluence post-mortem page from a template and links it back to the original Jira incident.

naftiko: "0.5"
info:
  label: "Jira Incident Post-Mortem Creator"
  description: "After a P1 incident is resolved in Jira, automatically creates a Confluence post-mortem page from a template and links it back to the original Jira incident."
  tags:
    - itsm
    - incident-management
    - jira
    - confluence
    - post-mortem
capability:
  exposes:
    - type: mcp
      namespace: postmortem-ops
      port: 8080
      tools:
        - name: create-post-mortem
          description: "Given a resolved Jira incident key, create a Confluence post-mortem page pre-filled with incident timeline, impact, and resolution details, then link the page back to the Jira issue. Use after every P1 or P2 incident is resolved."
          inputParameters:
            - name: incident_key
              in: body
              type: string
              description: "The Jira incident issue key (e.g., OPS-1234)."
          steps:
            - name: get-incident
              type: call
              call: "jira-pm.get-issue"
              with:
                issue_key: "{{incident_key}}"
            - name: create-pm-page
              type: call
              call: "confluence-pm.create-page"
              with:
                space_key: "POSTMORTEMS"
                title: "Post-Mortem: {{get-incident.summary}} ({{incident_key}})"
                body: "Incident: {{incident_key}}\nSummary: {{get-incident.summary}}\nResolved: {{get-incident.resolution_date}}"
            - name: link-to-jira
              type: call
              call: "jira-pm-link.add-remote-link"
              with:
                issue_key: "{{incident_key}}"
                url: "{{create-pm-page.page_url}}"
                title: "Post-Mortem Document"
  consumes:
    - type: http
      namespace: jira-pm
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET
    - type: http
      namespace: confluence-pm
      baseUri: "https://netflix.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: jira-pm-link
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: remote-links
          path: "/issue/{{issue_key}}/remotelink"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-remote-link
              method: POST

Returns open bug count in the recommendation engine Jira project.

naftiko: "0.5"
info:
  label: "Jira Recommendation Engine Bug Count"
  description: "Returns open bug count in the recommendation engine Jira project."
  tags:
    - ai
    - jira
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: rec-eng
      port: 8080
      tools:
        - name: get-rec-bugs
          description: "Given a priority, return recommendation engine bug count."
          inputParameters:
            - name: priority
              in: body
              type: string
              description: "Priority filter."
          call: "jira-rec.search-issues"
          with:
            jql: "project = REC AND type = Bug AND status != Done AND priority = {{priority}}"
          outputParameters:
            - name: total
              type: number
              mapping: "$.total"
  consumes:
    - type: http
      namespace: jira-rec
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET

Fetches completed sprint data from Jira for an engineering team and posts a velocity trend report to the team's Slack channel to support sprint planning.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "Fetches completed sprint data from Jira for an engineering team and posts a velocity trend report to the team's Slack channel to support sprint planning."
  tags:
    - devops
    - agile
    - jira
    - reporting
    - slack
capability:
  exposes:
    - type: mcp
      namespace: agile-reporting
      port: 8080
      tools:
        - name: publish-sprint-velocity
          description: "Given a Jira board ID and number of past sprints, fetch completed sprint velocity data and post a trend summary to Slack. Use before sprint planning or quarterly engineering reviews."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira agile board ID."
            - name: sprint_count
              in: body
              type: integer
              description: "Number of past sprints to include in the velocity trend."
          steps:
            - name: get-sprints
              type: call
              call: "jira-velocity.get-closed-sprints"
              with:
                board_id: "{{board_id}}"
                max_results: "{{sprint_count}}"
            - name: post-velocity
              type: call
              call: "slack-velocity.post-message"
              with:
                channel: "engineering-planning"
                text: "Sprint Velocity Report (last {{sprint_count}} sprints) for board {{board_id}}: {{get-sprints.avg_velocity}} pts avg."
  consumes:
    - type: http
      namespace: jira-velocity
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: closed-sprints
          path: "/board/{{board_id}}/sprint"
          inputParameters:
            - name: board_id
              in: path
            - name: max_results
              in: query
          operations:
            - name: get-closed-sprints
              method: GET
    - type: http
      namespace: slack-velocity
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves studio production tracking status from Jira.

naftiko: "0.5"
info:
  label: "Jira Studio Production Tracker"
  description: "Retrieves studio production tracking status from Jira."
  tags:
    - content
    - jira
    - production
capability:
  exposes:
    - type: mcp
      namespace: studio-ops
      port: 8080
      tools:
        - name: get-production-status
          description: "Given a project key, return studio production status."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
          call: "jira-studio.search-issues"
          with:
            jql: "project = {{project_key}} AND type = Story"
          outputParameters:
            - name: issues
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: jira-studio
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET

Pulls competitive talent movement and hiring trend data from LinkedIn to generate a quarterly talent intelligence report, posted to the recruiting leadership Slack channel.

naftiko: "0.5"
info:
  label: "LinkedIn Talent Intelligence Digest"
  description: "Pulls competitive talent movement and hiring trend data from LinkedIn to generate a quarterly talent intelligence report, posted to the recruiting leadership Slack channel."
  tags:
    - hr
    - recruiting
    - linkedin
    - talent-intelligence
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: talent-intelligence
      port: 8080
      tools:
        - name: digest-talent-trends
          description: "Given a LinkedIn organization URN and date range, fetch talent flow and competitor hiring signals and post a quarterly intelligence summary to the recruiting leadership Slack channel. Use for strategic workforce planning."
          inputParameters:
            - name: org_urn
              in: body
              type: string
              description: "The Netflix LinkedIn organization URN."
            - name: date_from
              in: body
              type: string
              description: "Start date for the talent trend analysis in YYYY-MM-DD format."
            - name: date_to
              in: body
              type: string
              description: "End date for the analysis in YYYY-MM-DD format."
          steps:
            - name: get-follower-stats
              type: call
              call: "linkedin-talent.get-follower-statistics"
              with:
                org_urn: "{{org_urn}}"
            - name: post-digest
              type: call
              call: "slack-talent.post-message"
              with:
                channel: "recruiting-leadership"
                text: "Talent Intelligence Digest ({{date_from}}–{{date_to}}): Followers={{get-follower-stats.total_count}}, Growth={{get-follower-stats.growth_rate}}"
  consumes:
    - type: http
      namespace: linkedin-talent
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: follower-statistics
          path: "/organizationalEntityFollowerStatistics"
          inputParameters:
            - name: org_urn
              in: query
          operations:
            - name: get-follower-statistics
              method: GET
    - type: http
      namespace: slack-talent
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team.

naftiko: "0.5"
info:
  label: "Netflix A/B Test Graduation Workflow"
  description: "When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team."
  tags:
    - analytics
    - snowflake
    - jira
    - slack
    - experimentation
capability:
  exposes:
    - type: mcp
      namespace: netflix_ab_test_grad
      port: 8080
      tools:
        - name: handle-event
          description: "When an A/B test reaches significance, queries results from Snowflake, creates a Jira deployment ticket, and notifies the product team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[analytics] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "analytics-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team.

naftiko: "0.5"
info:
  label: "Netflix Accessibility Compliance Checker"
  description: "Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - accessibility
capability:
  exposes:
    - type: mcp
      namespace: netflix_accessibilit
      port: 8080
      tools:
        - name: handle-event
          description: "Checks accessibility compliance from Snowflake for subtitles and audio descriptions, creates Jira tasks, and alerts the accessibility team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team.

naftiko: "0.5"
info:
  label: "Netflix Ad Tier Revenue Monitor"
  description: "Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - advertising
capability:
  exposes:
    - type: mcp
      namespace: netflix_ad_tier_reve
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors ad tier revenue metrics from Snowflake, creates Jira tasks for underperforming segments, and notifies the ads team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team.

naftiko: "0.5"
info:
  label: "Netflix Audio Quality Validation Workflow"
  description: "Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - audio
capability:
  exposes:
    - type: mcp
      namespace: netflix_audio_qualit
      port: 8080
      tools:
        - name: handle-event
          description: "Validates audio quality for new content from Snowflake checks, creates Jira tasks for failures, and notifies the audio team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team.

naftiko: "0.5"
info:
  label: "Netflix CDN Cache Purge Workflow"
  description: "When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team."
  tags:
    - streaming
    - new-relic
    - jira
    - slack
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: netflix_cdn_cache_pu
      port: 8080
      tools:
        - name: handle-event
          description: "When content is updated, triggers CDN cache purge, verifies propagation via New Relic, and notifies the content delivery team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team.

naftiko: "0.5"
info:
  label: "Netflix Chaos Engineering Experiment Tracker"
  description: "When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team."
  tags:
    - devops
    - new-relic
    - jira
    - slack
    - chaos-engineering
capability:
  exposes:
    - type: mcp
      namespace: netflix_chaos_engine
      port: 8080
      tools:
        - name: handle-event
          description: "When a chaos experiment completes, queries results from New Relic, creates Jira findings, and notifies the resilience team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[devops] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "devops-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack.

naftiko: "0.5"
info:
  label: "Netflix Content Cost Per View Analysis"
  description: "Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack."
  tags:
    - finance
    - snowflake
    - jira
    - slack
    - content-analytics
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_cost
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes content cost-per-view from Snowflake, creates Jira tasks for underperforming titles, and posts insights to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[finance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "finance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack.

naftiko: "0.5"
info:
  label: "Netflix Content Delivery Optimization"
  description: "Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_deli
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes CDN performance from Snowflake, creates Jira optimization tasks for slow regions, and posts findings to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team.

naftiko: "0.5"
info:
  label: "Netflix Content Launch Readiness Check"
  description: "Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - content-launch
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_laun
      port: 8080
      tools:
        - name: handle-event
          description: "Before a title launch, verifies encoding completion, CDN propagation, and metadata quality from Snowflake, creates Jira tasks for gaps, and notifies the launch team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition.

naftiko: "0.5"
info:
  label: "Netflix Content Licensing Expiry Handler"
  description: "When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - content-licensing
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_lice
      port: 8080
      tools:
        - name: handle-event
          description: "When content licenses approach expiry, queries viewership from Snowflake, creates Jira renewal tasks, and notifies content acquisition."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team.

naftiko: "0.5"
info:
  label: "Netflix Content Localization Quality Check"
  description: "Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - localization
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_loca
      port: 8080
      tools:
        - name: handle-event
          description: "Queries localization quality scores from Snowflake, creates Jira tasks for low-quality translations, and alerts the localization team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team.

naftiko: "0.5"
info:
  label: "Netflix Content Metadata Quality Audit"
  description: "Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - metadata
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_meta
      port: 8080
      tools:
        - name: handle-event
          description: "Audits content metadata quality from Snowflake, creates Jira tasks for incomplete entries, and notifies the metadata team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team.

naftiko: "0.5"
info:
  label: "Netflix Content Moderation Escalation"
  description: "When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - moderation
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_mode
      port: 8080
      tools:
        - name: handle-event
          description: "When AI content moderation flags an issue, creates a Jira review task, queries similar flags from Snowflake, and alerts the trust team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team.

naftiko: "0.5"
info:
  label: "Netflix Content Pipeline Throughput Monitor"
  description: "Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - content-pipeline
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_pipe
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors content processing pipeline throughput from Snowflake, creates Jira tickets for bottlenecks, and alerts the pipeline team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack.

naftiko: "0.5"
info:
  label: "Netflix Content Premiere Analytics Digest"
  description: "Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - content-analytics
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_prem
      port: 8080
      tools:
        - name: handle-event
          description: "Generates premiere week analytics from Snowflake for new titles, creates Jira insight tasks, and posts highlights to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team.

naftiko: "0.5"
info:
  label: "Netflix Content Ratings Anomaly Detector"
  description: "When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - trust-safety
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_rati
      port: 8080
      tools:
        - name: handle-event
          description: "When content ratings show anomalous patterns, queries Snowflake for details, creates a Jira investigation, and alerts the trust team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack.

naftiko: "0.5"
info:
  label: "Netflix Content Recommendation Refresh"
  description: "Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: netflix_content_reco
      port: 8080
      tools:
        - name: handle-event
          description: "Triggers recommendation model refresh, queries performance from Snowflake, creates Jira tasks for degraded models, and posts to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack.

naftiko: "0.5"
info:
  label: "Netflix Data Platform Health Digest"
  description: "Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack."
  tags:
    - data-engineering
    - snowflake
    - new-relic
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: netflix_data_platfor
      port: 8080
      tools:
        - name: handle-event
          description: "Generates data platform health digest from Snowflake and New Relic, creates Jira tasks for issues, and posts to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[data-engineering] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "data-engineering-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team.

naftiko: "0.5"
info:
  label: "Netflix Device Compatibility Regression"
  description: "When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - devices
capability:
  exposes:
    - type: mcp
      namespace: netflix_device_compa
      port: 8080
      tools:
        - name: handle-event
          description: "When device compatibility drops, queries Snowflake for affected devices, creates Jira bugs, and alerts the device team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team.

naftiko: "0.5"
info:
  label: "Netflix Encoding Pipeline Failure Handler"
  description: "When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - encoding
capability:
  exposes:
    - type: mcp
      namespace: netflix_encoding_pip
      port: 8080
      tools:
        - name: handle-event
          description: "When encoding pipeline failures occur, queries Snowflake for affected titles, creates Jira tickets, and alerts the encoding team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team.

naftiko: "0.5"
info:
  label: "Netflix Gaming Performance Monitor"
  description: "Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team."
  tags:
    - gaming
    - snowflake
    - jira
    - slack
    - performance
capability:
  exposes:
    - type: mcp
      namespace: netflix_gaming_perfo
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors Netflix Games performance metrics from Snowflake, creates Jira tickets for issues, and notifies the gaming team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[gaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "gaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack.

naftiko: "0.5"
info:
  label: "Netflix Global Launch Coordination"
  description: "Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - global-launch
capability:
  exposes:
    - type: mcp
      namespace: netflix_global_launc
      port: 8080
      tools:
        - name: handle-event
          description: "Coordinates global content launches by verifying localization, CDN readiness, and marketing assets, reporting status to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack.

naftiko: "0.5"
info:
  label: "Netflix Infrastructure Cost Optimization"
  description: "Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack."
  tags:
    - finops
    - snowflake
    - jira
    - slack
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: netflix_infrastructu
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes infrastructure costs from Snowflake, creates Jira optimization tasks for high-cost services, and posts to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[finops] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "finops-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack.

naftiko: "0.5"
info:
  label: "Netflix Interactive Content Performance"
  description: "Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - interactive
capability:
  exposes:
    - type: mcp
      namespace: netflix_interactive_
      port: 8080
      tools:
        - name: handle-event
          description: "Queries interactive content engagement metrics from Snowflake, creates Jira product insights, and posts to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack.

naftiko: "0.5"
info:
  label: "Netflix Live Event Monitoring Workflow"
  description: "During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack."
  tags:
    - streaming
    - new-relic
    - pagerduty
    - slack
    - live-events
capability:
  exposes:
    - type: mcp
      namespace: netflix_live_event_m
      port: 8080
      tools:
        - name: handle-event
          description: "During live events, monitors stream health from New Relic, creates PagerDuty alerts for issues, and posts status to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team.

naftiko: "0.5"
info:
  label: "Netflix Microservice Deployment Tracker"
  description: "When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team."
  tags:
    - devops
    - new-relic
    - servicenow
    - slack
    - deployments
capability:
  exposes:
    - type: mcp
      namespace: netflix_microservice
      port: 8080
      tools:
        - name: handle-event
          description: "When a microservice is deployed, verifies health via New Relic, logs in ServiceNow, and notifies the platform team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[devops] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "devops-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team.

naftiko: "0.5"
info:
  label: "Netflix ML Model Training Pipeline Monitor"
  description: "Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team."
  tags:
    - ml
    - snowflake
    - jira
    - slack
    - ml-ops
capability:
  exposes:
    - type: mcp
      namespace: netflix_ml_model_tra
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors ML training pipeline health from Snowflake, creates Jira tickets for failed jobs, and alerts the ML platform team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[ml] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "ml-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team.

naftiko: "0.5"
info:
  label: "Netflix Open Connect Appliance Health"
  description: "Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - open-connect
capability:
  exposes:
    - type: mcp
      namespace: netflix_open_connect
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors Open Connect appliance health from Snowflake, creates Jira tickets for degraded appliances, and alerts the ISP team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team.

naftiko: "0.5"
info:
  label: "Netflix Partner Device Certification"
  description: "Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: netflix_partner_devi
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks device certification status from Snowflake, creates Jira tasks for expiring certs, and notifies the partnerships team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team.

naftiko: "0.5"
info:
  label: "Netflix Playback Error Spike Handler"
  description: "When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team."
  tags:
    - streaming
    - new-relic
    - pagerduty
    - slack
    - playback
capability:
  exposes:
    - type: mcp
      namespace: netflix_playback_err
      port: 8080
      tools:
        - name: handle-event
          description: "When playback errors spike, queries New Relic for affected regions, creates a PagerDuty incident, and notifies the streaming team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team.

naftiko: "0.5"
info:
  label: "Netflix Recommendation Model Drift Alert"
  description: "When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team."
  tags:
    - streaming
    - snowflake
    - jira
    - slack
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: netflix_recommendati
      port: 8080
      tools:
        - name: handle-event
          description: "When recommendation accuracy drops, queries Snowflake for model metrics, creates a Jira investigation, and alerts the ML team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack.

naftiko: "0.5"
info:
  label: "Netflix Regional Content Strategy Digest"
  description: "Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack."
  tags:
    - content
    - snowflake
    - jira
    - slack
    - strategy
capability:
  exposes:
    - type: mcp
      namespace: netflix_regional_con
      port: 8080
      tools:
        - name: handle-event
          description: "Generates regional content performance digests from Snowflake, creates Jira strategy tasks, and posts to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security.

naftiko: "0.5"
info:
  label: "Netflix Security Vulnerability Response"
  description: "When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security."
  tags:
    - security
    - new-relic
    - jira
    - slack
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: netflix_security_vul
      port: 8080
      tools:
        - name: handle-event
          description: "When a security vulnerability is found, creates a Jira security ticket, queries affected services from New Relic, and pages security."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[security] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "security-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance.

naftiko: "0.5"
info:
  label: "Netflix Studio Production Budget Alert"
  description: "When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance."
  tags:
    - finance
    - snowflake
    - jira
    - slack
    - studio
capability:
  exposes:
    - type: mcp
      namespace: netflix_studio_produ
      port: 8080
      tools:
        - name: handle-event
          description: "When a studio production exceeds budget threshold, queries Snowflake for spending details, creates a Jira task, and alerts finance."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[finance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "finance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team.

naftiko: "0.5"
info:
  label: "Netflix Subscriber Churn Alert"
  description: "When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team."
  tags:
    - analytics
    - snowflake
    - jira
    - slack
    - retention
capability:
  exposes:
    - type: mcp
      namespace: netflix_subscriber_c
      port: 8080
      tools:
        - name: handle-event
          description: "When churn rates exceed thresholds, queries Snowflake for cohort analysis, creates Jira growth tasks, and notifies the retention team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[analytics] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "analytics-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack.

naftiko: "0.5"
info:
  label: "Netflix Subscriber Growth Forecast"
  description: "Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack."
  tags:
    - analytics
    - snowflake
    - jira
    - slack
    - growth
capability:
  exposes:
    - type: mcp
      namespace: netflix_subscriber_g
      port: 8080
      tools:
        - name: handle-event
          description: "Generates subscriber growth forecasts from Snowflake, creates Jira planning tasks, and posts projections to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[analytics] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "analytics-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack.

naftiko: "0.5"
info:
  label: "Netflix Talent Engagement Tracker"
  description: "Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack."
  tags:
    - content
    - snowflake
    - salesforce
    - slack
    - talent
capability:
  exposes:
    - type: mcp
      namespace: netflix_talent_engag
      port: 8080
      tools:
        - name: handle-event
          description: "Queries talent engagement metrics from Snowflake, updates Salesforce talent records, and posts highlights to Slack."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[content] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "content-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team.

naftiko: "0.5"
info:
  label: "Netflix Video Quality Degradation Handler"
  description: "When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team."
  tags:
    - streaming
    - new-relic
    - jira
    - slack
    - video-quality
capability:
  exposes:
    - type: mcp
      namespace: netflix_video_qualit
      port: 8080
      tools:
        - name: handle-event
          description: "When video quality metrics degrade, queries New Relic for ISP patterns, creates a Jira ticket, and alerts the QoE team."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The triggering event identifier."
            - name: context
              in: body
              type: string
              description: "Additional context for the event."
          steps:
            - name: gather-data
              type: call
              call: "snowflake-api.run-query"
              with:
                event_id: "{{event_id}}"
            - name: create-ticket
              type: call
              call: "jira-api.create-issue"
              with:
                project: "OPS"
                issuetype: "Task"
                summary: "[streaming] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "streaming-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-api
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Returns CDN performance metrics including cache hit rates and latency from New Relic.

naftiko: "0.5"
info:
  label: "New Relic CDN Performance Check"
  description: "Returns CDN performance metrics including cache hit rates and latency from New Relic."
  tags:
    - streaming
    - new-relic
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: new_relic_cdn_perfor
      port: 8080
      tools:
        - name: query-data
          description: "Returns CDN performance metrics including cache hit rates and latency from New Relic."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Returns health status and error rates for a Netflix microservice from New Relic.

naftiko: "0.5"
info:
  label: "New Relic Microservice Health Check"
  description: "Returns health status and error rates for a Netflix microservice from New Relic."
  tags:
    - observability
    - new-relic
    - microservices
capability:
  exposes:
    - type: mcp
      namespace: new_relic_microservi
      port: 8080
      tools:
        - name: query-data
          description: "Returns health status and error rates for a Netflix microservice from New Relic."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When New Relic detects a service anomaly or SLO breach, opens a high-priority Jira incident, pages the on-call engineer via PagerDuty, and posts a war-room link to Slack.

naftiko: "0.5"
info:
  label: "New Relic Service Anomaly Response"
  description: "When New Relic detects a service anomaly or SLO breach, opens a high-priority Jira incident, pages the on-call engineer via PagerDuty, and posts a war-room link to Slack."
  tags:
    - observability
    - incident-response
    - new-relic
    - jira
    - pagerduty
    - slack
capability:
  exposes:
    - type: mcp
      namespace: observability-ops
      port: 8080
      tools:
        - name: handle-service-anomaly
          description: "Given a New Relic alert ID and affected service name, create a Jira P1 incident, trigger PagerDuty on-call escalation, and post a war-room Slack message. Invoke for any SLO breach or critical service anomaly."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The New Relic alert incident ID."
            - name: service_name
              in: body
              type: string
              description: "The name of the affected Netflix service."
            - name: alert_message
              in: body
              type: string
              description: "Human-readable description of the anomaly."
          steps:
            - name: create-incident
              type: call
              call: "jira-incident.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Incident"
                summary: "[P1] Service anomaly: {{service_name}}"
                description: "New Relic alert: {{alert_id}}\n{{alert_message}}"
                priority: "Highest"
            - name: page-oncall
              type: call
              call: "pagerduty.trigger-incident"
              with:
                title: "{{service_name}} anomaly: {{alert_message}}"
                severity: "critical"
                incident_key: "nr-{{alert_id}}"
            - name: post-warroom
              type: call
              call: "slack-incident.post-message"
              with:
                channel: "incidents"
                text: "P1 Incident: {{service_name}} | {{alert_message}} | Jira: {{create-incident.key}} | PD: {{page-oncall.incident_url}}"
  consumes:
    - type: http
      namespace: jira-incident
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: trigger-incident
              method: POST
    - type: http
      namespace: slack-incident
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Fetches current SLO compliance metrics from New Relic and posts a weekly service health report to the engineering leadership Slack channel.

naftiko: "0.5"
info:
  label: "New Relic SLO Weekly Report"
  description: "Fetches current SLO compliance metrics from New Relic and posts a weekly service health report to the engineering leadership Slack channel."
  tags:
    - observability
    - slo
    - new-relic
    - reporting
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slo-reporting
      port: 8080
      tools:
        - name: publish-slo-report
          description: "Query New Relic for all SLO statuses and post a weekly compliance report to the engineering leadership Slack channel. Use for weekly engineering reviews and board-level reliability briefings."
          steps:
            - name: get-slo-status
              type: call
              call: "newrelic-slo.list-service-levels"
            - name: post-report
              type: call
              call: "slack-slo.post-message"
              with:
                channel: "engineering-leadership"
                text: "Weekly SLO Report: {{get-slo-status.count}} service levels monitored. Compliant: {{get-slo-status.compliant_count}}."
  consumes:
    - type: http
      namespace: newrelic-slo
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apikey
        key: "X-Api-Key"
        value: "$secrets.newrelic_api_key"
        placement: header
      resources:
        - name: service-levels
          path: "/service_levels.json"
          operations:
            - name: list-service-levels
              method: GET
    - type: http
      namespace: slack-slo
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks streaming service SLO status from New Relic.

naftiko: "0.5"
info:
  label: "New Relic Streaming Service SLO Check"
  description: "Checks streaming service SLO status from New Relic."
  tags:
    - reliability
    - new-relic
    - slo
capability:
  exposes:
    - type: mcp
      namespace: slo-ops
      port: 8080
      tools:
        - name: get-streaming-slo
          description: "Given an SLI name, return SLO status from New Relic."
          inputParameters:
            - name: sli_name
              in: body
              type: string
              description: "SLI name."
          call: "nr-slo.get-sli"
          with:
            name: "{{sli_name}}"
          outputParameters:
            - name: slo
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: nr-slo
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apikey
        key: "Api-Key"
        value: "$secrets.newrelic_api_key"
        placement: header
      resources:
        - name: slis
          path: "/sli"
          inputParameters:
            - name: name
              in: query
          operations:
            - name: get-sli
              method: GET

Pulls all active Okta users assigned to a specified application group and cross-references with Workday active workers to flag stale or orphaned access.

naftiko: "0.5"
info:
  label: "Okta Access Review — Application Group Audit"
  description: "Pulls all active Okta users assigned to a specified application group and cross-references with Workday active workers to flag stale or orphaned access."
  tags:
    - identity
    - security
    - okta
    - workday
    - access-review
capability:
  exposes:
    - type: mcp
      namespace: identity-review
      port: 8080
      tools:
        - name: run-access-review
          description: "Given an Okta group ID, list all group members and compare against active Workday workers to identify orphaned accounts. Use for quarterly access reviews and SOX compliance audits."
          inputParameters:
            - name: group_id
              in: body
              type: string
              description: "The Okta group ID to audit."
            - name: app_name
              in: body
              type: string
              description: "Human-readable application name for audit logging."
          steps:
            - name: get-group-members
              type: call
              call: "okta-audit.get-group-members"
              with:
                group_id: "{{group_id}}"
            - name: get-active-workers
              type: call
              call: "workday-audit.list-workers"
  consumes:
    - type: http
      namespace: okta-audit
      baseUri: "https://netflix.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: group-members
          path: "/groups/{{group_id}}/users"
          inputParameters:
            - name: group_id
              in: path
          operations:
            - name: get-group-members
              method: GET
    - type: http
      namespace: workday-audit
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: active-workers
          path: "/netflix/workers"
          operations:
            - name: list-workers
              method: GET

Identifies Okta users without MFA enrolled in a target group and sends each user a Slack reminder message with enrollment instructions, plus creates a compliance Jira ticket.

naftiko: "0.5"
info:
  label: "Okta MFA Compliance Enforcer"
  description: "Identifies Okta users without MFA enrolled in a target group and sends each user a Slack reminder message with enrollment instructions, plus creates a compliance Jira ticket."
  tags:
    - identity
    - security
    - okta
    - jira
    - slack
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: mfa-compliance
      port: 8080
      tools:
        - name: enforce-mfa-enrollment
          description: "Given an Okta group ID, identify users without MFA enrolled, send each user a Slack reminder, and create a Jira compliance remediation ticket. Use for monthly MFA enforcement cycles."
          inputParameters:
            - name: group_id
              in: body
              type: string
              description: "The Okta group ID to check for MFA enrollment."
          steps:
            - name: get-non-mfa-users
              type: call
              call: "okta-compliance.list-users-without-mfa"
              with:
                group_id: "{{group_id}}"
            - name: send-reminder
              type: call
              call: "slack-mfa.post-message"
              with:
                channel: "security-reminders"
                text: "MFA enforcement: {{get-non-mfa-users.count}} users in group {{group_id}} still need to enroll in MFA. Reminder messages sent."
            - name: create-compliance-ticket
              type: call
              call: "jira-compliance.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Task"
                summary: "MFA non-compliance: {{get-non-mfa-users.count}} users in group {{group_id}}"
  consumes:
    - type: http
      namespace: okta-compliance
      baseUri: "https://netflix.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users-without-mfa
          path: "/groups/{{group_id}}/users"
          inputParameters:
            - name: group_id
              in: path
          operations:
            - name: list-users-without-mfa
              method: GET
    - type: http
      namespace: slack-mfa
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: jira-compliance
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Looks up content licensing deal details in Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Content Licensing Deal Lookup"
  description: "Looks up content licensing deal details in Salesforce."
  tags:
    - content
    - salesforce
    - licensing
capability:
  exposes:
    - type: mcp
      namespace: licensing-ops
      port: 8080
      tools:
        - name: get-licensing-deal
          description: "Given an opportunity ID, return licensing deal details."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
          call: "sf-licensing.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
          outputParameters:
            - name: opportunity
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sf-licensing
      baseUri: "https://netflix.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET

Queries Snowflake for A/B test results including conversion rates and statistical significance.

naftiko: "0.5"
info:
  label: "Snowflake A/B Test Results Query"
  description: "Queries Snowflake for A/B test results including conversion rates and statistical significance."
  tags:
    - analytics
    - snowflake
    - experimentation
capability:
  exposes:
    - type: mcp
      namespace: snowflake_ab_test_re
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for A/B test results including conversion rates and statistical significance."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement.

naftiko: "0.5"
info:
  label: "Snowflake Ad Tier Performance Query"
  description: "Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement."
  tags:
    - streaming
    - snowflake
    - advertising
capability:
  exposes:
    - type: mcp
      namespace: snowflake_ad_tier_pe
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for ad-supported tier metrics including ad fill rates and viewer engagement."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for adaptive bitrate streaming quality metrics by region.

naftiko: "0.5"
info:
  label: "Snowflake Adaptive Bitrate Metrics"
  description: "Queries Snowflake for adaptive bitrate streaming quality metrics by region."
  tags:
    - streaming
    - snowflake
    - video-quality
capability:
  exposes:
    - type: mcp
      namespace: snowflake_adaptive_b
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for adaptive bitrate streaming quality metrics by region."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for the content acquisition pipeline funnel metrics.

naftiko: "0.5"
info:
  label: "Snowflake Content Acquisition Funnel"
  description: "Queries Snowflake for the content acquisition pipeline funnel metrics."
  tags:
    - content
    - snowflake
    - acquisition
capability:
  exposes:
    - type: mcp
      namespace: snowflake_content_ac
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for the content acquisition pipeline funnel metrics."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries content engagement funnel metrics from Snowflake.

naftiko: "0.5"
info:
  label: "Snowflake Content Engagement Funnel"
  description: "Queries content engagement funnel metrics from Snowflake."
  tags:
    - analytics
    - snowflake
    - engagement
capability:
  exposes:
    - type: mcp
      namespace: engagement-analytics
      port: 8080
      tools:
        - name: get-engagement-funnel
          description: "Given a title ID, return engagement funnel metrics."
          inputParameters:
            - name: title_id
              in: body
              type: string
              description: "Netflix title ID."
          call: "snowflake-engage.run-query"
          with:
            title_id: "{{title_id}}"
          outputParameters:
            - name: funnel
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-engage
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for content licensing costs by region and content category.

naftiko: "0.5"
info:
  label: "Snowflake Content Licensing Cost Query"
  description: "Queries Snowflake for content licensing costs by region and content category."
  tags:
    - finance
    - snowflake
    - content-licensing
capability:
  exposes:
    - type: mcp
      namespace: snowflake_content_li
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for content licensing costs by region and content category."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for content localization progress by language and title.

naftiko: "0.5"
info:
  label: "Snowflake Content Localization Status"
  description: "Queries Snowflake for content localization progress by language and title."
  tags:
    - streaming
    - snowflake
    - localization
capability:
  exposes:
    - type: mcp
      namespace: snowflake_content_lo
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for content localization progress by language and title."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries recommendation algorithm quality metrics from Snowflake.

naftiko: "0.5"
info:
  label: "Snowflake Content Recommendation Quality"
  description: "Queries recommendation algorithm quality metrics from Snowflake."
  tags:
    - ai
    - snowflake
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: rec-analytics
      port: 8080
      tools:
        - name: get-rec-quality
          description: "Given a model version, return recommendation quality metrics."
          inputParameters:
            - name: model_version
              in: body
              type: string
              description: "Model version."
          call: "snowflake-rec.run-query"
          with:
            model: "{{model_version}}"
          outputParameters:
            - name: quality
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-rec
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for content viewership analytics by title and region.

naftiko: "0.5"
info:
  label: "Snowflake Content Viewership Query"
  description: "Queries Snowflake for content viewership analytics by title and region."
  tags:
    - analytics
    - snowflake
    - content
capability:
  exposes:
    - type: mcp
      namespace: content-analytics
      port: 8080
      tools:
        - name: get-viewership
          description: "Given a title ID and region, return viewership data from Snowflake."
          inputParameters:
            - name: title_id
              in: body
              type: string
              description: "Netflix title ID."
            - name: region
              in: body
              type: string
              description: "Region."
          call: "snowflake-content.run-query"
          with:
            title_id: "{{title_id}}"
            region: "{{region}}"
          outputParameters:
            - name: viewership
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-content
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Runs a data quality assertion query against a Snowflake table and opens a Jira data quality incident if row counts or null rates exceed thresholds, notifying the data engineering team in Slack.

naftiko: "0.5"
info:
  label: "Snowflake Data Quality Gate"
  description: "Runs a data quality assertion query against a Snowflake table and opens a Jira data quality incident if row counts or null rates exceed thresholds, notifying the data engineering team in Slack."
  tags:
    - data
    - data-quality
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: run-data-quality-check
          description: "Given a Snowflake table name and quality thresholds, execute a quality assertion query and open a Jira incident if thresholds are breached. Post results to the data engineering Slack channel. Use for automated pipeline quality gates."
          inputParameters:
            - name: table_name
              in: body
              type: string
              description: "The fully qualified Snowflake table name (database.schema.table)."
            - name: null_rate_threshold
              in: body
              type: number
              description: "Maximum acceptable null rate (0.0 to 1.0) for key columns."
            - name: min_row_count
              in: body
              type: integer
              description: "Minimum expected row count for the table."
          steps:
            - name: run-quality-query
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT COUNT(*) as row_count FROM {{table_name}}"
            - name: open-incident
              type: call
              call: "jira-dq.create-issue"
              with:
                project_key: "DATA"
                issuetype: "Bug"
                summary: "Data quality failure: {{table_name}}"
                description: "Row count: {{run-quality-query.row_count}}. Threshold: {{min_row_count}}"
            - name: notify-data-team
              type: call
              call: "slack-dq.post-message"
              with:
                channel: "data-quality-alerts"
                text: "DQ Check: {{table_name}} | Rows: {{run-quality-query.row_count}} | Jira: {{open-incident.key}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: jira-dq
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-dq
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for playback compatibility rates by device type and OS version.

naftiko: "0.5"
info:
  label: "Snowflake Device Compatibility Query"
  description: "Queries Snowflake for playback compatibility rates by device type and OS version."
  tags:
    - streaming
    - snowflake
    - devices
capability:
  exposes:
    - type: mcp
      namespace: snowflake_device_com
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for playback compatibility rates by device type and OS version."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Returns the status and metrics for a content encoding job from Snowflake.

naftiko: "0.5"
info:
  label: "Snowflake Encoding Job Status"
  description: "Returns the status and metrics for a content encoding job from Snowflake."
  tags:
    - streaming
    - snowflake
    - encoding
capability:
  exposes:
    - type: mcp
      namespace: snowflake_encoding_j
      port: 8080
      tools:
        - name: query-data
          description: "Returns the status and metrics for a content encoding job from Snowflake."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for parental controls adoption and configuration rates.

naftiko: "0.5"
info:
  label: "Snowflake Parental Controls Usage Query"
  description: "Queries Snowflake for parental controls adoption and configuration rates."
  tags:
    - streaming
    - snowflake
    - safety
capability:
  exposes:
    - type: mcp
      namespace: snowflake_parental_c
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for parental controls adoption and configuration rates."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Polls Snowflake task history for failed or stalled tasks over a configurable lookback window and publishes a pipeline health summary to the data platform Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Pipeline Run Monitor"
  description: "Polls Snowflake task history for failed or stalled tasks over a configurable lookback window and publishes a pipeline health summary to the data platform Slack channel."
  tags:
    - data
    - pipeline-monitoring
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data-pipeline-ops
      port: 8080
      tools:
        - name: monitor-pipeline-runs
          description: "Query Snowflake task execution history for failures within a lookback window and post a health summary to the data platform Slack channel. Use for scheduled pipeline health monitoring or on-demand triage."
          inputParameters:
            - name: lookback_hours
              in: body
              type: integer
              description: "Number of hours to look back for failed Snowflake tasks."
          steps:
            - name: query-task-history
              type: call
              call: "snowflake-monitor.execute-statement"
              with:
                statement: "SELECT * FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE state='FAILED' AND scheduled_time > DATEADD(hour, -{{lookback_hours}}, CURRENT_TIMESTAMP())"
            - name: post-health-summary
              type: call
              call: "slack-pipeline.post-message"
              with:
                channel: "data-platform-ops"
                text: "Pipeline Monitor (last {{lookback_hours}}h): {{query-task-history.row_count}} failed tasks detected."
  consumes:
    - type: http
      namespace: snowflake-monitor
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: slack-pipeline
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for recommendation engine accuracy metrics by algorithm variant.

naftiko: "0.5"
info:
  label: "Snowflake Recommendation Accuracy Query"
  description: "Queries Snowflake for recommendation engine accuracy metrics by algorithm variant."
  tags:
    - streaming
    - snowflake
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: snowflake_recommenda
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for recommendation engine accuracy metrics by algorithm variant."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for studio production budget utilization by project.

naftiko: "0.5"
info:
  label: "Snowflake Studio Production Budget Query"
  description: "Queries Snowflake for studio production budget utilization by project."
  tags:
    - finance
    - snowflake
    - studio
capability:
  exposes:
    - type: mcp
      namespace: snowflake_studio_pro
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for studio production budget utilization by project."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for subscriber growth metrics by region and tier.

naftiko: "0.5"
info:
  label: "Snowflake Subscriber Growth Query"
  description: "Queries Snowflake for subscriber growth metrics by region and tier."
  tags:
    - analytics
    - snowflake
    - subscribers
capability:
  exposes:
    - type: mcp
      namespace: sub-analytics
      port: 8080
      tools:
        - name: get-subscriber-growth
          description: "Given a region and period, return subscriber growth from Snowflake."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Region."
            - name: period
              in: body
              type: string
              description: "Period."
          call: "snowflake-subs.run-query"
          with:
            region: "{{region}}"
            period: "{{period}}"
          outputParameters:
            - name: growth
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-subs
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for subscriber retention and churn cohort analysis.

naftiko: "0.5"
info:
  label: "Snowflake Subscriber Retention Query"
  description: "Queries Snowflake for subscriber retention and churn cohort analysis."
  tags:
    - analytics
    - snowflake
    - retention
capability:
  exposes:
    - type: mcp
      namespace: snowflake_subscriber
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for subscriber retention and churn cohort analysis."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for title performance metrics including views, completion rate, and audience demographics.

naftiko: "0.5"
info:
  label: "Snowflake Title Performance Query"
  description: "Queries Snowflake for title performance metrics including views, completion rate, and audience demographics."
  tags:
    - streaming
    - snowflake
    - content-analytics
capability:
  exposes:
    - type: mcp
      namespace: snowflake_title_perf
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for title performance metrics including views, completion rate, and audience demographics."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves compensation band details from Workday.

naftiko: "0.5"
info:
  label: "Workday Compensation Band Lookup"
  description: "Retrieves compensation band details from Workday."
  tags:
    - hr
    - workday
    - compensation
capability:
  exposes:
    - type: mcp
      namespace: comp-ops
      port: 8080
      tools:
        - name: get-comp-band
          description: "Given a job profile ID, return compensation band."
          inputParameters:
            - name: job_profile_id
              in: body
              type: string
              description: "Job profile ID."
          call: "workday-comp.get-band"
          with:
            job_profile_id: "{{job_profile_id}}"
          outputParameters:
            - name: band
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: workday-comp
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/netflix"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: bands
          path: "/compensationBands/{{job_profile_id}}"
          inputParameters:
            - name: job_profile_id
              in: path
          operations:
            - name: get-band
              method: GET

Returns content team headcount and open positions from Workday.

naftiko: "0.5"
info:
  label: "Workday Content Team Headcount Lookup"
  description: "Returns content team headcount and open positions from Workday."
  tags:
    - hr
    - workday
    - workforce
capability:
  exposes:
    - type: mcp
      namespace: workday_content_team
      port: 8080
      tools:
        - name: query-data
          description: "Returns content team headcount and open positions from Workday."
          inputParameters:
            - name: query_param
              in: body
              type: string
              description: "The query parameter."
          call: "snowflake-api.run-query"
          with:
            query_param: "{{query_param}}"
          outputParameters:
            - name: results
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://netflix.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves engineering team headcount from Workday.

naftiko: "0.5"
info:
  label: "Workday Engineering Headcount"
  description: "Retrieves engineering team headcount from Workday."
  tags:
    - hr
    - workday
    - engineering
capability:
  exposes:
    - type: mcp
      namespace: hr-analytics
      port: 8080
      tools:
        - name: get-eng-headcount
          description: "Given a department, return headcount from Workday."
          inputParameters:
            - name: department
              in: body
              type: string
              description: "Department name."
          call: "workday-eng.get-headcount"
          with:
            department: "{{department}}"
          outputParameters:
            - name: headcount
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: workday-eng
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/netflix"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/headcountReport"
          inputParameters:
            - name: department
              in: query
          operations:
            - name: get-headcount
              method: GET

Returns active Netflix headcount grouped by cost center and department from Workday, used for workforce planning and finance allocation.

naftiko: "0.5"
info:
  label: "Workday Headcount by Cost Center"
  description: "Returns active Netflix headcount grouped by cost center and department from Workday, used for workforce planning and finance allocation."
  tags:
    - hr
    - workforce-planning
    - reporting
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-reporting
      port: 8080
      tools:
        - name: get-headcount-snapshot
          description: "Returns all active Netflix employees grouped by cost center and department from Workday. Use for headcount planning, budget allocation, and executive workforce reports."
          call: "workday-hc.list-workers"
          outputParameters:
            - name: workers
              type: array
              mapping: "$.data[*]"
  consumes:
    - type: http
      namespace: workday-hc
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/netflix/workers"
          operations:
            - name: list-workers
              method: GET

When a job requisition is approved in Workday, publishes the role to LinkedIn and notifies the talent acquisition team in Slack with the posting URL.

naftiko: "0.5"
info:
  label: "Workday Job Requisition to LinkedIn Publisher"
  description: "When a job requisition is approved in Workday, publishes the role to LinkedIn and notifies the talent acquisition team in Slack with the posting URL."
  tags:
    - hr
    - recruiting
    - workday
    - linkedin
    - slack
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: publish-job-posting
          description: "Given a Workday job requisition ID, fetch job details and publish the posting to LinkedIn, then notify the TA team in Slack. Use when a new requisition is approved in Workday."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          steps:
            - name: get-requisition
              type: call
              call: "workday-rec.get-job-requisition"
              with:
                req_id: "{{requisition_id}}"
            - name: post-linkedin
              type: call
              call: "linkedin.create-job-posting"
              with:
                title: "{{get-requisition.job_title}}"
                description: "{{get-requisition.description}}"
                location: "{{get-requisition.location}}"
                company_urn: "$secrets.netflix_linkedin_org_urn"
            - name: notify-ta
              type: call
              call: "slack-ta.post-message"
              with:
                channel: "talent-acquisition"
                text: "New role posted: {{get-requisition.job_title}} | LinkedIn: {{post-linkedin.job_url}}"
  consumes:
    - type: http
      namespace: workday-rec
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: job-requisitions
          path: "/netflix/jobRequisitions/{{req_id}}"
          inputParameters:
            - name: req_id
              in: path
          operations:
            - name: get-job-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/jobPostings"
          operations:
            - name: create-job-posting
              method: POST
    - type: http
      namespace: slack-ta
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a new hire is created in Workday, provisions their Okta account, opens a Jira onboarding epic, creates a GitHub organization membership, and sends a Slack welcome message.

naftiko: "0.5"
info:
  label: "Workday New Hire Onboarding Orchestrator"
  description: "When a new hire is created in Workday, provisions their Okta account, opens a Jira onboarding epic, creates a GitHub organization membership, and sends a Slack welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - okta
    - jira
    - github
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full new hire onboarding sequence across Okta, Jira, GitHub, and Slack. Invoke when HR creates a new worker record in Workday."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee's first day in YYYY-MM-DD format."
            - name: github_team
              in: body
              type: string
              description: "The GitHub team slug the new hire should join (e.g., platform-engineering)."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: provision-okta
              type: call
              call: "okta.create-user"
              with:
                first_name: "{{get-employee.first_name}}"
                last_name: "{{get-employee.last_name}}"
                email: "{{get-employee.work_email}}"
                department: "{{get-employee.department}}"
            - name: open-jira-epic
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ONBOARD"
                issuetype: "Epic"
                summary: "Onboarding: {{get-employee.full_name}} (start: {{start_date}})"
            - name: add-github-member
              type: call
              call: "github.add-team-member"
              with:
                org: "netflix"
                team_slug: "{{github_team}}"
                username: "{{get-employee.github_username}}"
            - name: send-slack-welcome
              type: call
              call: "slack.post-message"
              with:
                channel: "new-hire-welcome"
                text: "Welcome to Netflix, {{get-employee.first_name}}! Jira epic: {{open-jira-epic.key}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/netflix/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta
      baseUri: "https://netflix.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: team-members
          path: "/orgs/{{org}}/teams/{{team_slug}}/memberships/{{username}}"
          inputParameters:
            - name: org
              in: path
            - name: team_slug
              in: path
            - name: username
              in: path
          operations:
            - name: add-team-member
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Returns open job requisitions from Workday.

naftiko: "0.5"
info:
  label: "Workday Open Requisitions"
  description: "Returns open job requisitions from Workday."
  tags:
    - hr
    - workday
    - recruiting
capability:
  exposes:
    - type: mcp
      namespace: talent-ops
      port: 8080
      tools:
        - name: get-open-reqs
          description: "Given a team, return open requisitions."
          inputParameters:
            - name: team
              in: body
              type: string
              description: "Team name."
          call: "workday-recruit.get-requisitions"
          with:
            team: "{{team}}"
          outputParameters:
            - name: requisitions
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: workday-recruit
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/netflix"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions"
          inputParameters:
            - name: team
              in: query
          operations:
            - name: get-requisitions
              method: GET

Before a payroll run, queries Workday for employees with missing or incomplete pay data (bank accounts, tax forms) and creates a Jira checklist for the payroll team to resolve.

naftiko: "0.5"
info:
  label: "Workday Payroll Pre-Run Validation"
  description: "Before a payroll run, queries Workday for employees with missing or incomplete pay data (bank accounts, tax forms) and creates a Jira checklist for the payroll team to resolve."
  tags:
    - hr
    - payroll
    - workday
    - jira
capability:
  exposes:
    - type: mcp
      namespace: payroll-ops
      port: 8080
      tools:
        - name: validate-payroll-pre-run
          description: "Given a payroll period and country code, query Workday for workers with incomplete pay data and create a Jira resolution checklist. Use before each payroll processing run."
          inputParameters:
            - name: payroll_period
              in: body
              type: string
              description: "The payroll period identifier (e.g., 2026-06)."
            - name: country_code
              in: body
              type: string
              description: "Two-letter country code for the payroll run (e.g., US, GB)."
          steps:
            - name: get-incomplete-workers
              type: call
              call: "workday-payroll.get-workers-incomplete"
              with:
                period: "{{payroll_period}}"
                country: "{{country_code}}"
            - name: create-checklist
              type: call
              call: "jira-payroll.create-issue"
              with:
                project_key: "PAYROLL"
                issuetype: "Task"
                summary: "Payroll pre-run validation {{payroll_period}} ({{country_code}})"
                description: "Workers with incomplete data: {{get-incomplete-workers.count}}"
  consumes:
    - type: http
      namespace: workday-payroll
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers-incomplete
          path: "/netflix/workers"
          inputParameters:
            - name: period
              in: query
            - name: country
              in: query
          operations:
            - name: get-workers-incomplete
              method: GET
    - type: http
      namespace: jira-payroll
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

At the start of a performance review cycle, fetches eligible employees from Workday by department and creates a Jira task for each manager to complete their team's reviews.

naftiko: "0.5"
info:
  label: "Workday Performance Review Campaign"
  description: "At the start of a performance review cycle, fetches eligible employees from Workday by department and creates a Jira task for each manager to complete their team's reviews."
  tags:
    - hr
    - performance-management
    - workday
    - jira
capability:
  exposes:
    - type: mcp
      namespace: hr-performance
      port: 8080
      tools:
        - name: launch-review-campaign
          description: "Given a review cycle name and department, fetch eligible employees from Workday and create individual performance review Jira tasks for each manager. Use to kick off annual or bi-annual performance cycles."
          inputParameters:
            - name: review_cycle
              in: body
              type: string
              description: "Name of the performance review cycle (e.g., 2026-Annual)."
            - name: department
              in: body
              type: string
              description: "Department name to scope the launch."
          steps:
            - name: get-eligible-employees
              type: call
              call: "workday-pr.get-workers-by-department"
              with:
                department: "{{department}}"
            - name: create-review-tasks
              type: call
              call: "jira-pr.create-issue"
              with:
                project_key: "HR"
                issuetype: "Task"
                summary: "Performance reviews {{review_cycle}}: {{department}}"
                description: "Eligible employees: {{get-eligible-employees.count}}"
  consumes:
    - type: http
      namespace: workday-pr
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers-by-department
          path: "/netflix/workers"
          inputParameters:
            - name: department
              in: query
          operations:
            - name: get-workers-by-department
              method: GET
    - type: http
      namespace: jira-pr
      baseUri: "https://netflix.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

When an employee's role changes in Workday, updates their Okta group memberships to reflect the new access profile and posts a confirmation to the HR Slack channel.

naftiko: "0.5"
info:
  label: "Workday Role Change Access Sync"
  description: "When an employee's role changes in Workday, updates their Okta group memberships to reflect the new access profile and posts a confirmation to the HR Slack channel."
  tags:
    - hr
    - identity
    - role-change
    - workday
    - okta
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-identity
      port: 8080
      tools:
        - name: sync-role-change-access
          description: "Given a Workday employee ID and new role, update Okta group memberships to match the new access profile and notify HR in Slack. Invoke when an employee transfers departments or changes positions."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID of the employee whose role changed."
            - name: new_role
              in: body
              type: string
              description: "The new job title or role."
            - name: new_department
              in: body
              type: string
              description: "The new department the employee is moving to."
          steps:
            - name: get-employee
              type: call
              call: "workday-role.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: update-okta
              type: call
              call: "okta-role.update-user-groups"
              with:
                login: "{{get-employee.work_email}}"
                department: "{{new_department}}"
            - name: notify-hr
              type: call
              call: "slack-role.post-message"
              with:
                channel: "hr-ops"
                text: "Role change complete: {{get-employee.full_name}} is now {{new_role}} in {{new_department}}. Okta access updated."
  consumes:
    - type: http
      namespace: workday-role
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/netflix/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta-role
      baseUri: "https://netflix.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: user-groups
          path: "/users/{{login}}/groups"
          inputParameters:
            - name: login
              in: path
          operations:
            - name: update-user-groups
              method: PUT
    - type: http
      namespace: slack-role
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Schedules a company all-hands Zoom meeting, creates a Confluence agenda page, and sends Slack announcements to all-company channels.

naftiko: "0.5"
info:
  label: "Zoom All-Hands Meeting Scheduler"
  description: "Schedules a company all-hands Zoom meeting, creates a Confluence agenda page, and sends Slack announcements to all-company channels."
  tags:
    - communication
    - zoom
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: comms-ops
      port: 8080
      tools:
        - name: schedule-all-hands
          description: "Given an all-hands title, datetime, duration, and agenda content, schedule a Zoom meeting, publish the agenda to Confluence, and announce in Slack. Use for quarterly all-hands, town halls, and leadership briefings."
          inputParameters:
            - name: meeting_title
              in: body
              type: string
              description: "Title of the all-hands meeting."
            - name: meeting_start
              in: body
              type: string
              description: "Meeting start time in ISO 8601 format."
            - name: duration_minutes
              in: body
              type: integer
              description: "Duration of the meeting in minutes."
            - name: agenda_content
              in: body
              type: string
              description: "Agenda content in plain text or Confluence wiki markup."
          steps:
            - name: create-zoom-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{meeting_title}}"
                start_time: "{{meeting_start}}"
                duration: "{{duration_minutes}}"
            - name: publish-agenda
              type: call
              call: "confluence-comms.create-page"
              with:
                space_key: "ALLHANDS"
                title: "Agenda: {{meeting_title}}"
                body: "Join URL: {{create-zoom-meeting.join_url}}\n\n{{agenda_content}}"
            - name: announce-slack
              type: call
              call: "slack-comms.post-message"
              with:
                channel: "company-all"
                text: "All-Hands: {{meeting_title}} scheduled for {{meeting_start}}. Join: {{create-zoom-meeting.join_url}} | Agenda: {{publish-agenda.page_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: confluence-comms
      baseUri: "https://netflix.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack-comms
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST