Twilio Capabilities

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

Sort
Expand

When Datadog detects an API error rate spike above threshold, pages the on-call engineer via PagerDuty and posts a diagnostic summary to the Slack ops channel.

naftiko: "0.5"
info:
  label: "API Error Rate Spike Responder"
  description: "When Datadog detects an API error rate spike above threshold, pages the on-call engineer via PagerDuty and posts a diagnostic summary to the Slack ops channel."
  tags:
    - observability
    - api-reliability
    - datadog
    - pagerduty
    - slack
capability:
  exposes:
    - type: mcp
      namespace: api-reliability
      port: 8080
      tools:
        - name: handle-error-rate-spike
          description: "Given a Datadog alert for API error rate exceeding threshold, trigger a PagerDuty page for the on-call engineer and post diagnostic context to the Slack ops channel."
          inputParameters:
            - name: api_name
              in: body
              type: string
              description: "Name of the Twilio API experiencing the error rate spike (e.g., SMS API, Voice API)."
            - name: error_rate_pct
              in: body
              type: number
              description: "Current error rate percentage triggering the alert."
            - name: threshold_pct
              in: body
              type: number
              description: "Error rate threshold that was exceeded."
            - name: datadog_monitor_url
              in: body
              type: string
              description: "URL to the Datadog monitor showing the spike."
          steps:
            - name: page-oncall
              type: call
              call: "pagerduty-api.create-incident"
              with:
                title: "API Error Spike: {{api_name}} at {{error_rate_pct}}% (threshold: {{threshold_pct}}%)"
                service_id: "$secrets.pagerduty_api_service_id"
                urgency: "high"
            - name: post-ops-alert
              type: call
              call: "slack-api.post-message"
              with:
                channel: "api-reliability"
                text: "Error Rate Spike: {{api_name}} | Rate: {{error_rate_pct}}% (threshold: {{threshold_pct}}%) | PD: {{page-oncall.incident_url}} | Monitor: {{datadog_monitor_url}}"
  consumes:
    - type: http
      namespace: pagerduty-api
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: 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 GitHub Actions pipeline fails on a main branch, creates a Jira bug, annotates Datadog with a deployment marker, and posts an alert to the Slack engineering channel.

naftiko: "0.5"
info:
  label: "CI/CD Pipeline Failure Response"
  description: "When a GitHub Actions pipeline fails on a main branch, creates a Jira bug, annotates Datadog with a deployment marker, and posts an alert to the Slack engineering channel."
  tags:
    - devops
    - cicd
    - github
    - jira
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: devops-cicd
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions pipeline failure event, create a Jira bug ticket, post a Datadog deployment marker, and alert the Slack engineering channel with full context."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name where the pipeline failed."
            - name: workflow_name
              in: body
              type: string
              description: "The GitHub Actions workflow name that failed."
            - name: branch
              in: body
              type: string
              description: "The branch where the failure occurred."
            - name: commit_sha
              in: body
              type: string
              description: "The commit SHA that triggered the failing workflow."
            - name: run_url
              in: body
              type: string
              description: "URL to the failed GitHub Actions run for investigation."
          steps:
            - name: create-jira-bug
              type: call
              call: "jira-cicd.create-issue"
              with:
                project_key: "PLAT"
                issuetype: "Bug"
                summary: "[CI Failure] {{repo_name}} / {{branch}} — {{workflow_name}}"
                description: "Commit: {{commit_sha}}\nBranch: {{branch}}\nWorkflow: {{workflow_name}}\nRun: {{run_url}}"
            - name: annotate-datadog
              type: call
              call: "datadog.create-event"
              with:
                title: "CI Failure: {{repo_name}} - {{workflow_name}}"
                text: "Pipeline failed on {{branch}} at {{commit_sha}}"
                alert_type: "error"
            - name: post-slack-alert
              type: call
              call: "slack-cicd.post-message"
              with:
                channel: "engineering-alerts"
                text: "Pipeline Failure: {{repo_name}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-jira-bug.key}} | Run: {{run_url}}"
  consumes:
    - type: http
      namespace: jira-cicd
      baseUri: "https://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: slack-cicd
      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 AWS Cost Anomaly Detection fires an alert, annotates Datadog, creates a Jira cost investigation ticket, and posts a summary to the FinOps Slack channel.

naftiko: "0.5"
info:
  label: "Cloud Cost Anomaly Responder"
  description: "When AWS Cost Anomaly Detection fires an alert, annotates Datadog, creates a Jira cost investigation ticket, and posts a summary to the FinOps Slack channel."
  tags:
    - finops
    - cloud-cost
    - datadog
    - jira
    - slack
    - aws
capability:
  exposes:
    - type: mcp
      namespace: finops
      port: 8080
      tools:
        - name: handle-cost-anomaly
          description: "Given an AWS cost anomaly event with service name and estimated overage, create a Datadog event annotation, open a Jira investigation ticket, and notify the FinOps Slack channel."
          inputParameters:
            - name: anomaly_id
              in: body
              type: string
              description: "The AWS Cost Anomaly Detection anomaly ID."
            - name: service_name
              in: body
              type: string
              description: "The AWS service exhibiting unexpected cost (e.g., EC2, Lambda, S3)."
            - name: estimated_overage_usd
              in: body
              type: number
              description: "Estimated cost overage in USD."
            - name: team
              in: body
              type: string
              description: "The engineering team responsible for the affected service."
          steps:
            - name: annotate-datadog
              type: call
              call: "datadog-cost.create-event"
              with:
                title: "AWS Cost Anomaly: {{service_name}}"
                text: "Anomaly {{anomaly_id}} — estimated overage: ${{estimated_overage_usd}} — Team: {{team}}"
                alert_type: "warning"
            - name: create-investigation
              type: call
              call: "jira-cost.create-issue"
              with:
                project_key: "FINOPS"
                issuetype: "Task"
                summary: "Cost anomaly investigation: {{service_name}} - ${{estimated_overage_usd}} overage"
                description: "AWS anomaly {{anomaly_id}} on {{service_name}}. Team: {{team}}. Datadog: {{annotate-datadog.url}}"
            - name: notify-finops
              type: call
              call: "slack-cost.post-message"
              with:
                channel: "finops-alerts"
                text: "AWS Cost Anomaly: {{service_name}} | Team: {{team}} | Overage: ${{estimated_overage_usd}} | Jira: {{create-investigation.key}} | Datadog: {{annotate-datadog.url}}"
  consumes:
    - type: http
      namespace: datadog-cost
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira-cost
      baseUri: "https://twilio.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-cost
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Scans a Confluence space for pages older than 6 months without recent edits, creates Jira tasks for documentation owners, and posts an audit summary to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "Confluence Documentation Quality Audit"
  description: "Scans a Confluence space for pages older than 6 months without recent edits, creates Jira tasks for documentation owners, and posts an audit summary to the engineering Slack channel."
  tags:
    - devops
    - documentation
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: docs-quality
      port: 8080
      tools:
        - name: audit-documentation-quality
          description: "Given a Confluence space key, retrieve pages not updated in over 6 months, create Jira tasks for each owner to review and update, and post an audit summary to Slack."
          inputParameters:
            - name: confluence_space_key
              in: body
              type: string
              description: "The Confluence space key to audit (e.g., PLATFORM, ENG)."
            - name: eng_channel
              in: body
              type: string
              description: "Slack channel to post the documentation audit summary."
          steps:
            - name: get-stale-pages
              type: call
              call: "confluence.search-pages"
              with:
                spaceKey: "{{confluence_space_key}}"
                lastModifiedBefore: "6_months_ago"
            - name: create-review-task
              type: call
              call: "jira-docs.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Task"
                summary: "Documentation review: {{confluence_space_key}} - {{get-stale-pages.count}} stale pages"
                description: "Stale pages identified in {{confluence_space_key}} space. Pages not updated in 6+ months: {{get-stale-pages.count}}"
            - name: post-audit-digest
              type: call
              call: "slack-docs.post-message"
              with:
                channel: "{{eng_channel}}"
                text: "Docs Audit: Space {{confluence_space_key}} | Stale pages (6+ months): {{get-stale-pages.count}} | Review task: {{create-review-task.key}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://twilio.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: pages
          path: "/content/search"
          inputParameters:
            - name: spaceKey
              in: query
            - name: lastModifiedBefore
              in: query
          operations:
            - name: search-pages
              method: GET
    - type: http
      namespace: jira-docs
      baseUri: "https://twilio.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-docs
      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 Zendesk ticket is escalated to P1, creates a Salesforce case, triggers a PagerDuty alert, and posts an escalation summary to the Slack customer-support channel.

naftiko: "0.5"
info:
  label: "Customer Support Escalation Handler"
  description: "When a Zendesk ticket is escalated to P1, creates a Salesforce case, triggers a PagerDuty alert, and posts an escalation summary to the Slack customer-support channel."
  tags:
    - customer-support
    - escalation
    - zendesk
    - salesforce
    - pagerduty
    - slack
capability:
  exposes:
    - type: mcp
      namespace: support-escalation
      port: 8080
      tools:
        - name: handle-support-escalation
          description: "Given a Zendesk ticket ID escalated to P1, create a Salesforce support case, trigger a PagerDuty alert, and post the escalation context to the Slack support channel."
          inputParameters:
            - name: zendesk_ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID being escalated."
            - name: customer_account_name
              in: body
              type: string
              description: "The Salesforce account name of the affected customer."
            - name: issue_summary
              in: body
              type: string
              description: "Brief description of the escalated issue."
          steps:
            - name: get-ticket
              type: call
              call: "zendesk.get-ticket"
              with:
                ticket_id: "{{zendesk_ticket_id}}"
            - name: create-sf-case
              type: call
              call: "salesforce-support.create-case"
              with:
                subject: "P1 Escalation: {{issue_summary}}"
                account_name: "{{customer_account_name}}"
                description: "Zendesk ticket {{zendesk_ticket_id}}: {{get-ticket.description}}"
                priority: "Critical"
            - name: trigger-pagerduty
              type: call
              call: "pagerduty-support.create-incident"
              with:
                title: "P1 Customer Escalation: {{customer_account_name}} - {{issue_summary}}"
                service_id: "$secrets.pagerduty_support_service_id"
                urgency: "high"
            - name: notify-support-channel
              type: call
              call: "slack-support.post-message"
              with:
                channel: "customer-support-escalations"
                text: "P1 ESCALATION: {{customer_account_name}} | {{issue_summary}} | Zendesk: {{zendesk_ticket_id}} | Salesforce: {{create-sf-case.case_number}} | PD: {{trigger-pagerduty.incident_url}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://twilio.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET
    - type: http
      namespace: salesforce-support
      baseUri: "https://twilio.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: pagerduty-support
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack-support
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves the current status and alert history for a Datadog monitor by ID, for use in incident investigation and SLA reporting.

naftiko: "0.5"
info:
  label: "Datadog Monitor Lookup"
  description: "Retrieves the current status and alert history for a Datadog monitor by ID, for use in incident investigation and SLA reporting."
  tags:
    - observability
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-monitor-status
          description: "Given a Datadog monitor ID, return its current status, last triggered time, and alert count. Use during incident investigation to understand monitor health."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor ID to look up."
          call: "datadog-monitor.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: status
              type: string
              mapping: "$.overall_state"
            - name: last_triggered
              type: string
              mapping: "$.state.groups[0].last_triggered_ts"
  consumes:
    - type: http
      namespace: datadog-monitor
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Returns SendGrid service health and delivery pipeline status from Datadog.

naftiko: "0.5"
info:
  label: "Datadog SendGrid Health Check"
  description: "Returns SendGrid service health and delivery pipeline status from Datadog."
  tags:
    - observability
    - datadog
    - email
capability:
  exposes:
    - type: mcp
      namespace: datadog_sendgrid_hea
      port: 8080
      tools:
        - name: query-data
          description: "Returns SendGrid service health and delivery pipeline status from Datadog."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves SLO compliance data from Datadog for all production services and publishes a weekly SLO digest to the engineering leadership Slack channel.

naftiko: "0.5"
info:
  label: "Datadog SLO Compliance Report"
  description: "Retrieves SLO compliance data from Datadog for all production services and publishes a weekly SLO digest to the engineering leadership Slack channel."
  tags:
    - observability
    - slo
    - reporting
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slo-reporting
      port: 8080
      tools:
        - name: digest-slo-compliance
          description: "Given a Datadog SLO ID and reporting week, retrieve SLO burn rate and remaining error budget, and post a weekly compliance summary to the engineering leadership Slack channel."
          inputParameters:
            - name: slo_id
              in: body
              type: string
              description: "The Datadog SLO ID to report on."
            - name: reporting_week
              in: body
              type: string
              description: "The ISO week in YYYY-WNN format for the report."
            - name: eng_leadership_channel
              in: body
              type: string
              description: "Slack channel for engineering leadership digest."
          steps:
            - name: get-slo-data
              type: call
              call: "datadog-slo.get-slo"
              with:
                slo_id: "{{slo_id}}"
            - name: post-slo-digest
              type: call
              call: "slack-slo.post-message"
              with:
                channel: "{{eng_leadership_channel}}"
                text: "SLO Report ({{reporting_week}}): {{get-slo-data.name}} | Current: {{get-slo-data.current_slo}}% | Target: {{get-slo-data.target}}% | Error Budget Remaining: {{get-slo-data.error_budget_remaining}}%"
  consumes:
    - type: http
      namespace: datadog-slo
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slos
          path: "/slo/{{slo_id}}"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo
              method: GET
    - type: http
      namespace: slack-slo
      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 current API latency metrics for Twilio services from Datadog.

naftiko: "0.5"
info:
  label: "Datadog Twilio API Latency Check"
  description: "Returns current API latency metrics for Twilio services from Datadog."
  tags:
    - observability
    - datadog
    - api-health
capability:
  exposes:
    - type: mcp
      namespace: datadog_twilio_api_l
      port: 8080
      tools:
        - name: query-data
          description: "Returns current API latency metrics for Twilio services from Datadog."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Pulls GitHub repository star and fork counts along with Salesforce developer account registrations, and posts a weekly developer community growth digest to the DevRel Slack channel.

naftiko: "0.5"
info:
  label: "Developer Evangelist Content Performance Digest"
  description: "Pulls GitHub repository star and fork counts along with Salesforce developer account registrations, and posts a weekly developer community growth digest to the DevRel Slack channel."
  tags:
    - marketing
    - developer-relations
    - github
    - salesforce
    - slack
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: devrel-reporting
      port: 8080
      tools:
        - name: digest-devrel-growth
          description: "Given a GitHub repository and Salesforce campaign, retrieve community growth metrics (stars, forks, developer signups) and post a weekly DevRel digest to Slack."
          inputParameters:
            - name: github_repo
              in: body
              type: string
              description: "GitHub repository to track (e.g., twilio/twilio-python)."
            - name: sf_campaign_id
              in: body
              type: string
              description: "Salesforce campaign ID tracking developer signups."
            - name: devrel_channel
              in: body
              type: string
              description: "Slack channel for the DevRel team digest."
          steps:
            - name: get-repo-stats
              type: call
              call: "github-devrel.get-repository"
              with:
                repo: "{{github_repo}}"
            - name: get-signup-stats
              type: call
              call: "salesforce-devrel.get-campaign"
              with:
                campaign_id: "{{sf_campaign_id}}"
            - name: post-devrel-digest
              type: call
              call: "slack-devrel.post-message"
              with:
                channel: "{{devrel_channel}}"
                text: "DevRel Growth: {{github_repo}} | Stars: {{get-repo-stats.stargazers_count}} | Forks: {{get-repo-stats.forks_count}} | Developer signups (campaign): {{get-signup-stats.leads_count}} | Converted: {{get-signup-stats.converted_leads}}"
  consumes:
    - type: http
      namespace: github-devrel
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: repositories
          path: "/repos/{{repo}}"
          inputParameters:
            - name: repo
              in: path
          operations:
            - name: get-repository
              method: GET
    - type: http
      namespace: salesforce-devrel
      baseUri: "https://twilio.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET
    - type: http
      namespace: slack-devrel
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When an employee separates from Twilio, deactivates their Okta account, revokes GitHub access, closes their Zendesk agent profile, and posts a farewell to their Slack team channel.

naftiko: "0.5"
info:
  label: "Employee Offboarding Sequence"
  description: "When an employee separates from Twilio, deactivates their Okta account, revokes GitHub access, closes their Zendesk agent profile, and posts a farewell to their Slack team channel."
  tags:
    - hr
    - offboarding
    - okta
    - github
    - zendesk
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: trigger-employee-offboarding
          description: "Given an employee's email, GitHub username, and Okta user ID, deactivate all accounts across Okta, GitHub, and Zendesk, and post a farewell to their team Slack channel."
          inputParameters:
            - name: okta_user_id
              in: body
              type: string
              description: "The Okta user ID for the departing employee."
            - name: github_username
              in: body
              type: string
              description: "The departing employee's GitHub username."
            - name: zendesk_agent_id
              in: body
              type: string
              description: "The departing employee's Zendesk agent ID (if applicable)."
            - name: team_slack_channel
              in: body
              type: string
              description: "Slack channel for the employee's team for farewell message."
            - name: employee_name
              in: body
              type: string
              description: "Full name of the departing employee."
          steps:
            - name: deactivate-okta
              type: call
              call: "okta-off.deactivate-user"
              with:
                user_id: "{{okta_user_id}}"
            - name: remove-github
              type: call
              call: "github-off.remove-org-member"
              with:
                username: "{{github_username}}"
            - name: deactivate-zendesk
              type: call
              call: "zendesk-off.update-agent"
              with:
                agent_id: "{{zendesk_agent_id}}"
                role: "end-user"
            - name: post-farewell
              type: call
              call: "slack-off.post-message"
              with:
                channel: "{{team_slack_channel}}"
                text: "Today is {{employee_name}}'s last day at Twilio. Please join us in wishing them well on their next chapter!"
  consumes:
    - type: http
      namespace: okta-off
      baseUri: "https://twilio.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users
          path: "/users/{{user_id}}/lifecycle/deactivate"
          inputParameters:
            - name: user_id
              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/twilio/members/{{username}}"
          inputParameters:
            - name: username
              in: path
          operations:
            - name: remove-org-member
              method: DELETE
    - type: http
      namespace: zendesk-off
      baseUri: "https://twilio.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_api_token"
      resources:
        - name: agents
          path: "/users/{{agent_id}}"
          inputParameters:
            - name: agent_id
              in: path
          operations:
            - name: update-agent
              method: PUT
    - type: http
      namespace: slack-off
      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 pull request is opened in a Twilio GitHub repository, assigns reviewers based on team ownership, creates a Jira sub-task for review tracking, and posts a Slack notification.

naftiko: "0.5"
info:
  label: "GitHub Pull Request Code Review Assignment"
  description: "When a pull request is opened in a Twilio GitHub repository, assigns reviewers based on team ownership, creates a Jira sub-task for review tracking, and posts a Slack notification."
  tags:
    - devops
    - code-review
    - github
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: code-review
      port: 8080
      tools:
        - name: assign-pr-reviewers
          description: "Given a GitHub PR number and repository, assign team reviewers, create a Jira sub-task for review tracking, and post a Slack notification to the team channel."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name (e.g., twilio/twilio-python)."
            - name: pr_number
              in: body
              type: integer
              description: "The pull request number."
            - name: jira_parent_key
              in: body
              type: string
              description: "The parent Jira issue key this PR relates to."
            - name: team_slack_channel
              in: body
              type: string
              description: "Slack channel for the owning engineering team."
          steps:
            - name: get-pr
              type: call
              call: "github-pr.get-pull-request"
              with:
                repo: "{{repo_name}}"
                pull_number: "{{pr_number}}"
            - name: create-jira-subtask
              type: call
              call: "jira-pr.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Subtask"
                summary: "Code review: PR #{{pr_number}} - {{get-pr.title}}"
                parent: "{{jira_parent_key}}"
            - name: notify-team
              type: call
              call: "slack-pr.post-message"
              with:
                channel: "{{team_slack_channel}}"
                text: "PR ready for review: {{get-pr.title}} | Repo: {{repo_name}} | PR: {{get-pr.html_url}} | Jira: {{create-jira-subtask.key}}"
  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/{{pull_number}}"
          inputParameters:
            - name: repo
              in: path
            - name: pull_number
              in: path
          operations:
            - name: get-pull-request
              method: GET
    - type: http
      namespace: jira-pr
      baseUri: "https://twilio.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-pr
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Triggers a security scan on a GitHub repository, retrieves vulnerability alerts, creates Jira tickets for critical findings, and posts a scan summary to the security Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Repository Security Scan"
  description: "Triggers a security scan on a GitHub repository, retrieves vulnerability alerts, creates Jira tickets for critical findings, and posts a scan summary to the security Slack channel."
  tags:
    - security
    - devops
    - github
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: repo-security
      port: 8080
      tools:
        - name: scan-repo-vulnerabilities
          description: "Given a GitHub repository name, retrieve Dependabot vulnerability alerts, create Jira tickets for critical/high severity findings, and post a security scan digest to Slack."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name to scan (e.g., twilio/twilio-python)."
            - name: security_channel
              in: body
              type: string
              description: "Slack channel for the security team digest."
          steps:
            - name: get-vuln-alerts
              type: call
              call: "github-security.get-dependabot-alerts"
              with:
                repo: "{{repo_name}}"
                severity: "critical"
            - name: create-security-ticket
              type: call
              call: "jira-vuln.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "Vulnerability scan: {{repo_name}} - {{get-vuln-alerts.critical_count}} critical findings"
                description: "Repository: {{repo_name}}\nCritical: {{get-vuln-alerts.critical_count}}\nHigh: {{get-vuln-alerts.high_count}}"
            - name: post-scan-digest
              type: call
              call: "slack-vuln.post-message"
              with:
                channel: "{{security_channel}}"
                text: "Security Scan: {{repo_name}} | Critical: {{get-vuln-alerts.critical_count}} | High: {{get-vuln-alerts.high_count}} | Jira: {{create-security-ticket.key}}"
  consumes:
    - type: http
      namespace: github-security
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{repo}}/dependabot/alerts"
          inputParameters:
            - name: repo
              in: path
            - name: severity
              in: query
          operations:
            - name: get-dependabot-alerts
              method: GET
    - type: http
      namespace: jira-vuln
      baseUri: "https://twilio.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_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Jira for all new unassigned bugs in a project, assigns them to the appropriate team via component ownership, and posts a triage digest to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "Jira Bug Triage and Prioritization"
  description: "Queries Jira for all new unassigned bugs in a project, assigns them to the appropriate team via component ownership, and posts a triage digest to the engineering Slack channel."
  tags:
    - devops
    - bug-triage
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: bug-triage
      port: 8080
      tools:
        - name: triage-new-bugs
          description: "Given a Jira project key, retrieve all new unassigned bugs created in the past 24 hours, post a triage summary to the engineering Slack channel for team assignment."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key to triage (e.g., PLAT, SMS, VOICE)."
            - name: eng_channel
              in: body
              type: string
              description: "Slack channel for the engineering triage digest."
          steps:
            - name: get-new-bugs
              type: call
              call: "jira-triage.search-issues"
              with:
                jql: "project={{project_key}} AND issuetype=Bug AND status=New AND created>=-1d AND assignee is EMPTY"
            - name: post-triage-digest
              type: call
              call: "slack-triage.post-message"
              with:
                channel: "{{eng_channel}}"
                text: "Bug Triage: Project {{project_key}} | New unassigned bugs (24h): {{get-new-bugs.total}} | Critical: {{get-new-bugs.critical_count}} | High: {{get-new-bugs.high_count}} | Please assign ownership in Jira."
  consumes:
    - type: http
      namespace: jira-triage
      baseUri: "https://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: slack-triage
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Returns the status and details of a Twilio platform engineering Jira ticket.

naftiko: "0.5"
info:
  label: "Jira Platform Ticket Status Check"
  description: "Returns the status and details of a Twilio platform engineering Jira ticket."
  tags:
    - devops
    - jira
    - platform
capability:
  exposes:
    - type: mcp
      namespace: jira_platform_ticket
      port: 8080
      tools:
        - name: query-data
          description: "Returns the status and details of a Twilio platform 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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Pulls completed story points and velocity data from Jira for a given sprint and posts a velocity digest to the engineering team's Slack channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "Pulls completed story points and velocity data from Jira for a given sprint and posts a velocity digest to the engineering team's Slack channel."
  tags:
    - devops
    - reporting
    - jira
    - slack
    - agile
capability:
  exposes:
    - type: mcp
      namespace: agile-reporting
      port: 8080
      tools:
        - name: digest-sprint-velocity
          description: "Given a Jira board ID and sprint ID, retrieve velocity metrics (completed vs committed story points) and post a sprint summary to the team's Slack channel."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID for the engineering team."
            - name: sprint_id
              in: body
              type: string
              description: "The Jira sprint ID to report on."
            - name: team_channel
              in: body
              type: string
              description: "Slack channel where the sprint digest will be posted."
          steps:
            - name: get-sprint-data
              type: call
              call: "jira-velocity.get-sprint"
              with:
                boardId: "{{board_id}}"
                sprintId: "{{sprint_id}}"
            - name: post-digest
              type: call
              call: "slack-velocity.post-message"
              with:
                channel: "{{team_channel}}"
                text: "Sprint Velocity Report: Sprint {{get-sprint-data.name}} | Committed: {{get-sprint-data.committed_points}} pts | Completed: {{get-sprint-data.completed_points}} pts | Velocity: {{get-sprint-data.velocity_pct}}%"
  consumes:
    - type: http
      namespace: jira-velocity
      baseUri: "https://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{boardId}}/sprint/{{sprintId}}"
          inputParameters:
            - name: boardId
              in: path
            - name: sprintId
              in: path
          operations:
            - name: get-sprint
              method: GET
    - type: http
      namespace: slack-velocity
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls Salesforce campaign performance metrics and posts a weekly campaign digest to the marketing leadership Slack channel.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Digest"
  description: "Pulls Salesforce campaign performance metrics and posts a weekly campaign digest to the marketing leadership Slack channel."
  tags:
    - marketing
    - salesforce
    - slack
    - reporting
    - campaign
capability:
  exposes:
    - type: mcp
      namespace: marketing-reporting
      port: 8080
      tools:
        - name: digest-campaign-performance
          description: "Given a Salesforce campaign ID and reporting period, retrieve campaign performance metrics (leads, conversions, spend) and post a digest to the marketing leadership Slack channel."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Salesforce campaign ID to report on."
            - name: marketing_channel
              in: body
              type: string
              description: "Slack channel for the marketing leadership digest."
          steps:
            - name: get-campaign-stats
              type: call
              call: "salesforce-mktg.get-campaign"
              with:
                campaign_id: "{{campaign_id}}"
            - name: post-campaign-digest
              type: call
              call: "slack-mktg.post-message"
              with:
                channel: "{{marketing_channel}}"
                text: "Campaign Performance: {{get-campaign-stats.name}} | Leads: {{get-campaign-stats.leads_count}} | Converted: {{get-campaign-stats.converted_leads}} | Opportunities: {{get-campaign-stats.opportunities_count}} | Pipeline: ${{get-campaign-stats.expected_revenue}}"
  consumes:
    - type: http
      namespace: salesforce-mktg
      baseUri: "https://twilio.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET
    - type: http
      namespace: slack-mktg
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a new software engineer is created in Workday, opens a Jira onboarding epic, provisions GitHub access, and sends a Slack welcome message to the engineering team channel.

naftiko: "0.5"
info:
  label: "New Engineer Onboarding Orchestrator"
  description: "When a new software engineer is created in Workday, opens a Jira onboarding epic, provisions GitHub access, and sends a Slack welcome message to the engineering team channel."
  tags:
    - hr
    - onboarding
    - workday
    - jira
    - github
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-engineer-onboarding
          description: "Given a Workday employee ID and team assignment, orchestrate full engineering onboarding: create a Jira epic, provision GitHub org access, and post a Slack welcome."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the new engineer."
            - name: team_name
              in: body
              type: string
              description: "The engineering team the new hire is joining (e.g., platform, messaging, growth)."
            - name: github_username
              in: body
              type: string
              description: "The new hire's GitHub username for org provisioning."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: create-jira-epic
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Epic"
                summary: "Onboarding: {{get-employee.full_name}} - {{team_name}} - {{start_date}}"
                description: "Engineering onboarding epic for {{get-employee.first_name}} joining the {{team_name}} team."
            - name: invite-github
              type: call
              call: "github.add-org-member"
              with:
                username: "{{github_username}}"
                role: "member"
            - name: post-welcome
              type: call
              call: "slack.post-message"
              with:
                channel: "engineering"
                text: "Welcome {{get-employee.first_name}} {{get-employee.last_name}} to the {{team_name}} team! They start {{start_date}}. Say hello and help them get set up. Onboarding epic: {{create-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: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://twilio.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: org-members
          path: "/orgs/twilio/memberships/{{username}}"
          inputParameters:
            - name: username
              in: path
          operations:
            - name: add-org-member
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a new employee is created in Workday, provisions their Okta account with group memberships based on their role and sends a Slack notification with setup instructions.

naftiko: "0.5"
info:
  label: "Okta User Provisioning on Hire"
  description: "When a new employee is created in Workday, provisions their Okta account with group memberships based on their role and sends a Slack notification with setup instructions."
  tags:
    - identity
    - security
    - okta
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: identity-provisioning
      port: 8080
      tools:
        - name: provision-okta-user
          description: "Given a Workday employee ID and role, create an Okta user account, assign role-appropriate groups, and post onboarding instructions to the new hire in Slack."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the new hire."
            - name: employee_email
              in: body
              type: string
              description: "The new hire's corporate email address."
            - name: role
              in: body
              type: string
              description: "The employee's role for group assignment (e.g., engineering, sales, support)."
          steps:
            - name: get-employee
              type: call
              call: "workday-okta.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: create-okta-user
              type: call
              call: "okta.create-user"
              with:
                email: "{{employee_email}}"
                firstName: "{{get-employee.first_name}}"
                lastName: "{{get-employee.last_name}}"
                login: "{{employee_email}}"
            - name: notify-new-hire
              type: call
              call: "slack-okta.post-message"
              with:
                channel: "{{employee_email}}"
                text: "Welcome to Twilio! Your Okta account has been provisioned. Log in at https://twilio.okta.com with {{employee_email}}. You'll receive a setup email shortly."
  consumes:
    - type: http
      namespace: workday-okta
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta
      baseUri: "https://twilio.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: slack-okta
      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 Datadog monitor fires a P1 alert, creates a PagerDuty incident, opens a Jira issue for tracking, and posts an incident bridge link to the Slack ops channel.

naftiko: "0.5"
info:
  label: "Production Incident Response"
  description: "When a Datadog monitor fires a P1 alert, creates a PagerDuty incident, opens a Jira issue for tracking, and posts an incident bridge link to the Slack ops channel."
  tags:
    - operations
    - incident-response
    - datadog
    - pagerduty
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: incident-response
      port: 8080
      tools:
        - name: handle-production-incident
          description: "Given a Datadog monitor alert, trigger a PagerDuty incident, create a Jira issue for post-mortem tracking, and post an incident war room link to Slack ops."
          inputParameters:
            - name: monitor_name
              in: body
              type: string
              description: "The name of the Datadog monitor that fired."
            - name: service_name
              in: body
              type: string
              description: "The affected Twilio service or product (e.g., SMS API, Voice API, Flex)."
            - name: severity
              in: body
              type: string
              description: "Incident severity: P1, P2, P3."
            - name: monitor_url
              in: body
              type: string
              description: "URL to the Datadog monitor for investigation."
          steps:
            - name: trigger-pagerduty
              type: call
              call: "pagerduty.create-incident"
              with:
                title: "{{severity}}: {{service_name}} - {{monitor_name}}"
                service_id: "$secrets.pagerduty_service_id"
                urgency: "high"
            - name: create-jira-incident
              type: call
              call: "jira-incident.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Incident"
                summary: "{{severity}} Incident: {{service_name}} - {{monitor_name}}"
                description: "Monitor: {{monitor_name}}\nService: {{service_name}}\nDatadog: {{monitor_url}}\nPagerDuty: {{trigger-pagerduty.incident_url}}"
            - name: post-ops-alert
              type: call
              call: "slack-ops.post-message"
              with:
                channel: "incidents"
                text: "{{severity}} INCIDENT: {{service_name}} | {{monitor_name}} | Jira: {{create-jira-incident.key}} | PD: {{trigger-pagerduty.incident_url}} | Monitor: {{monitor_url}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: jira-incident
      baseUri: "https://twilio.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-ops
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls open requisition and candidate pipeline data from Workday Recruiting for a given department and posts a weekly hiring digest to the HR leadership Slack channel.

naftiko: "0.5"
info:
  label: "Recruiting Pipeline Status Report"
  description: "Pulls open requisition and candidate pipeline data from Workday Recruiting for a given department and posts a weekly hiring digest to the HR leadership Slack channel."
  tags:
    - hr
    - recruiting
    - workday
    - slack
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: recruiting-reporting
      port: 8080
      tools:
        - name: digest-recruiting-pipeline
          description: "Given a department name and reporting week, retrieve open requisitions and candidate pipeline stages from Workday and post a hiring digest to the HR leadership Slack channel."
          inputParameters:
            - name: department
              in: body
              type: string
              description: "The department to report on (e.g., Engineering, Sales, Support)."
            - name: hr_leadership_channel
              in: body
              type: string
              description: "Slack channel for HR leadership digest."
          steps:
            - name: get-requisitions
              type: call
              call: "workday-recruiting.get-job-requisitions"
              with:
                department: "{{department}}"
                status: "open"
            - name: post-recruiting-digest
              type: call
              call: "slack-recruiting.post-message"
              with:
                channel: "{{hr_leadership_channel}}"
                text: "Recruiting Pipeline - {{department}}: Open requisitions: {{get-requisitions.open_count}} | Candidates in pipeline: {{get-requisitions.candidate_count}} | Offers pending: {{get-requisitions.offers_pending}} | Time-to-fill avg: {{get-requisitions.avg_days_open}} days"
  consumes:
    - type: http
      namespace: workday-recruiting
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: job-requisitions
          path: "/jobRequisitions"
          inputParameters:
            - name: department
              in: query
            - name: status
              in: query
          operations:
            - name: get-job-requisitions
              method: GET
    - type: http
      namespace: slack-recruiting
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Calculates and updates account health scores in Salesforce based on recent support ticket volume from Zendesk and product usage signals, and alerts CSMs of at-risk accounts via Slack.

naftiko: "0.5"
info:
  label: "Salesforce Account Health Score Update"
  description: "Calculates and updates account health scores in Salesforce based on recent support ticket volume from Zendesk and product usage signals, and alerts CSMs of at-risk accounts via Slack."
  tags:
    - customer-success
    - salesforce
    - zendesk
    - slack
capability:
  exposes:
    - type: mcp
      namespace: account-health
      port: 8080
      tools:
        - name: update-account-health-score
          description: "Given a Salesforce account ID, retrieve recent Zendesk ticket volume for the account, calculate a health score, update Salesforce, and notify the CSM via Slack if the account is at risk."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID to evaluate."
            - name: csm_slack_id
              in: body
              type: string
              description: "Slack user ID of the Customer Success Manager for the account."
          steps:
            - name: get-account
              type: call
              call: "salesforce-health.get-account"
              with:
                account_id: "{{account_id}}"
            - name: get-zendesk-tickets
              type: call
              call: "zendesk-health.get-tickets"
              with:
                organization_name: "{{get-account.name}}"
                created_after: "30_days_ago"
            - name: update-health-score
              type: call
              call: "salesforce-health.update-account"
              with:
                account_id: "{{account_id}}"
                health_score: "{{get-zendesk-tickets.health_score}}"
            - name: alert-csm
              type: call
              call: "slack-health.post-message"
              with:
                channel: "{{csm_slack_id}}"
                text: "Account health update: {{get-account.name}} | Score: {{get-zendesk-tickets.health_score}} | Tickets (30d): {{get-zendesk-tickets.ticket_count}} | Status: {{update-health-score.health_status}}"
  consumes:
    - type: http
      namespace: salesforce-health
      baseUri: "https://twilio.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
            - name: update-account
              method: PATCH
    - type: http
      namespace: zendesk-health
      baseUri: "https://twilio.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets"
          inputParameters:
            - name: organization_name
              in: query
            - name: created_after
              in: query
          operations:
            - name: get-tickets
              method: GET
    - type: http
      namespace: slack-health
      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 Twilio customer account details from Salesforce including plan and ARR.

naftiko: "0.5"
info:
  label: "Salesforce Customer Account Lookup"
  description: "Returns Twilio customer account details from Salesforce including plan and ARR."
  tags:
    - crm
    - salesforce
    - accounts
capability:
  exposes:
    - type: mcp
      namespace: salesforce_customer_
      port: 8080
      tools:
        - name: query-data
          description: "Returns Twilio customer account details from Salesforce including plan and ARR."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a developer shows high engagement with Twilio's GitHub repos, enriches their Salesforce lead record with developer signals and notifies the owning sales rep in Slack.

naftiko: "0.5"
info:
  label: "Salesforce Lead Enrichment from GitHub Activity"
  description: "When a developer shows high engagement with Twilio's GitHub repos, enriches their Salesforce lead record with developer signals and notifies the owning sales rep in Slack."
  tags:
    - sales
    - crm
    - salesforce
    - github
    - slack
    - developer-relations
capability:
  exposes:
    - type: mcp
      namespace: dev-sales
      port: 8080
      tools:
        - name: enrich-developer-lead
          description: "Given a GitHub username and Salesforce lead ID, pull the developer's GitHub profile stats and update the Salesforce lead with developer engagement signals, then notify the sales rep in Slack."
          inputParameters:
            - name: github_username
              in: body
              type: string
              description: "The developer's GitHub username."
            - name: salesforce_lead_id
              in: body
              type: string
              description: "The Salesforce lead ID to update."
            - name: sales_rep_slack_id
              in: body
              type: string
              description: "Slack user ID of the owning sales representative."
          steps:
            - name: get-github-profile
              type: call
              call: "github-sales.get-user"
              with:
                username: "{{github_username}}"
            - name: update-sf-lead
              type: call
              call: "salesforce.update-lead"
              with:
                lead_id: "{{salesforce_lead_id}}"
                github_profile: "https://github.com/{{github_username}}"
                github_followers: "{{get-github-profile.followers}}"
                github_public_repos: "{{get-github-profile.public_repos}}"
            - name: notify-sales-rep
              type: call
              call: "slack-sales.post-message"
              with:
                channel: "{{sales_rep_slack_id}}"
                text: "Developer signal: {{get-github-profile.name}} (@{{github_username}}) has {{get-github-profile.followers}} followers and {{get-github-profile.public_repos}} repos. Salesforce lead updated: {{update-sf-lead.url}}"
  consumes:
    - type: http
      namespace: github-sales
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: users
          path: "/users/{{username}}"
          inputParameters:
            - name: username
              in: path
          operations:
            - name: get-user
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://twilio.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: update-lead
              method: PATCH
    - type: http
      namespace: slack-sales
      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 Salesforce opportunity moves to the Closed Won stage, updates the account record, creates a Jira customer success onboarding epic, and notifies the CS team in Slack.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Stage Update"
  description: "When a Salesforce opportunity moves to the Closed Won stage, updates the account record, creates a Jira customer success onboarding epic, and notifies the CS team in Slack."
  tags:
    - sales
    - crm
    - salesforce
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sales-ops
      port: 8080
      tools:
        - name: handle-opportunity-closed-won
          description: "Given a Salesforce opportunity ID marked Closed Won, update the account, create a Jira CS onboarding epic, and notify the customer success team in Slack."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID that was closed won."
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID of the winning customer."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce-oppty.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: update-account
              type: call
              call: "salesforce-oppty.update-account"
              with:
                account_id: "{{account_id}}"
                customer_since: "today"
            - name: create-cs-epic
              type: call
              call: "jira-cs.create-issue"
              with:
                project_key: "CS"
                issuetype: "Epic"
                summary: "Customer Onboarding: {{get-opportunity.account_name}} - {{get-opportunity.name}}"
                description: "Closed Won opportunity: {{opportunity_id}}. ARR: {{get-opportunity.amount}}. Owner: {{get-opportunity.owner_name}}"
            - name: notify-cs-team
              type: call
              call: "slack-cs.post-message"
              with:
                channel: "customer-success"
                text: "New customer: {{get-opportunity.account_name}} | ARR: ${{get-opportunity.amount}} | Deal: {{get-opportunity.name}} | Onboarding epic: {{create-cs-epic.key}}"
  consumes:
    - type: http
      namespace: salesforce-oppty
      baseUri: "https://twilio.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
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: jira-cs
      baseUri: "https://twilio.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-cs
      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 CrowdStrike detection fires, creates a Jira security ticket, posts a Slack alert to the security channel, and triggers a Datadog event for correlation.

naftiko: "0.5"
info:
  label: "Security Vulnerability Triage"
  description: "When a CrowdStrike detection fires, creates a Jira security ticket, posts a Slack alert to the security channel, and triggers a Datadog event for correlation."
  tags:
    - security
    - vulnerability-management
    - crowdstrike
    - jira
    - slack
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: triage-security-detection
          description: "Given a CrowdStrike detection ID and severity, create a Jira security ticket, alert the security Slack channel, and post a Datadog event for SOC correlation."
          inputParameters:
            - name: detection_id
              in: body
              type: string
              description: "The CrowdStrike detection ID."
            - name: hostname
              in: body
              type: string
              description: "The hostname of the affected system."
            - name: severity
              in: body
              type: string
              description: "Detection severity: critical, high, medium, low."
            - name: tactic
              in: body
              type: string
              description: "MITRE ATT&CK tactic associated with the detection."
          steps:
            - name: create-security-ticket
              type: call
              call: "jira-security.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "[{{severity}}] CrowdStrike Detection: {{tactic}} on {{hostname}}"
                description: "Detection ID: {{detection_id}}\nHost: {{hostname}}\nSeverity: {{severity}}\nTactic: {{tactic}}"
            - name: alert-security-channel
              type: call
              call: "slack-security.post-message"
              with:
                channel: "security-alerts"
                text: "Security Detection: {{severity}} | Host: {{hostname}} | Tactic: {{tactic}} | Jira: {{create-security-ticket.key}} | Detection: {{detection_id}}"
            - name: post-datadog-event
              type: call
              call: "datadog-security.create-event"
              with:
                title: "CrowdStrike Detection: {{hostname}}"
                text: "{{tactic}} detection ({{severity}}) on {{hostname}}. Detection ID: {{detection_id}}"
                alert_type: "error"
  consumes:
    - type: http
      namespace: jira-security
      baseUri: "https://twilio.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-security
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: datadog-security
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST

Queries Snowflake for customer engagement metrics across messaging channels.

naftiko: "0.5"
info:
  label: "Snowflake Customer Engagement Query"
  description: "Queries Snowflake for customer engagement metrics across messaging channels."
  tags:
    - analytics
    - snowflake
    - engagement
capability:
  exposes:
    - type: mcp
      namespace: snowflake_customer_e
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for customer engagement metrics across messaging channels."
          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://twilio.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 pipeline run status and row count anomalies, then posts a data quality digest to the data engineering Slack channel and creates a Jira ticket for failures.

naftiko: "0.5"
info:
  label: "Snowflake Data Pipeline Health Check"
  description: "Queries Snowflake for pipeline run status and row count anomalies, then posts a data quality digest to the data engineering Slack channel and creates a Jira ticket for failures."
  tags:
    - data
    - analytics
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data-ops
      port: 8080
      tools:
        - name: check-pipeline-health
          description: "Given a Snowflake database and pipeline name, query execution history for failures or anomalies, post a health digest to Slack, and open a Jira ticket for any detected failures."
          inputParameters:
            - name: database_name
              in: body
              type: string
              description: "The Snowflake database containing the pipeline tables."
            - name: pipeline_name
              in: body
              type: string
              description: "The name of the data pipeline to check."
            - name: data_channel
              in: body
              type: string
              description: "Slack channel for the data engineering team."
          steps:
            - name: get-pipeline-status
              type: call
              call: "snowflake.query-pipeline-status"
              with:
                database: "{{database_name}}"
                pipeline: "{{pipeline_name}}"
            - name: create-failure-ticket
              type: call
              call: "jira-data.create-issue"
              with:
                project_key: "DATA"
                issuetype: "Bug"
                summary: "Pipeline failure: {{pipeline_name}} in {{database_name}}"
                description: "Pipeline {{pipeline_name}} failed. Last run: {{get-pipeline-status.last_run}}. Rows processed: {{get-pipeline-status.row_count}}"
            - name: post-health-digest
              type: call
              call: "slack-data.post-message"
              with:
                channel: "{{data_channel}}"
                text: "Pipeline Health: {{pipeline_name}} | Status: {{get-pipeline-status.status}} | Last Run: {{get-pipeline-status.last_run}} | Rows: {{get-pipeline-status.row_count}} | Jira: {{create-failure-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-pipeline-status
              method: POST
    - type: http
      namespace: jira-data
      baseUri: "https://twilio.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-data
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for developer adoption metrics including new accounts and API keys.

naftiko: "0.5"
info:
  label: "Snowflake Developer Adoption Query"
  description: "Queries Snowflake for developer adoption metrics including new accounts and API keys."
  tags:
    - analytics
    - snowflake
    - developer-experience
capability:
  exposes:
    - type: mcp
      namespace: snowflake_developer_
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for developer adoption metrics including new accounts and API keys."
          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://twilio.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 messaging volume trends by channel and time period.

naftiko: "0.5"
info:
  label: "Snowflake Messaging Analytics Query"
  description: "Queries Snowflake for messaging volume trends by channel and time period."
  tags:
    - analytics
    - snowflake
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: snowflake_messaging_
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for messaging volume trends by channel and time period."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves top long-running queries from Snowflake's query history, creates Jira optimization tasks for the data engineering team, and posts a performance summary to Slack.

naftiko: "0.5"
info:
  label: "Snowflake Query Performance Audit"
  description: "Retrieves top long-running queries from Snowflake's query history, creates Jira optimization tasks for the data engineering team, and posts a performance summary to Slack."
  tags:
    - data
    - snowflake
    - jira
    - slack
    - performance
capability:
  exposes:
    - type: mcp
      namespace: data-performance
      port: 8080
      tools:
        - name: audit-query-performance
          description: "Given a Snowflake warehouse and time window, retrieve top-10 longest-running queries, create a Jira optimization task for the data team, and post a performance digest to Slack."
          inputParameters:
            - name: warehouse_name
              in: body
              type: string
              description: "The Snowflake warehouse to audit query performance for."
            - name: hours_back
              in: body
              type: integer
              description: "Number of hours back to look in query history (e.g., 24)."
            - name: data_channel
              in: body
              type: string
              description: "Slack channel for the data engineering team."
          steps:
            - name: get-slow-queries
              type: call
              call: "snowflake-perf.query-history"
              with:
                warehouse: "{{warehouse_name}}"
                hours: "{{hours_back}}"
            - name: create-optimization-task
              type: call
              call: "jira-perf.create-issue"
              with:
                project_key: "DATA"
                issuetype: "Task"
                summary: "Query optimization: {{warehouse_name}} - {{get-slow-queries.slow_query_count}} slow queries"
                description: "Top slow query: {{get-slow-queries.top_query_id}} running {{get-slow-queries.max_duration_seconds}}s"
            - name: post-perf-digest
              type: call
              call: "slack-perf.post-message"
              with:
                channel: "{{data_channel}}"
                text: "Query Performance: {{warehouse_name}} (last {{hours_back}}h) | Slow queries: {{get-slow-queries.slow_query_count}} | Max duration: {{get-slow-queries.max_duration_seconds}}s | Optimization task: {{create-optimization-task.key}}"
  consumes:
    - type: http
      namespace: snowflake-perf
      baseUri: "https://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: query-history
          path: "/statements"
          inputParameters:
            - name: warehouse
              in: query
            - name: hours
              in: query
          operations:
            - name: query-history
              method: POST
    - type: http
      namespace: jira-perf
      baseUri: "https://twilio.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-perf
      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 Terraform Cloud plan is created for a production workspace, creates a Jira approval task, notifies the infrastructure team in Slack, and posts a Datadog event.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Provisioning Approval"
  description: "When a Terraform Cloud plan is created for a production workspace, creates a Jira approval task, notifies the infrastructure team in Slack, and posts a Datadog event."
  tags:
    - cloud
    - infrastructure
    - terraform
    - jira
    - slack
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: request-terraform-approval
          description: "Given a Terraform Cloud workspace and plan ID, create a Jira approval task for the infrastructure change, notify the infra team in Slack, and post a Datadog event for auditability."
          inputParameters:
            - name: workspace_name
              in: body
              type: string
              description: "The Terraform Cloud workspace name (e.g., production-us-east-1)."
            - name: plan_id
              in: body
              type: string
              description: "The Terraform Cloud plan ID pending approval."
            - name: resource_count
              in: body
              type: integer
              description: "Number of resources to be added, changed, or destroyed."
            - name: infra_channel
              in: body
              type: string
              description: "Slack channel for the infrastructure team."
          steps:
            - name: get-plan
              type: call
              call: "terraform.get-plan"
              with:
                plan_id: "{{plan_id}}"
            - name: create-approval-task
              type: call
              call: "jira-terraform.create-issue"
              with:
                project_key: "INFRA"
                issuetype: "Task"
                summary: "Terraform approval: {{workspace_name}} - {{resource_count}} resource changes"
                description: "Plan ID: {{plan_id}}\nWorkspace: {{workspace_name}}\nChanges: {{resource_count}} resources"
            - name: notify-infra-team
              type: call
              call: "slack-terraform.post-message"
              with:
                channel: "{{infra_channel}}"
                text: "Terraform plan pending approval: {{workspace_name}} | {{resource_count}} resource changes | Jira: {{create-approval-task.key}} | Plan: {{plan_id}}"
            - name: log-datadog-event
              type: call
              call: "datadog-terraform.create-event"
              with:
                title: "Terraform Plan: {{workspace_name}}"
                text: "Plan {{plan_id}} pending approval. {{resource_count}} resource changes."
                alert_type: "info"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: plans
          path: "/plans/{{plan_id}}"
          inputParameters:
            - name: plan_id
              in: path
          operations:
            - name: get-plan
              method: GET
    - type: http
      namespace: jira-terraform
      baseUri: "https://twilio.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-terraform
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: datadog-terraform
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST

Tracks A2P 10DLC campaign registrations from Snowflake, creates Jira tasks for rejections, and notifies the messaging team.

naftiko: "0.5"
info:
  label: "Twilio A2P 10DLC Registration Tracker"
  description: "Tracks A2P 10DLC campaign registrations from Snowflake, creates Jira tasks for rejections, and notifies the messaging team."
  tags:
    - compliance
    - snowflake
    - jira
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: twilio_a2p_10dlc_reg
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks A2P 10DLC campaign registrations from Snowflake, creates Jira tasks for rejections, and notifies the messaging 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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 trust violation is detected, suspends the account, creates a ServiceNow case, and notifies the compliance team.

naftiko: "0.5"
info:
  label: "Twilio Account Suspension Workflow"
  description: "When a trust violation is detected, suspends the account, creates a ServiceNow case, and notifies the compliance team."
  tags:
    - security
    - servicenow
    - slack
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: twilio_account_suspe
      port: 8080
      tools:
        - name: handle-event
          description: "When a trust violation is detected, suspends the account, creates a ServiceNow case, and notifies the compliance 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: "[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://twilio.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://twilio.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 current month usage and billing data for a Twilio account.

naftiko: "0.5"
info:
  label: "Twilio Account Usage Lookup"
  description: "Returns current month usage and billing data for a Twilio account."
  tags:
    - communications
    - twilio
    - billing
capability:
  exposes:
    - type: mcp
      namespace: twilio_account_usage
      port: 8080
      tools:
        - name: query-data
          description: "Returns current month usage and billing data for a Twilio account."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Analyzes API error patterns from Snowflake, creates Jira engineering tickets for systematic issues, and posts findings to Slack.

naftiko: "0.5"
info:
  label: "Twilio API Error Pattern Analyzer"
  description: "Analyzes API error patterns from Snowflake, creates Jira engineering tickets for systematic issues, and posts findings to Slack."
  tags:
    - devops
    - snowflake
    - jira
    - slack
    - api-reliability
capability:
  exposes:
    - type: mcp
      namespace: twilio_api_error_pat
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes API error patterns from Snowflake, creates Jira engineering tickets for systematic issues, 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: "[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://twilio.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://twilio.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 API keys approach expiration, notifies the customer via SendGrid, creates a Jira tracking task, and alerts the security team.

naftiko: "0.5"
info:
  label: "Twilio API Key Rotation Workflow"
  description: "When API keys approach expiration, notifies the customer via SendGrid, creates a Jira tracking task, and alerts the security team."
  tags:
    - security
    - jira
    - slack
    - api-management
capability:
  exposes:
    - type: mcp
      namespace: twilio_api_key_rotat
      port: 8080
      tools:
        - name: handle-event
          description: "When API keys approach expiration, notifies the customer via SendGrid, creates a Jira tracking task, and alerts the security 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: "[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://twilio.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://twilio.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 intent classification accuracy metrics for Twilio Autopilot bots.

naftiko: "0.5"
info:
  label: "Twilio Autopilot Intent Accuracy"
  description: "Returns intent classification accuracy metrics for Twilio Autopilot bots."
  tags:
    - communications
    - twilio
    - ai
capability:
  exposes:
    - type: mcp
      namespace: twilio_autopilot_int
      port: 8080
      tools:
        - name: query-data
          description: "Returns intent classification accuracy metrics for Twilio Autopilot bots."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When new training data is available, triggers model retraining, creates a Jira deployment task, and notifies the AI team.

naftiko: "0.5"
info:
  label: "Twilio Autopilot Training Pipeline"
  description: "When new training data is available, triggers model retraining, creates a Jira deployment task, and notifies the AI team."
  tags:
    - communications
    - jira
    - slack
    - ai
    - ml
capability:
  exposes:
    - type: mcp
      namespace: twilio_autopilot_tra
      port: 8080
      tools:
        - name: handle-event
          description: "When new training data is available, triggers model retraining, creates a Jira deployment task, and notifies the AI 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 customer enrolls in Branded Calling, provisions the service, updates Salesforce, and notifies the product team.

naftiko: "0.5"
info:
  label: "Twilio Branded Calling Enrollment Workflow"
  description: "When a customer enrolls in Branded Calling, provisions the service, updates Salesforce, and notifies the product team."
  tags:
    - communications
    - salesforce
    - jira
    - slack
    - voice
capability:
  exposes:
    - type: mcp
      namespace: twilio_branded_calli
      port: 8080
      tools:
        - name: handle-event
          description: "When a customer enrolls in Branded Calling, provisions the service, updates Salesforce, 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 capacity forecasts from Snowflake, creates Jira planning epics, and posts projections to Slack.

naftiko: "0.5"
info:
  label: "Twilio Capacity Planning Forecast"
  description: "Generates capacity forecasts from Snowflake, creates Jira planning epics, and posts projections to Slack."
  tags:
    - infrastructure
    - snowflake
    - jira
    - slack
    - capacity
capability:
  exposes:
    - type: mcp
      namespace: twilio_capacity_plan
      port: 8080
      tools:
        - name: handle-event
          description: "Generates capacity forecasts from Snowflake, creates Jira planning epics, 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: "[infrastructure] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "infrastructure-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 daily carrier network health reports from Snowflake, creates Jira tickets for degraded carriers, and posts to Slack.

naftiko: "0.5"
info:
  label: "Twilio Carrier Network Health Digest"
  description: "Generates daily carrier network health reports from Snowflake, creates Jira tickets for degraded carriers, and posts to Slack."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - carriers
capability:
  exposes:
    - type: mcp
      namespace: twilio_carrier_netwo
      port: 8080
      tools:
        - name: handle-event
          description: "Generates daily carrier network health reports from Snowflake, creates Jira tickets for degraded carriers, 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 compliance hold is approved for release, updates account status, creates a ServiceNow audit record, and notifies compliance.

naftiko: "0.5"
info:
  label: "Twilio Compliance Hold Release Workflow"
  description: "When a compliance hold is approved for release, updates account status, creates a ServiceNow audit record, and notifies compliance."
  tags:
    - compliance
    - servicenow
    - slack
    - trust-safety
capability:
  exposes:
    - type: mcp
      namespace: twilio_compliance_ho
      port: 8080
      tools:
        - name: handle-event
          description: "When a compliance hold is approved for release, updates account status, creates a ServiceNow audit record, and notifies compliance."
          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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 messaging content template is submitted, validates compliance, creates a Jira review task, and notifies the trust team.

naftiko: "0.5"
info:
  label: "Twilio Content Template Approval Workflow"
  description: "When a messaging content template is submitted, validates compliance, creates a Jira review task, and notifies the trust team."
  tags:
    - compliance
    - jira
    - slack
    - messaging
    - content
capability:
  exposes:
    - type: mcp
      namespace: twilio_content_templ
      port: 8080
      tools:
        - name: handle-event
          description: "When a messaging content template is submitted, validates compliance, creates a Jira review task, and notifies 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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for Conversations API usage metrics by customer.

naftiko: "0.5"
info:
  label: "Twilio Conversations Metrics Query"
  description: "Queries Snowflake for Conversations API usage metrics by customer."
  tags:
    - communications
    - snowflake
    - conversations
capability:
  exposes:
    - type: mcp
      namespace: twilio_conversations
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for Conversations API usage metrics by customer."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Analyzes customer usage patterns from Snowflake, generates cost optimization recommendations, and shares with the account team.

naftiko: "0.5"
info:
  label: "Twilio Cost Optimization Recommendation"
  description: "Analyzes customer usage patterns from Snowflake, generates cost optimization recommendations, and shares with the account team."
  tags:
    - billing
    - snowflake
    - salesforce
    - slack
    - optimization
capability:
  exposes:
    - type: mcp
      namespace: twilio_cost_optimiza
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes customer usage patterns from Snowflake, generates cost optimization recommendations, and shares with the account 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: "[billing] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "billing-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 usage patterns indicate churn risk, updates Salesforce health score, creates a follow-up task, and alerts the CSM via Slack.

naftiko: "0.5"
info:
  label: "Twilio Customer Churn Risk Alert"
  description: "When usage patterns indicate churn risk, updates Salesforce health score, creates a follow-up task, and alerts the CSM via Slack."
  tags:
    - crm
    - salesforce
    - snowflake
    - slack
    - customer-success
capability:
  exposes:
    - type: mcp
      namespace: twilio_customer_chur
      port: 8080
      tools:
        - name: handle-event
          description: "When usage patterns indicate churn risk, updates Salesforce health score, creates a follow-up task, and alerts the CSM via 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: "[crm] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "crm-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Syncs customer health scores from Snowflake to Salesforce, creates follow-up tasks for at-risk accounts, and notifies CSMs.

naftiko: "0.5"
info:
  label: "Twilio Customer Health Score Sync"
  description: "Syncs customer health scores from Snowflake to Salesforce, creates follow-up tasks for at-risk accounts, and notifies CSMs."
  tags:
    - crm
    - snowflake
    - salesforce
    - slack
    - customer-success
capability:
  exposes:
    - type: mcp
      namespace: twilio_customer_heal
      port: 8080
      tools:
        - name: handle-event
          description: "Syncs customer health scores from Snowflake to Salesforce, creates follow-up tasks for at-risk accounts, and notifies CSMs."
          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: "[crm] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "crm-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Orchestrates customer platform migrations by updating Salesforce, creating Jira tasks, and notifying account teams via Slack.

naftiko: "0.5"
info:
  label: "Twilio Customer Migration Orchestrator"
  description: "Orchestrates customer platform migrations by updating Salesforce, creating Jira tasks, and notifying account teams via Slack."
  tags:
    - crm
    - salesforce
    - jira
    - slack
    - migrations
capability:
  exposes:
    - type: mcp
      namespace: twilio_customer_migr
      port: 8080
      tools:
        - name: handle-event
          description: "Orchestrates customer platform migrations by updating Salesforce, creating Jira tasks, and notifying account teams via 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: "[crm] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "crm-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 developer community sentiment drops, queries analytics from Snowflake, creates a Jira task, and alerts the DevRel team.

naftiko: "0.5"
info:
  label: "Twilio Developer Community Alert"
  description: "When developer community sentiment drops, queries analytics from Snowflake, creates a Jira task, and alerts the DevRel team."
  tags:
    - developer-experience
    - snowflake
    - jira
    - slack
    - community
capability:
  exposes:
    - type: mcp
      namespace: twilio_developer_com
      port: 8080
      tools:
        - name: handle-event
          description: "When developer community sentiment drops, queries analytics from Snowflake, creates a Jira task, and alerts the DevRel 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: "[developer-experience] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "developer-experience-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 new developer signs up, provisions account resources, sends welcome emails via SendGrid, and logs in Snowflake.

naftiko: "0.5"
info:
  label: "Twilio Developer Onboarding Orchestrator"
  description: "When a new developer signs up, provisions account resources, sends welcome emails via SendGrid, and logs in Snowflake."
  tags:
    - developer-experience
    - snowflake
    - slack
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: twilio_developer_onb
      port: 8080
      tools:
        - name: handle-event
          description: "When a new developer signs up, provisions account resources, sends welcome emails via SendGrid, and logs in Snowflake."
          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: "[developer-experience] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "developer-experience-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 edge location performance from Datadog, creates Jira tickets for degraded locations, and alerts infrastructure.

naftiko: "0.5"
info:
  label: "Twilio Edge Location Performance Monitor"
  description: "Monitors edge location performance from Datadog, creates Jira tickets for degraded locations, and alerts infrastructure."
  tags:
    - infrastructure
    - datadog
    - jira
    - slack
    - edge
capability:
  exposes:
    - type: mcp
      namespace: twilio_edge_location
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors edge location performance from Datadog, creates Jira tickets for degraded locations, and alerts infrastructure."
          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: "[infrastructure] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "infrastructure-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 SIP trunk utilization and call quality metrics from Snowflake.

naftiko: "0.5"
info:
  label: "Twilio Elastic SIP Trunking Status"
  description: "Returns SIP trunk utilization and call quality metrics from Snowflake."
  tags:
    - communications
    - snowflake
    - sip
capability:
  exposes:
    - type: mcp
      namespace: twilio_elastic_sip_t
      port: 8080
      tools:
        - name: query-data
          description: "Returns SIP trunk utilization and call quality metrics 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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When an enterprise customer support ticket breaches SLA, escalates via PagerDuty, updates Salesforce, and notifies the TAM.

naftiko: "0.5"
info:
  label: "Twilio Enterprise Support Escalation"
  description: "When an enterprise customer support ticket breaches SLA, escalates via PagerDuty, updates Salesforce, and notifies the TAM."
  tags:
    - crm
    - salesforce
    - pagerduty
    - slack
    - support
capability:
  exposes:
    - type: mcp
      namespace: twilio_enterprise_su
      port: 8080
      tools:
        - name: handle-event
          description: "When an enterprise customer support ticket breaches SLA, escalates via PagerDuty, updates Salesforce, and notifies the TAM."
          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: "[crm] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "crm-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 current agent availability and queue statistics for Twilio Flex.

naftiko: "0.5"
info:
  label: "Twilio Flex Agent Status Lookup"
  description: "Returns current agent availability and queue statistics for Twilio Flex."
  tags:
    - communications
    - twilio
    - contact-center
capability:
  exposes:
    - type: mcp
      namespace: twilio_flex_agent_st
      port: 8080
      tools:
        - name: query-data
          description: "Returns current agent availability and queue statistics for Twilio Flex."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a Flex plugin is deployed, logs in ServiceNow, creates a Jira release note, and notifies the CX engineering team.

naftiko: "0.5"
info:
  label: "Twilio Flex Plugin Deployment Tracker"
  description: "When a Flex plugin is deployed, logs in ServiceNow, creates a Jira release note, and notifies the CX engineering team."
  tags:
    - communications
    - servicenow
    - jira
    - slack
    - contact-center
capability:
  exposes:
    - type: mcp
      namespace: twilio_flex_plugin_d
      port: 8080
      tools:
        - name: handle-event
          description: "When a Flex plugin is deployed, logs in ServiceNow, creates a Jira release note, and notifies the CX engineering 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 Flex contact center queues exceed capacity, adjusts routing, creates a Jira ticket, and alerts the CX team via Slack.

naftiko: "0.5"
info:
  label: "Twilio Flex Queue Overflow Handler"
  description: "When Flex contact center queues exceed capacity, adjusts routing, creates a Jira ticket, and alerts the CX team via Slack."
  tags:
    - communications
    - jira
    - slack
    - contact-center
capability:
  exposes:
    - type: mcp
      namespace: twilio_flex_queue_ov
      port: 8080
      tools:
        - name: handle-event
          description: "When Flex contact center queues exceed capacity, adjusts routing, creates a Jira ticket, and alerts the CX team via 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 a global infrastructure health digest from Datadog, creates Jira tickets for issues, and posts to Slack.

naftiko: "0.5"
info:
  label: "Twilio Global Infrastructure Status Digest"
  description: "Generates a global infrastructure health digest from Datadog, creates Jira tickets for issues, and posts to Slack."
  tags:
    - infrastructure
    - datadog
    - jira
    - slack
    - global
capability:
  exposes:
    - type: mcp
      namespace: twilio_global_infras
      port: 8080
      tools:
        - name: handle-event
          description: "Generates a global infrastructure health digest from Datadog, creates Jira tickets 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: "[infrastructure] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "infrastructure-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Assesses carrier readiness for new markets from Snowflake, creates Jira planning tasks, and notifies the expansion team.

naftiko: "0.5"
info:
  label: "Twilio International Expansion Readiness"
  description: "Assesses carrier readiness for new markets from Snowflake, creates Jira planning tasks, and notifies the expansion team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - international
capability:
  exposes:
    - type: mcp
      namespace: twilio_international
      port: 8080
      tools:
        - name: handle-event
          description: "Assesses carrier readiness for new markets from Snowflake, creates Jira planning tasks, and notifies the expansion 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Assists customers migrating between messaging channels, updates Salesforce records, creates Jira tasks, and posts progress.

naftiko: "0.5"
info:
  label: "Twilio Messaging Channel Migration Assistant"
  description: "Assists customers migrating between messaging channels, updates Salesforce records, creates Jira tasks, and posts progress."
  tags:
    - communications
    - salesforce
    - jira
    - slack
    - migrations
capability:
  exposes:
    - type: mcp
      namespace: twilio_messaging_cha
      port: 8080
      tools:
        - name: handle-event
          description: "Assists customers migrating between messaging channels, updates Salesforce records, creates Jira tasks, and posts progress."
          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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 messaging compliance rates from Snowflake, creates Jira tasks for violations, and notifies the trust and safety team.

naftiko: "0.5"
info:
  label: "Twilio Messaging Compliance Checker"
  description: "Checks messaging compliance rates from Snowflake, creates Jira tasks for violations, and notifies the trust and safety team."
  tags:
    - compliance
    - snowflake
    - jira
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: twilio_messaging_com
      port: 8080
      tools:
        - name: handle-event
          description: "Checks messaging compliance rates from Snowflake, creates Jira tasks for violations, and notifies the trust and safety 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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 Messaging Insights detects delivery anomalies, queries Snowflake for details, creates a Jira ticket, and alerts ops.

naftiko: "0.5"
info:
  label: "Twilio Messaging Insights Anomaly Handler"
  description: "When Messaging Insights detects delivery anomalies, queries Snowflake for details, creates a Jira ticket, and alerts ops."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: twilio_messaging_ins
      port: 8080
      tools:
        - name: handle-event
          description: "When Messaging Insights detects delivery anomalies, queries Snowflake for details, creates a Jira ticket, and alerts ops."
          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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Orchestrates multi-channel campaigns across SMS, email, and WhatsApp, logs results in Snowflake, and reports to Slack.

naftiko: "0.5"
info:
  label: "Twilio Multi-Channel Campaign Orchestrator"
  description: "Orchestrates multi-channel campaigns across SMS, email, and WhatsApp, logs results in Snowflake, and reports to Slack."
  tags:
    - communications
    - snowflake
    - slack
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: twilio_multi_channel
      port: 8080
      tools:
        - name: handle-event
          description: "Orchestrates multi-channel campaigns across SMS, email, and WhatsApp, logs results in Snowflake, and reports 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 phone number pool utilization from Snowflake, creates Jira procurement tasks for low inventory, and alerts the numbers team.

naftiko: "0.5"
info:
  label: "Twilio Number Pool Capacity Manager"
  description: "Monitors phone number pool utilization from Snowflake, creates Jira procurement tasks for low inventory, and alerts the numbers team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - phone-numbers
capability:
  exposes:
    - type: mcp
      namespace: twilio_number_pool_c
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors phone number pool utilization from Snowflake, creates Jira procurement tasks for low inventory, and alerts the numbers 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 number port request is submitted, validates eligibility, creates a Jira task, and notifies the provisioning team via Slack.

naftiko: "0.5"
info:
  label: "Twilio Number Porting Workflow"
  description: "When a number port request is submitted, validates eligibility, creates a Jira task, and notifies the provisioning team via Slack."
  tags:
    - communications
    - jira
    - slack
    - phone-numbers
capability:
  exposes:
    - type: mcp
      namespace: twilio_number_portin
      port: 8080
      tools:
        - name: handle-event
          description: "When a number port request is submitted, validates eligibility, creates a Jira task, and notifies the provisioning team via 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 partner integration health from Datadog, creates Jira tickets for degraded integrations, and alerts the partnerships team.

naftiko: "0.5"
info:
  label: "Twilio Partner Integration Health Monitor"
  description: "Monitors partner integration health from Datadog, creates Jira tickets for degraded integrations, and alerts the partnerships team."
  tags:
    - integrations
    - datadog
    - jira
    - slack
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: twilio_partner_integ
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors partner integration health from Datadog, creates Jira tickets for degraded integrations, and alerts 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: "[integrations] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "integrations-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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

Looks up phone number capabilities and carrier information via Twilio Lookup API.

naftiko: "0.5"
info:
  label: "Twilio Phone Number Lookup"
  description: "Looks up phone number capabilities and carrier information via Twilio Lookup API."
  tags:
    - communications
    - twilio
    - phone-numbers
capability:
  exposes:
    - type: mcp
      namespace: twilio_phone_number_
      port: 8080
      tools:
        - name: query-data
          description: "Looks up phone number capabilities and carrier information via Twilio Lookup API."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a platform incident is detected, creates a PagerDuty incident, opens a Slack incident channel, and creates a ServiceNow record.

naftiko: "0.5"
info:
  label: "Twilio Platform Incident Response"
  description: "When a platform incident is detected, creates a PagerDuty incident, opens a Slack incident channel, and creates a ServiceNow record."
  tags:
    - operations
    - pagerduty
    - slack
    - servicenow
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: twilio_platform_inci
      port: 8080
      tools:
        - name: handle-event
          description: "When a platform incident is detected, creates a PagerDuty incident, opens a Slack incident channel, and creates a ServiceNow record."
          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: "[operations] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "operations-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 customer migration from Chat to Conversations, updates Salesforce records, creates Jira tasks, and posts progress to Slack.

naftiko: "0.5"
info:
  label: "Twilio Programmable Chat Migration Tracker"
  description: "Tracks customer migration from Chat to Conversations, updates Salesforce records, creates Jira tasks, and posts progress to Slack."
  tags:
    - communications
    - salesforce
    - jira
    - slack
    - migrations
capability:
  exposes:
    - type: mcp
      namespace: twilio_programmable_
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks customer migration from Chat to Conversations, updates Salesforce records, creates Jira tasks, and posts progress 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Returns the delivery status and error codes for a Twilio message SID.

naftiko: "0.5"
info:
  label: "Twilio Programmable Messaging Status"
  description: "Returns the delivery status and error codes for a Twilio message SID."
  tags:
    - communications
    - twilio
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: twilio_programmable_
      port: 8080
      tools:
        - name: query-data
          description: "Returns the delivery status and error codes for a Twilio message SID."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Generates a weekly regulatory compliance digest from Snowflake, creates Jira tasks for new requirements, and posts to Slack.

naftiko: "0.5"
info:
  label: "Twilio Regulatory Compliance Digest"
  description: "Generates a weekly regulatory compliance digest from Snowflake, creates Jira tasks for new requirements, and posts to Slack."
  tags:
    - compliance
    - snowflake
    - jira
    - slack
    - regulatory
capability:
  exposes:
    - type: mcp
      namespace: twilio_regulatory_co
      port: 8080
      tools:
        - name: handle-event
          description: "Generates a weekly regulatory compliance digest from Snowflake, creates Jira tasks for new requirements, 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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for revenue data, updates Salesforce forecasts, creates Jira finance tasks, and posts to Slack.

naftiko: "0.5"
info:
  label: "Twilio Revenue Recognition Workflow"
  description: "Queries Snowflake for revenue data, updates Salesforce forecasts, creates Jira finance tasks, and posts to Slack."
  tags:
    - finance
    - snowflake
    - salesforce
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: twilio_revenue_recog
      port: 8080
      tools:
        - name: handle-event
          description: "Queries Snowflake for revenue data, updates Salesforce forecasts, creates Jira finance 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: "[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://twilio.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://twilio.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 SDK version adoption from Snowflake, creates Jira tasks for deprecated versions, and notifies the SDK team via Slack.

naftiko: "0.5"
info:
  label: "Twilio SDK Adoption Tracker"
  description: "Tracks SDK version adoption from Snowflake, creates Jira tasks for deprecated versions, and notifies the SDK team via Slack."
  tags:
    - developer-experience
    - snowflake
    - jira
    - slack
    - sdk
capability:
  exposes:
    - type: mcp
      namespace: twilio_sdk_adoption_
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks SDK version adoption from Snowflake, creates Jira tasks for deprecated versions, and notifies the SDK team via 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: "[developer-experience] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "developer-experience-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 security audit compliance status from Snowflake, creates Jira remediation tasks, and notifies the security team.

naftiko: "0.5"
info:
  label: "Twilio Security Audit Compliance Tracker"
  description: "Tracks security audit compliance status from Snowflake, creates Jira remediation tasks, and notifies the security team."
  tags:
    - security
    - snowflake
    - jira
    - slack
    - audit
capability:
  exposes:
    - type: mcp
      namespace: twilio_security_audi
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks security audit compliance status from Snowflake, creates Jira remediation tasks, and notifies the security 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: "[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://twilio.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://twilio.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 Segment data pipeline health from Datadog, creates Jira tickets for failures, and alerts the data team via Slack.

naftiko: "0.5"
info:
  label: "Twilio Segment Data Pipeline Monitor"
  description: "Monitors Segment data pipeline health from Datadog, creates Jira tickets for failures, and alerts the data team via Slack."
  tags:
    - analytics
    - datadog
    - jira
    - slack
    - customer-data
capability:
  exposes:
    - type: mcp
      namespace: twilio_segment_data_
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors Segment data pipeline health from Datadog, creates Jira tickets for failures, and alerts the data team via 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://twilio.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://twilio.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 a unified customer profile from Twilio Segment by user ID.

naftiko: "0.5"
info:
  label: "Twilio Segment Profile Lookup"
  description: "Returns a unified customer profile from Twilio Segment by user ID."
  tags:
    - analytics
    - twilio
    - customer-data
capability:
  exposes:
    - type: mcp
      namespace: twilio_segment_profi
      port: 8080
      tools:
        - name: query-data
          description: "Returns a unified customer profile from Twilio Segment by user ID."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Monitors Segment warehouse sync jobs from Snowflake, creates Jira tickets for sync failures, and alerts the data team.

naftiko: "0.5"
info:
  label: "Twilio Segment Warehouse Sync Monitor"
  description: "Monitors Segment warehouse sync jobs from Snowflake, creates Jira tickets for sync failures, and alerts the data team."
  tags:
    - analytics
    - snowflake
    - jira
    - slack
    - customer-data
capability:
  exposes:
    - type: mcp
      namespace: twilio_segment_wareh
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors Segment warehouse sync jobs from Snowflake, creates Jira tickets for sync failures, and alerts the data 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://twilio.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://twilio.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 SendGrid bounce rates spike, queries patterns from Snowflake, creates a Jira investigation, and alerts the email team.

naftiko: "0.5"
info:
  label: "Twilio SendGrid Bounce Rate Handler"
  description: "When SendGrid bounce rates spike, queries patterns from Snowflake, creates a Jira investigation, and alerts the email team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - email
capability:
  exposes:
    - type: mcp
      namespace: twilio_sendgrid_boun
      port: 8080
      tools:
        - name: handle-event
          description: "When SendGrid bounce rates spike, queries patterns from Snowflake, creates a Jira investigation, and alerts the email 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 deliverability metrics from Snowflake, creates Jira optimization tasks, and posts recommendations to Slack.

naftiko: "0.5"
info:
  label: "Twilio SendGrid Deliverability Optimization"
  description: "Analyzes deliverability metrics from Snowflake, creates Jira optimization tasks, and posts recommendations to Slack."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - email
capability:
  exposes:
    - type: mcp
      namespace: twilio_sendgrid_deli
      port: 8080
      tools:
        - name: handle-event
          description: "Analyzes deliverability metrics from Snowflake, creates Jira optimization tasks, and posts recommendations 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 email delivery rates, bounce rates, and open rates from SendGrid.

naftiko: "0.5"
info:
  label: "Twilio SendGrid Delivery Metrics"
  description: "Returns email delivery rates, bounce rates, and open rates from SendGrid."
  tags:
    - communications
    - twilio
    - email
capability:
  exposes:
    - type: mcp
      namespace: twilio_sendgrid_deli
      port: 8080
      tools:
        - name: query-data
          description: "Returns email delivery rates, bounce rates, and open rates from SendGrid."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Monitors SendGrid IP reputation scores from Snowflake, creates Jira tasks for degraded IPs, and alerts the email team.

naftiko: "0.5"
info:
  label: "Twilio SendGrid IP Reputation Monitor"
  description: "Monitors SendGrid IP reputation scores from Snowflake, creates Jira tasks for degraded IPs, and alerts the email team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - email
capability:
  exposes:
    - type: mcp
      namespace: twilio_sendgrid_ip_r
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors SendGrid IP reputation scores from Snowflake, creates Jira tasks for degraded IPs, and alerts the email 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 SIP trunk utilization exceeds threshold, queries Snowflake for trends, creates a Jira capacity task, and alerts the voice team.

naftiko: "0.5"
info:
  label: "Twilio SIP Trunk Capacity Alert"
  description: "When SIP trunk utilization exceeds threshold, queries Snowflake for trends, creates a Jira capacity task, and alerts the voice team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - sip
capability:
  exposes:
    - type: mcp
      namespace: twilio_sip_trunk_cap
      port: 8080
      tools:
        - name: handle-event
          description: "When SIP trunk utilization exceeds threshold, queries Snowflake for trends, creates a Jira capacity task, and alerts the voice 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 SMS delivery rates drop below threshold, queries carrier data, creates a Jira ticket, and alerts the messaging team via Slack.

naftiko: "0.5"
info:
  label: "Twilio SMS Delivery Failure Handler"
  description: "When SMS delivery rates drop below threshold, queries carrier data, creates a Jira ticket, and alerts the messaging team via Slack."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - sms
capability:
  exposes:
    - type: mcp
      namespace: twilio_sms_delivery_
      port: 8080
      tools:
        - name: handle-event
          description: "When SMS delivery rates drop below threshold, queries carrier data, creates a Jira ticket, and alerts the messaging team via 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for SMS delivery rates by country and carrier.

naftiko: "0.5"
info:
  label: "Twilio SMS Delivery Rate Query"
  description: "Queries Snowflake for SMS delivery rates by country and carrier."
  tags:
    - communications
    - snowflake
    - sms
capability:
  exposes:
    - type: mcp
      namespace: twilio_sms_delivery_
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for SMS delivery rates by country and carrier."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a Studio flow execution error rate spikes, queries Snowflake for patterns, creates a Jira bug, and alerts the low-code team.

naftiko: "0.5"
info:
  label: "Twilio Studio Flow Error Handler"
  description: "When a Studio flow execution error rate spikes, queries Snowflake for patterns, creates a Jira bug, and alerts the low-code team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - studio
capability:
  exposes:
    - type: mcp
      namespace: twilio_studio_flow_e
      port: 8080
      tools:
        - name: handle-event
          description: "When a Studio flow execution error rate spikes, queries Snowflake for patterns, creates a Jira bug, and alerts the low-code 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 connectivity status and data usage for Twilio Super SIM fleet.

naftiko: "0.5"
info:
  label: "Twilio Super SIM Connectivity Check"
  description: "Returns connectivity status and data usage for Twilio Super SIM fleet."
  tags:
    - communications
    - twilio
    - iot
capability:
  exposes:
    - type: mcp
      namespace: twilio_super_sim_con
      port: 8080
      tools:
        - name: query-data
          description: "Returns connectivity status and data usage for Twilio Super SIM fleet."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Monitors IoT SIM fleet health from Snowflake, creates Jira tickets for connectivity issues, and alerts the IoT team.

naftiko: "0.5"
info:
  label: "Twilio Super SIM Fleet Health Monitor"
  description: "Monitors IoT SIM fleet health from Snowflake, creates Jira tickets for connectivity issues, and alerts the IoT team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - iot
capability:
  exposes:
    - type: mcp
      namespace: twilio_super_sim_fle
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors IoT SIM fleet health from Snowflake, creates Jira tickets for connectivity issues, and alerts the IoT 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 toll-free verification status from Snowflake, creates Jira tasks for rejections, and notifies the compliance team.

naftiko: "0.5"
info:
  label: "Twilio Toll-Free Verification Tracker"
  description: "Tracks toll-free verification status from Snowflake, creates Jira tasks for rejections, and notifies the compliance team."
  tags:
    - compliance
    - snowflake
    - jira
    - slack
    - phone-numbers
capability:
  exposes:
    - type: mcp
      namespace: twilio_toll_free_ver
      port: 8080
      tools:
        - name: handle-event
          description: "Tracks toll-free verification status from Snowflake, creates Jira tasks for rejections, and notifies the compliance 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: "[compliance] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "compliance-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 account usage spikes abnormally, queries patterns from Snowflake, creates a Jira alert, and notifies the account team via Slack.

naftiko: "0.5"
info:
  label: "Twilio Usage Anomaly Detection"
  description: "When account usage spikes abnormally, queries patterns from Snowflake, creates a Jira alert, and notifies the account team via Slack."
  tags:
    - billing
    - snowflake
    - jira
    - slack
    - fraud
capability:
  exposes:
    - type: mcp
      namespace: twilio_usage_anomaly
      port: 8080
      tools:
        - name: handle-event
          description: "When account usage spikes abnormally, queries patterns from Snowflake, creates a Jira alert, and notifies the account team via 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: "[billing] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "billing-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for Verify API fraud attempt rates and success metrics.

naftiko: "0.5"
info:
  label: "Twilio Verify Fraud Metrics Query"
  description: "Queries Snowflake for Verify API fraud attempt rates and success metrics."
  tags:
    - security
    - snowflake
    - verification
capability:
  exposes:
    - type: mcp
      namespace: twilio_verify_fraud_
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for Verify API fraud attempt rates and success 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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When Verify fraud attempts spike, queries patterns from Snowflake, creates a ServiceNow incident, and pages the security team.

naftiko: "0.5"
info:
  label: "Twilio Verify Fraud Spike Handler"
  description: "When Verify fraud attempts spike, queries patterns from Snowflake, creates a ServiceNow incident, and pages the security team."
  tags:
    - security
    - snowflake
    - servicenow
    - pagerduty
    - fraud
capability:
  exposes:
    - type: mcp
      namespace: twilio_verify_fraud_
      port: 8080
      tools:
        - name: handle-event
          description: "When Verify fraud attempts spike, queries patterns from Snowflake, creates a ServiceNow incident, and pages the security 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: "[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://twilio.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://twilio.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 Snowflake for affected customers, creates a Jira ticket, and notifies the video team.

naftiko: "0.5"
info:
  label: "Twilio Video Quality Investigation"
  description: "When video quality metrics degrade, queries Snowflake for affected customers, creates a Jira ticket, and notifies the video team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - video
capability:
  exposes:
    - type: mcp
      namespace: twilio_video_quality
      port: 8080
      tools:
        - name: handle-event
          description: "When video quality metrics degrade, queries Snowflake for affected customers, creates a Jira ticket, and notifies the video 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for video room usage metrics including participant minutes.

naftiko: "0.5"
info:
  label: "Twilio Video Room Usage Query"
  description: "Queries Snowflake for video room usage metrics including participant minutes."
  tags:
    - communications
    - snowflake
    - video
capability:
  exposes:
    - type: mcp
      namespace: twilio_video_room_us
      port: 8080
      tools:
        - name: query-data
          description: "Queries Snowflake for video room usage metrics including participant minutes."
          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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Returns voice call quality metrics including MOS scores from Snowflake.

naftiko: "0.5"
info:
  label: "Twilio Voice Call Quality Check"
  description: "Returns voice call quality metrics including MOS scores from Snowflake."
  tags:
    - communications
    - snowflake
    - voice
capability:
  exposes:
    - type: mcp
      namespace: twilio_voice_call_qu
      port: 8080
      tools:
        - name: query-data
          description: "Returns voice call quality metrics including MOS scores 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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When voice call quality drops, queries Snowflake for affected regions, creates a PagerDuty incident, and notifies via Slack.

naftiko: "0.5"
info:
  label: "Twilio Voice Quality Degradation Alert"
  description: "When voice call quality drops, queries Snowflake for affected regions, creates a PagerDuty incident, and notifies via Slack."
  tags:
    - communications
    - snowflake
    - pagerduty
    - slack
    - voice
capability:
  exposes:
    - type: mcp
      namespace: twilio_voice_quality
      port: 8080
      tools:
        - name: handle-event
          description: "When voice call quality drops, queries Snowflake for affected regions, creates a PagerDuty incident, and notifies via 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 webhook delivery failures spike, queries Snowflake for affected customers, creates a Jira ticket, and notifies support.

naftiko: "0.5"
info:
  label: "Twilio Webhook Failure Investigation"
  description: "When webhook delivery failures spike, queries Snowflake for affected customers, creates a Jira ticket, and notifies support."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - webhooks
capability:
  exposes:
    - type: mcp
      namespace: twilio_webhook_failu
      port: 8080
      tools:
        - name: handle-event
          description: "When webhook delivery failures spike, queries Snowflake for affected customers, creates a Jira ticket, and notifies support."
          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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 WhatsApp Business API health from Snowflake, creates Jira tickets for delivery issues, and alerts the messaging team.

naftiko: "0.5"
info:
  label: "Twilio WhatsApp Business API Health"
  description: "Monitors WhatsApp Business API health from Snowflake, creates Jira tickets for delivery issues, and alerts the messaging team."
  tags:
    - communications
    - snowflake
    - jira
    - slack
    - whatsapp
capability:
  exposes:
    - type: mcp
      namespace: twilio_whatsapp_busi
      port: 8080
      tools:
        - name: handle-event
          description: "Monitors WhatsApp Business API health from Snowflake, creates Jira tickets for delivery issues, and alerts the messaging 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: "[communications] {{event_id}} — {{context}}"
            - name: notify-team
              type: call
              call: "slack-api.post-message"
              with:
                channel: "communications-ops"
                text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-api
      baseUri: "https://twilio.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://twilio.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 current engineering headcount and open positions from Workday.

naftiko: "0.5"
info:
  label: "Workday Engineering Headcount Lookup"
  description: "Returns current engineering headcount and open positions from Workday."
  tags:
    - hr
    - workday
    - workforce
capability:
  exposes:
    - type: mcp
      namespace: workday_engineering_
      port: 8080
      tools:
        - name: query-data
          description: "Returns current engineering 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://twilio.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Initiates the biweekly payroll period close in Workday, validates completion status, and notifies the payroll team via Slack.

naftiko: "0.5"
info:
  label: "Workday Payroll Period Close"
  description: "Initiates the biweekly payroll period close in Workday, validates completion status, and notifies the payroll team via Slack."
  tags:
    - hr
    - payroll
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: payroll-ops
      port: 8080
      tools:
        - name: close-payroll-period
          description: "Given a payroll period ID, trigger the period close in Workday, verify completion status, and notify the payroll team in Slack with the close summary."
          inputParameters:
            - name: period_id
              in: body
              type: string
              description: "The Workday payroll period ID to close."
            - name: period_name
              in: body
              type: string
              description: "Human-readable name for the payroll period (e.g., 2026-W12)."
            - name: payroll_channel
              in: body
              type: string
              description: "Slack channel for the payroll team."
          steps:
            - name: close-period
              type: call
              call: "workday-payroll.close-payroll-period"
              with:
                periodId: "{{period_id}}"
            - name: notify-payroll-team
              type: call
              call: "slack-payroll.post-message"
              with:
                channel: "{{payroll_channel}}"
                text: "Payroll period {{period_name}} closed. Status: {{close-period.status}}. Employees processed: {{close-period.employee_count}}. Total gross: ${{close-period.total_gross}}"
  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: payroll-periods
          path: "/payrollPeriods/{{periodId}}/close"
          inputParameters:
            - name: periodId
              in: path
          operations:
            - name: close-payroll-period
              method: POST
    - type: http
      namespace: slack-payroll
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls customer satisfaction scores from Zendesk for a given week and posts a CSAT summary by team and agent to the support leadership Slack channel.

naftiko: "0.5"
info:
  label: "Zendesk Ticket CSAT Digest"
  description: "Pulls customer satisfaction scores from Zendesk for a given week and posts a CSAT summary by team and agent to the support leadership Slack channel."
  tags:
    - customer-support
    - csat
    - zendesk
    - slack
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: support-reporting
      port: 8080
      tools:
        - name: digest-csat-scores
          description: "Given a Zendesk satisfaction reporting period, retrieve CSAT scores by team and post a weekly satisfaction summary to the support leadership Slack channel."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date of the CSAT reporting period in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date of the CSAT reporting period in YYYY-MM-DD format."
            - name: support_leadership_channel
              in: body
              type: string
              description: "Slack channel for support leadership digest."
          steps:
            - name: get-satisfaction-ratings
              type: call
              call: "zendesk-csat.get-satisfaction-ratings"
              with:
                start_time: "{{start_date}}"
                end_time: "{{end_date}}"
            - name: post-csat-digest
              type: call
              call: "slack-csat.post-message"
              with:
                channel: "{{support_leadership_channel}}"
                text: "CSAT Report ({{start_date}} to {{end_date}}): Overall score: {{get-satisfaction-ratings.score}}% | Good: {{get-satisfaction-ratings.good_count}} | Bad: {{get-satisfaction-ratings.bad_count}} | Total: {{get-satisfaction-ratings.total}}"
  consumes:
    - type: http
      namespace: zendesk-csat
      baseUri: "https://twilio.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_api_token"
      resources:
        - name: satisfaction-ratings
          path: "/satisfaction_ratings"
          inputParameters:
            - name: start_time
              in: query
            - name: end_time
              in: query
          operations:
            - name: get-satisfaction-ratings
              method: GET
    - type: http
      namespace: slack-csat
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST