T-Mobile Capabilities

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

Sort
Expand

Retrieves a 5G site deployment record from Salesforce, pulls infrastructure state from Terraform Cloud, and posts a status update to the deployment Teams channel.

naftiko: "0.5"
info:
  label: "5G Deployment Tracker"
  description: "Retrieves a 5G site deployment record from Salesforce, pulls infrastructure state from Terraform Cloud, and posts a status update to the deployment Teams channel."
  tags:
    - 5g
    - deployment
    - salesforce
    - terraform
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: 5g-deployment
      port: 8080
      tools:
        - name: track-5g-deployment
          description: "Given a 5G deployment project ID, fetch the Salesforce project record, check Terraform workspace state, and post a combined status update to Teams."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The Salesforce 5G deployment project ID."
          steps:
            - name: get-project
              type: call
              call: "salesforce.get-deployment-project"
              with:
                project_id: "{{project_id}}"
            - name: get-infra-state
              type: call
              call: "terraform.get-workspace"
              with:
                workspace_name: "{{get-project.Terraform_Workspace__c}}"
            - name: post-status
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "5g-deployments"
                channel_id: "status-updates"
                text: "5G Deployment Update — {{get-project.Name}}: Market: {{get-project.Market__c}}, Phase: {{get-project.Phase__c}}, Infra Resources: {{get-infra-state.resource_count}}, Last Apply: {{get-infra-state.last_apply_status}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: deployment-projects
          path: "/sobjects/Deployment_Project__c/{{project_id}}"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-deployment-project
              method: GET
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_cloud_token"
      inputParameters:
        - name: Content-Type
          in: header
          value: "application/vnd.api+json"
      resources:
        - name: workspaces
          path: "/organizations/t-mobile/workspaces/{{workspace_name}}"
          inputParameters:
            - name: workspace_name
              in: path
          operations:
            - name: get-workspace
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

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

naftiko: "0.5"
info:
  label: "Annual Compliance Certification Orchestrator"
  description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
  tags:
    - compliance
    - hr
    - legal
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-annual-compliance-certification-orchestrator
          description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.

naftiko: "0.5"
info:
  label: "API Lifecycle Management Orchestrator"
  description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
  tags:
    - engineering
    - api
    - operations
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-api-lifecycle-management-orchestrator
          description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a New Relic APM application summary, correlates with Dynatrace service data for the same application, and posts a combined health report to the SRE Teams channel.

naftiko: "0.5"
info:
  label: "Application Performance Cross-Check"
  description: "Retrieves a New Relic APM application summary, correlates with Dynatrace service data for the same application, and posts a combined health report to the SRE Teams channel."
  tags:
    - monitoring
    - new-relic
    - dynatrace
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: apm-crosscheck
      port: 8080
      tools:
        - name: cross-check-app-health
          description: "Pull application metrics from both New Relic and Dynatrace and post a correlated health summary to the SRE team."
          inputParameters:
            - name: app_name
              in: body
              type: string
              description: "The application name as registered in both APM platforms."
          steps:
            - name: get-newrelic-data
              type: call
              call: "newrelic.get-application"
              with:
                app_name: "{{app_name}}"
            - name: get-dynatrace-data
              type: call
              call: "dynatrace.get-service"
              with:
                service_name: "{{app_name}}"
            - name: post-report
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "sre-team"
                channel_id: "app-health"
                text: "App Health Cross-Check — {{app_name}}: New Relic: Response {{get-newrelic-data.response_time}}ms, Error rate {{get-newrelic-data.error_rate}}%, Throughput {{get-newrelic-data.throughput}} rpm. Dynatrace: Status {{get-dynatrace-data.health_status}}, Response {{get-dynatrace-data.response_time_ms}}ms, Failure {{get-dynatrace-data.failure_rate}}%."
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications.json?filter[name]={{app_name}}"
          inputParameters:
            - name: app_name
              in: query
          operations:
            - name: get-application
              method: GET
    - type: http
      namespace: dynatrace
      baseUri: "https://tmobile.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: entities
          path: "/entities?entitySelector=type(SERVICE),entityName({{service_name}})"
          inputParameters:
            - name: service_name
              in: query
          operations:
            - name: get-service
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves the status of an AWS EC2 instance by instance ID, returning state, instance type, and availability zone for T-Mobile cloud infrastructure.

naftiko: "0.5"
info:
  label: "AWS EC2 Instance Status"
  description: "Retrieves the status of an AWS EC2 instance by instance ID, returning state, instance type, and availability zone for T-Mobile cloud infrastructure."
  tags:
    - infrastructure
    - ec2
    - amazon-web-services
capability:
  exposes:
    - type: mcp
      namespace: aws-compute
      port: 8080
      tools:
        - name: get-ec2-status
          description: "Look up an EC2 instance by instance ID. Returns instance state, type, availability zone, and launch time."
          inputParameters:
            - name: instance_id
              in: body
              type: string
              description: "The AWS EC2 instance ID (e.g., i-0abc123def456)."
          call: "aws-ec2.describe-instance"
          with:
            instance_id: "{{instance_id}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.Reservations[0].Instances[0].State.Name"
            - name: instance_type
              type: string
              mapping: "$.Reservations[0].Instances[0].InstanceType"
            - name: availability_zone
              type: string
              mapping: "$.Reservations[0].Instances[0].Placement.AvailabilityZone"
  consumes:
    - type: http
      namespace: aws-ec2
      baseUri: "https://ec2.us-west-2.amazonaws.com"
      authentication:
        type: awsSigV4
        accessKeyId: "$secrets.aws_access_key"
        secretAccessKey: "$secrets.aws_secret_key"
        region: "us-west-2"
        service: "ec2"
      resources:
        - name: instances
          path: "/?Action=DescribeInstances&InstanceId.1={{instance_id}}&Version=2016-11-15"
          inputParameters:
            - name: instance_id
              in: query
          operations:
            - name: describe-instance
              method: GET

Checks whether a user is a member of a specific Azure Active Directory group, used by T-Mobile IT for access verification and compliance checks.

naftiko: "0.5"
info:
  label: "Azure AD Group Membership Check"
  description: "Checks whether a user is a member of a specific Azure Active Directory group, used by T-Mobile IT for access verification and compliance checks."
  tags:
    - security
    - azure-active-directory
capability:
  exposes:
    - type: mcp
      namespace: identity-access
      port: 8080
      tools:
        - name: check-group-membership
          description: "Check if a user (by UPN) is a member of an Azure AD security group. Returns membership status and group details."
          inputParameters:
            - name: user_upn
              in: body
              type: string
              description: "The user's Azure AD User Principal Name (email)."
            - name: group_id
              in: body
              type: string
              description: "The Azure AD group object ID."
          call: "azuread.check-member"
          with:
            user_upn: "{{user_upn}}"
            group_id: "{{group_id}}"
          outputParameters:
            - name: is_member
              type: boolean
              mapping: "$.value"
  consumes:
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: group-members
          path: "/groups/{{group_id}}/members?$filter=userPrincipalName eq '{{user_upn}}'"
          inputParameters:
            - name: group_id
              in: path
            - name: user_upn
              in: query
          operations:
            - name: check-member
              method: GET

Checks the latest pipeline run status for a given Azure DevOps build definition, used by T-Mobile engineering teams to monitor CI/CD health.

naftiko: "0.5"
info:
  label: "Azure DevOps Pipeline Status"
  description: "Checks the latest pipeline run status for a given Azure DevOps build definition, used by T-Mobile engineering teams to monitor CI/CD health."
  tags:
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: cicd-status
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Query Azure DevOps for the latest run of a build pipeline by definition ID. Returns run status, result, start time, and triggering branch."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: definition_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            project: "{{project}}"
            definition_id: "{{definition_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].status"
            - name: result
              type: string
              mapping: "$.value[0].result"
            - name: source_branch
              type: string
              mapping: "$.value[0].sourceBranch"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/tmobile"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-builds
              method: GET

Resolves billing disputes by pulling usage records, comparing with billed amounts, and processing credits.

naftiko: "0.5"
info:
  label: "Billing Dispute Orchestrator"
  description: "Resolves billing disputes by pulling usage records, comparing with billed amounts, and processing credits."
  tags:
    - billing
    - customer-service
    - finance
capability:
  exposes:
    - type: mcp
      namespace: billing
      port: 8080
      tools:
        - name: run-billing-dispute-orchestrator
          description: "Resolves billing disputes by pulling usage records, comparing with billed amounts, and processing credits."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Billing Dispute Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a billing dispute is filed, retrieves the customer account from Salesforce, pulls invoice details from Oracle E-Business Suite, creates a ServiceNow case, and notifies the billing ops team in Teams.

naftiko: "0.5"
info:
  label: "Billing Dispute Resolution Orchestrator"
  description: "When a billing dispute is filed, retrieves the customer account from Salesforce, pulls invoice details from Oracle E-Business Suite, creates a ServiceNow case, and notifies the billing ops team in Teams."
  tags:
    - billing
    - dispute
    - salesforce
    - oracle-e-business-suite
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: billing-disputes
      port: 8080
      tools:
        - name: process-billing-dispute
          description: "Given a customer account ID and disputed invoice number, pull account and invoice details, open a dispute case, and notify the billing team."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: invoice_number
              in: body
              type: string
              description: "The disputed invoice number from Oracle EBS."
            - name: dispute_reason
              in: body
              type: string
              description: "Customer-stated reason for the billing dispute."
          steps:
            - name: get-customer
              type: call
              call: "salesforce.get-account-by-id"
              with:
                account_id: "{{account_id}}"
            - name: get-invoice
              type: call
              call: "oracle-ebs.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: open-dispute-case
              type: call
              call: "servicenow.create-case"
              with:
                short_description: "Billing Dispute: {{get-customer.Name}} — Invoice {{invoice_number}}"
                category: "billing_dispute"
                assigned_group: "Billing_Operations"
                description: "Customer: {{get-customer.Name}} ({{account_id}}). Invoice: {{invoice_number}}, Amount: ${{get-invoice.total_amount}}. Reason: {{dispute_reason}}. Due date: {{get-invoice.due_date}}."
            - name: notify-billing-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "billing-operations"
                channel_id: "disputes"
                text: "New Billing Dispute — {{get-customer.Name}}: Invoice {{invoice_number}} (${{get-invoice.total_amount}}). Reason: {{dispute_reason}}. Case: {{open-dispute-case.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.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-by-id
              method: GET
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/ar/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: invoices
          path: "/invoices/{{invoice_number}}"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cases
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Pulls campaign metrics from Adobe Analytics and Google Analytics, merges results, and posts a consolidated performance summary to the marketing Teams channel.

naftiko: "0.5"
info:
  label: "Campaign Performance Aggregator"
  description: "Pulls campaign metrics from Adobe Analytics and Google Analytics, merges results, and posts a consolidated performance summary to the marketing Teams channel."
  tags:
    - marketing
    - adobe-analytics
    - google-analytics
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: aggregate-campaign-performance
          description: "Given a campaign ID and date range, pull metrics from Adobe Analytics and Google Analytics and post a combined summary to Teams."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The marketing campaign identifier."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          steps:
            - name: get-adobe-metrics
              type: call
              call: "adobe-analytics.get-report"
              with:
                rsid: "tmobile-prod"
                campaign_id: "{{campaign_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: get-ga-metrics
              type: call
              call: "google-analytics.run-report"
              with:
                property_id: "properties/123456789"
                campaign_filter: "{{campaign_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "marketing-analytics"
                channel_id: "campaign-reports"
                text: "Campaign {{campaign_id}} ({{start_date}} to {{end_date}}): Adobe — Visits: {{get-adobe-metrics.total_visits}}, Conversions: {{get-adobe-metrics.conversions}}. GA — Sessions: {{get-ga-metrics.total_sessions}}, Bounce: {{get-ga-metrics.bounce_rate}}%."
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api/tmobile/reports"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/ranked"
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Queries a cell site by site ID from Ericsson ENM, checks for active alarms, and if alarms are present creates a ServiceNow incident for the NOC team.

naftiko: "0.5"
info:
  label: "Cell Site Health and Alarm Sync"
  description: "Queries a cell site by site ID from Ericsson ENM, checks for active alarms, and if alarms are present creates a ServiceNow incident for the NOC team."
  tags:
    - network-ops
    - ericsson
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: network-ops
      port: 8080
      tools:
        - name: check-cell-site-health
          description: "Look up cell site operational status by site ID and create a ServiceNow incident if alarms are detected."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The unique cell site identifier (e.g., SEA-5G-0042)."
          steps:
            - name: get-site
              type: call
              call: "ericsson.get-site"
              with:
                site_id: "{{site_id}}"
            - name: create-alarm-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Cell Site Alarm: {{site_id}} — {{get-site.operational_status}}"
                category: "network"
                assigned_group: "NOC_Tier1"
                description: "Site {{site_id}} has {{get-site.active_alarms}} active alarms. Status: {{get-site.operational_status}}. Type: {{get-site.site_type}}."
  consumes:
    - type: http
      namespace: ericsson
      baseUri: "https://enm.tmobile-network.com/oss/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ericsson_enm_token"
      resources:
        - name: managed-elements
          path: "/managed-elements/{{site_id}}"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: get-site
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Retrieves signal strength data for a cell tower.

naftiko: "0.5"
info:
  label: "Cell Tower Signal Strength Lookup"
  description: "Retrieves signal strength data for a cell tower."
  tags:
    - network
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: get-cell
          description: "Retrieves signal strength data for a cell tower."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The cell tower signal strength lookup identifier."
          call: "network-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: network-api
      baseUri: "https://api.t-mobile.com/network/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: cell
          path: "/cell/tower/signal/strength/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-cell
              method: GET

When a network change request is submitted in ServiceNow, validates the change window against the maintenance calendar, checks infrastructure state in Terraform, and notifies the CAB in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Change Request Approval Pipeline"
  description: "When a network change request is submitted in ServiceNow, validates the change window against the maintenance calendar, checks infrastructure state in Terraform, and notifies the CAB in Microsoft Teams."
  tags:
    - change-management
    - servicenow
    - terraform
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: process-change-request
          description: "Given a ServiceNow change request number, validate the change window, check affected infrastructure state, and notify the Change Advisory Board."
          inputParameters:
            - name: change_number
              in: body
              type: string
              description: "The ServiceNow change request number (e.g., CHG0012345)."
          steps:
            - name: get-change
              type: call
              call: "servicenow.get-change"
              with:
                change_number: "{{change_number}}"
            - name: get-infra-state
              type: call
              call: "terraform.get-workspace"
              with:
                workspace_name: "{{get-change.configuration_item}}"
            - name: notify-cab
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "change-advisory-board"
                channel_id: "pending-reviews"
                text: "Change Request {{change_number}}: {{get-change.short_description}}. Window: {{get-change.start_date}} to {{get-change.end_date}}. Risk: {{get-change.risk}}. Infra resources affected: {{get-infra-state.resource_count}}. Requestor: {{get-change.requested_by}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request?sysparm_query=number={{change_number}}"
          inputParameters:
            - name: change_number
              in: query
          operations:
            - name: get-change
              method: GET
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_cloud_token"
      inputParameters:
        - name: Content-Type
          in: header
          value: "application/vnd.api+json"
      resources:
        - name: workspaces
          path: "/organizations/t-mobile/workspaces/{{workspace_name}}"
          inputParameters:
            - name: workspace_name
              in: path
          operations:
            - name: get-workspace
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves the running configuration from a Cisco network device via the Cisco DNA Center API, used by T-Mobile network engineering for config audit and backup.

naftiko: "0.5"
info:
  label: "Cisco Network Device Config Backup"
  description: "Retrieves the running configuration from a Cisco network device via the Cisco DNA Center API, used by T-Mobile network engineering for config audit and backup."
  tags:
    - network-ops
    - cisco
capability:
  exposes:
    - type: mcp
      namespace: network-config
      port: 8080
      tools:
        - name: get-device-config
          description: "Retrieve the running configuration for a Cisco network device by device ID from Cisco DNA Center."
          inputParameters:
            - name: device_id
              in: body
              type: string
              description: "The Cisco DNA Center device UUID."
          call: "cisco-dnac.get-config"
          with:
            device_id: "{{device_id}}"
          outputParameters:
            - name: running_config
              type: string
              mapping: "$.response[0].runningConfig"
            - name: hostname
              type: string
              mapping: "$.response[0].hostname"
  consumes:
    - type: http
      namespace: cisco-dnac
      baseUri: "https://dnac.tmobile-network.com/dna/intent/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cisco_dnac_token"
      resources:
        - name: device-configs
          path: "/network-device/{{device_id}}/config"
          inputParameters:
            - name: device_id
              in: path
          operations:
            - name: get-config
              method: GET

Queries Cloudflare for DNS records of a T-Mobile domain zone, returning record type, value, and TTL.

naftiko: "0.5"
info:
  label: "Cloudflare DNS Record Lookup"
  description: "Queries Cloudflare for DNS records of a T-Mobile domain zone, returning record type, value, and TTL."
  tags:
    - network-ops
    - cloudflare
    - dns
capability:
  exposes:
    - type: mcp
      namespace: dns-management
      port: 8080
      tools:
        - name: get-dns-records
          description: "Look up Cloudflare DNS records by zone and record name. Returns matching records with type, content, TTL, and proxy status."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The Cloudflare zone ID for the domain."
            - name: record_name
              in: body
              type: string
              description: "The DNS record name to look up (e.g., api.t-mobile.com)."
          call: "cloudflare.list-records"
          with:
            zone_id: "{{zone_id}}"
            name: "{{record_name}}"
          outputParameters:
            - name: records
              type: array
              mapping: "$.result"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_api_token"
      resources:
        - name: dns-records
          path: "/zones/{{zone_id}}/dns_records?name={{name}}"
          inputParameters:
            - name: zone_id
              in: path
            - name: name
              in: query
          operations:
            - name: list-records
              method: GET

For a compliance audit, pulls Azure AD sign-in logs, correlates with ServiceNow access requests, and generates an audit document in SharePoint for the compliance team.

naftiko: "0.5"
info:
  label: "Compliance Audit Trail Orchestrator"
  description: "For a compliance audit, pulls Azure AD sign-in logs, correlates with ServiceNow access requests, and generates an audit document in SharePoint for the compliance team."
  tags:
    - compliance
    - security
    - azure-active-directory
    - servicenow
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: compliance-audit
      port: 8080
      tools:
        - name: generate-audit-trail
          description: "Given a user UPN and date range, pull sign-in logs, correlate with access requests, and create an audit document."
          inputParameters:
            - name: user_upn
              in: body
              type: string
              description: "The user's Azure AD User Principal Name."
            - name: start_date
              in: body
              type: string
              description: "Audit start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Audit end date in YYYY-MM-DD format."
          steps:
            - name: get-sign-ins
              type: call
              call: "azuread.get-sign-in-logs"
              with:
                user_upn: "{{user_upn}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: get-access-requests
              type: call
              call: "servicenow.get-access-requests"
              with:
                user: "{{user_upn}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: create-audit-doc
              type: call
              call: "sharepoint.create-file"
              with:
                site_id: "compliance_audits"
                file_path: "Audits/{{user_upn}}_{{start_date}}_{{end_date}}.md"
                content: "# Access Audit: {{user_upn}}\nPeriod: {{start_date}} to {{end_date}}\n## Sign-In Activity\nTotal sign-ins: {{get-sign-ins.total_count}}. Unique locations: {{get-sign-ins.location_count}}. Failed attempts: {{get-sign-ins.failure_count}}.\n## Access Requests\nTotal requests: {{get-access-requests.total_count}}. Approved: {{get-access-requests.approved_count}}."
  consumes:
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: sign-in-logs
          path: "/auditLogs/signIns?$filter=userPrincipalName eq '{{user_upn}}' and createdDateTime ge {{start_date}} and createdDateTime le {{end_date}}"
          inputParameters:
            - name: user_upn
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-sign-in-logs
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: access-requests
          path: "/table/sc_request?sysparm_query=requested_for.email={{user}}&opened_atBETWEEN{{start_date}}@{{end_date}}"
          inputParameters:
            - name: user
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-access-requests
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: create-file
              method: PUT

Retrieves a Confluence wiki page.

naftiko: "0.5"
info:
  label: "Confluence Page Viewer"
  description: "Retrieves a Confluence wiki page."
  tags:
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-confluence
          description: "Retrieves a Confluence wiki page."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The confluence page viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.t-mobile.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Handles coverage complaints by investigating signal data, scheduling tower adjustments, and following up with customers.

naftiko: "0.5"
info:
  label: "Coverage Complaint Orchestrator"
  description: "Handles coverage complaints by investigating signal data, scheduling tower adjustments, and following up with customers."
  tags:
    - customer-service
    - network
    - operations
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: run-coverage-complaint-orchestrator
          description: "Handles coverage complaints by investigating signal data, scheduling tower adjustments, and following up with customers."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Coverage Complaint Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.

naftiko: "0.5"
info:
  label: "Cross-Functional Project Kickoff Orchestrator"
  description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
  tags:
    - project-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: project-management
      port: 8080
      tools:
        - name: run-cross-functional-project-kickoff-orchestrator
          description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a T-Mobile customer account by phone number from Salesforce, pulls recent billing details from Oracle EBS, and returns a combined account and billing view.

naftiko: "0.5"
info:
  label: "Customer Account and Billing Summary"
  description: "Retrieves a T-Mobile customer account by phone number from Salesforce, pulls recent billing details from Oracle EBS, and returns a combined account and billing view."
  tags:
    - customer-management
    - billing
    - salesforce
    - oracle-e-business-suite
capability:
  exposes:
    - type: mcp
      namespace: customer-account
      port: 8080
      tools:
        - name: get-customer-account
          description: "Look up a T-Mobile customer account by MSISDN and retrieve associated billing summary from Oracle EBS."
          inputParameters:
            - name: msisdn
              in: body
              type: string
              description: "The customer mobile number (MSISDN) in E.164 format."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account"
              with:
                msisdn: "{{msisdn}}"
            - name: get-billing
              type: call
              call: "oracle-ebs.get-billing-summary"
              with:
                customer_number: "{{get-account.Customer_Number__c}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/query?q=SELECT+Id,Account_Status__c,Rate_Plan__c,Balance_Due__c,Customer_Number__c+FROM+Account+WHERE+MSISDN__c='{{msisdn}}'"
          inputParameters:
            - name: msisdn
              in: query
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/billing/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: billing-summary
          path: "/customers/{{customer_number}}/billing-summary"
          inputParameters:
            - name: customer_number
              in: path
          operations:
            - name: get-billing-summary
              method: GET

Identifies a churn-risk customer in Salesforce, enriches with usage data from the billing platform, creates a retention case in ServiceNow, and notifies the assigned retention specialist via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Churn Risk Orchestrator"
  description: "Identifies a churn-risk customer in Salesforce, enriches with usage data from the billing platform, creates a retention case in ServiceNow, and notifies the assigned retention specialist via Microsoft Teams."
  tags:
    - customer-management
    - retention
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-retention
      port: 8080
      tools:
        - name: handle-churn-risk
          description: "Given a customer account ID and churn score, pull account details, create a retention case, and notify the assigned specialist."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID for the at-risk customer."
            - name: churn_score
              in: body
              type: number
              description: "The predicted churn probability score (0.0 to 1.0)."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account-by-id"
              with:
                account_id: "{{account_id}}"
            - name: create-retention-case
              type: call
              call: "servicenow.create-case"
              with:
                short_description: "Churn Risk: {{get-account.Name}} — Score {{churn_score}}"
                category: "customer_retention"
                assigned_group: "Retention_Team"
                description: "Customer {{get-account.Name}} ({{account_id}}) flagged with churn score {{churn_score}}. Plan: {{get-account.Rate_Plan__c}}. Tenure: {{get-account.Tenure_Months__c}} months. Lines: {{get-account.Line_Count__c}}."
            - name: notify-specialist
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-account.Owner_Email__c}}"
                text: "Retention Alert: {{get-account.Name}} has a churn score of {{churn_score}}. Case {{create-retention-case.number}} created. {{get-account.Line_Count__c}} lines on {{get-account.Rate_Plan__c}}. Please reach out within 24 hours."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.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-by-id
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cases
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.

naftiko: "0.5"
info:
  label: "Customer Data Privacy Request Handler"
  description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
  tags:
    - compliance
    - privacy
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-customer-data-privacy-request-handler
          description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Collects a customer NPS response from HubSpot, links it to the Salesforce account, opens a ServiceNow follow-up task for detractors, and notifies the CX team in Teams.

naftiko: "0.5"
info:
  label: "Customer Feedback Loop Orchestrator"
  description: "Collects a customer NPS response from HubSpot, links it to the Salesforce account, opens a ServiceNow follow-up task for detractors, and notifies the CX team in Teams."
  tags:
    - customer-experience
    - hubspot
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-feedback
      port: 8080
      tools:
        - name: process-nps-response
          description: "Given a HubSpot contact ID and NPS score, link to Salesforce, create follow-up for detractors, and notify the CX team."
          inputParameters:
            - name: hubspot_contact_id
              in: body
              type: string
              description: "The HubSpot contact ID of the survey respondent."
            - name: nps_score
              in: body
              type: integer
              description: "The NPS score (0-10)."
            - name: feedback_text
              in: body
              type: string
              description: "The customer's open-ended feedback."
          steps:
            - name: get-contact
              type: call
              call: "hubspot.get-contact"
              with:
                contact_id: "{{hubspot_contact_id}}"
            - name: update-salesforce
              type: call
              call: "salesforce.create-nps-record"
              with:
                email: "{{get-contact.email}}"
                nps_score: "{{nps_score}}"
                feedback: "{{feedback_text}}"
                survey_date: "{{get-contact.lastmodifieddate}}"
            - name: create-followup
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "NPS Detractor Follow-up: {{get-contact.firstname}} {{get-contact.lastname}} (Score: {{nps_score}})"
                assigned_group: "CX_Recovery"
                description: "Customer {{get-contact.firstname}} {{get-contact.lastname}} ({{get-contact.email}}) gave NPS {{nps_score}}. Feedback: {{feedback_text}}."
                category: "customer_feedback"
            - name: notify-cx-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "customer-experience"
                channel_id: "nps-alerts"
                text: "NPS Detractor — {{get-contact.firstname}} {{get-contact.lastname}}: Score {{nps_score}}/10. \"{{feedback_text}}\". Follow-up task: {{create-followup.number}}."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: nps-records
          path: "/sobjects/NPS_Response__c"
          operations:
            - name: create-nps-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.

naftiko: "0.5"
info:
  label: "Customer Journey Mapping Orchestrator"
  description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
  tags:
    - customer-experience
    - analytics
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: customer-experience
      port: 8080
      tools:
        - name: run-customer-journey-mapping-orchestrator
          description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes a customer plan upgrade by updating the account in Salesforce, adjusting billing in Oracle EBS, sending a confirmation via Adobe Campaign, and logging the change in ServiceNow.

naftiko: "0.5"
info:
  label: "Customer Plan Upgrade Orchestrator"
  description: "Processes a customer plan upgrade by updating the account in Salesforce, adjusting billing in Oracle EBS, sending a confirmation via Adobe Campaign, and logging the change in ServiceNow."
  tags:
    - customer-management
    - billing
    - salesforce
    - oracle-e-business-suite
    - adobe-campaign
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: plan-management
      port: 8080
      tools:
        - name: process-plan-upgrade
          description: "Given a customer account ID and target plan, update the CRM record, adjust billing, send confirmation, and log the change."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: new_plan
              in: body
              type: string
              description: "The target rate plan name (e.g., Go5G Plus, Go5G Next)."
            - name: effective_date
              in: body
              type: string
              description: "The plan change effective date in YYYY-MM-DD format."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account-by-id"
              with:
                account_id: "{{account_id}}"
            - name: update-plan
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{account_id}}"
                rate_plan: "{{new_plan}}"
                effective_date: "{{effective_date}}"
            - name: adjust-billing
              type: call
              call: "oracle-ebs.update-billing"
              with:
                customer_number: "{{get-account.Customer_Number__c}}"
                new_plan: "{{new_plan}}"
                effective_date: "{{effective_date}}"
            - name: send-confirmation
              type: call
              call: "adobe-campaign.trigger-message"
              with:
                email: "{{get-account.PersonEmail}}"
                template: "plan_upgrade_confirmation"
                params:
                  customer_name: "{{get-account.Name}}"
                  new_plan: "{{new_plan}}"
                  effective_date: "{{effective_date}}"
            - name: log-change
              type: call
              call: "servicenow.create-change-task"
              with:
                short_description: "Plan upgrade: {{get-account.Name}} to {{new_plan}}"
                description: "Customer {{get-account.Name}} ({{account_id}}) upgraded from {{get-account.Rate_Plan__c}} to {{new_plan}} effective {{effective_date}}."
                category: "plan_change"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.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-by-id
              method: GET
            - name: update-account
              method: PATCH
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/billing/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: billing-plans
          path: "/customers/{{customer_number}}/billing-plan"
          inputParameters:
            - name: customer_number
              in: path
          operations:
            - name: update-billing
              method: PUT
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/tmobile/campaign/v1"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: transactional-messages
          path: "/messageCenter/{{template}}/send"
          inputParameters:
            - name: template
              in: path
          operations:
            - name: trigger-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-tasks
          path: "/table/change_task"
          operations:
            - name: create-change-task
              method: POST

Executes customer retention workflows by identifying at-risk subscribers, generating offers, and tracking acceptance.

naftiko: "0.5"
info:
  label: "Customer Retention Orchestrator"
  description: "Executes customer retention workflows by identifying at-risk subscribers, generating offers, and tracking acceptance."
  tags:
    - customer-service
    - analytics
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: run-customer-retention-orchestrator
          description: "Executes customer retention workflows by identifying at-risk subscribers, generating offers, and tracking acceptance."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Retention Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.

naftiko: "0.5"
info:
  label: "Data Governance Review Orchestrator"
  description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
  tags:
    - data-governance
    - compliance
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-governance
      port: 8080
      tools:
        - name: run-data-governance-review-orchestrator
          description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Looks up device information by IMEI number.

naftiko: "0.5"
info:
  label: "Device IMEI Lookup"
  description: "Looks up device information by IMEI number."
  tags:
    - device-management
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: device-management
      port: 8080
      tools:
        - name: get-device
          description: "Looks up device information by IMEI number."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The device imei lookup identifier."
          call: "device-management-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: device-management-api
      baseUri: "https://api.t-mobile.com/device-management/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: device
          path: "/device/imei/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-device
              method: GET

Manages device lifecycle from procurement through deployment and retirement.

naftiko: "0.5"
info:
  label: "Device Lifecycle Orchestrator"
  description: "Manages device lifecycle from procurement through deployment and retirement."
  tags:
    - device-management
    - procurement
    - operations
capability:
  exposes:
    - type: mcp
      namespace: device-management
      port: 8080
      tools:
        - name: run-device-lifecycle-orchestrator
          description: "Manages device lifecycle from procurement through deployment and retirement."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Device Lifecycle Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes a device warranty claim by looking up the device in Salesforce, verifying warranty status, creating a ServiceNow case, and notifying the customer via Adobe Campaign.

naftiko: "0.5"
info:
  label: "Device Warranty Claim Processor"
  description: "Processes a device warranty claim by looking up the device in Salesforce, verifying warranty status, creating a ServiceNow case, and notifying the customer via Adobe Campaign."
  tags:
    - customer-management
    - warranty
    - salesforce
    - servicenow
    - adobe-campaign
capability:
  exposes:
    - type: mcp
      namespace: warranty-claims
      port: 8080
      tools:
        - name: process-warranty-claim
          description: "Given a device IMEI and account ID, verify warranty eligibility, open a claim case, and send the customer a confirmation."
          inputParameters:
            - name: imei
              in: body
              type: string
              description: "The device IMEI number (15 digits)."
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: issue_description
              in: body
              type: string
              description: "Description of the device issue."
          steps:
            - name: get-device
              type: call
              call: "salesforce.get-device"
              with:
                imei: "{{imei}}"
            - name: get-account
              type: call
              call: "salesforce.get-account-by-id"
              with:
                account_id: "{{account_id}}"
            - name: create-claim
              type: call
              call: "servicenow.create-case"
              with:
                short_description: "Warranty Claim: {{get-device.Device_Model__c}} — {{get-account.Name}}"
                category: "warranty_claim"
                assigned_group: "Device_Support"
                description: "Customer: {{get-account.Name}}. Device: {{get-device.Device_Model__c}} (IMEI: {{imei}}). Warranty expires: {{get-device.Warranty_End__c}}. Issue: {{issue_description}}."
            - name: notify-customer
              type: call
              call: "adobe-campaign.trigger-message"
              with:
                template: "warranty_claim_received"
                email: "{{get-account.PersonEmail}}"
                params:
                  customer_name: "{{get-account.Name}}"
                  device: "{{get-device.Device_Model__c}}"
                  case_number: "{{create-claim.number}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: devices
          path: "/query?q=SELECT+Device_Model__c,Warranty_End__c+FROM+Device__c+WHERE+IMEI__c='{{imei}}'"
          inputParameters:
            - name: imei
              in: query
          operations:
            - name: get-device
              method: GET
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account-by-id
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cases
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/tmobile/campaign/v1"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: transactional-messages
          path: "/messageCenter/{{template}}/send"
          inputParameters:
            - name: template
              in: path
          operations:
            - name: trigger-message
              method: POST

Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.

naftiko: "0.5"
info:
  label: "Digital Transformation Progress Orchestrator"
  description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
  tags:
    - strategy
    - analytics
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: strategy
      port: 8080
      tools:
        - name: run-digital-transformation-progress-orchestrator
          description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.

naftiko: "0.5"
info:
  label: "Disaster Recovery Test Orchestrator"
  description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
  tags:
    - infrastructure
    - operations
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-disaster-recovery-test-orchestrator
          description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Searches Elasticsearch for log entries matching a query string and time range, used by T-Mobile SRE teams for incident investigation.

naftiko: "0.5"
info:
  label: "Elasticsearch Log Search"
  description: "Searches Elasticsearch for log entries matching a query string and time range, used by T-Mobile SRE teams for incident investigation."
  tags:
    - observability
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: log-search
      port: 8080
      tools:
        - name: search-logs
          description: "Search Elasticsearch logs by query string and index pattern. Returns matching log entries with timestamps, severity, and message content."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The Elasticsearch query string (e.g., error AND service:billing-api)."
            - name: index_pattern
              in: body
              type: string
              description: "The Elasticsearch index pattern to search (e.g., logs-network-*)."
          call: "elasticsearch.search"
          with:
            index: "{{index_pattern}}"
            q: "{{query}}"
          outputParameters:
            - name: total_hits
              type: integer
              mapping: "$.hits.total.value"
            - name: entries
              type: array
              mapping: "$.hits.hits[*]._source"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://es-cluster.tmobile-infra.com:9200"
      authentication:
        type: basic
        username: "$secrets.elasticsearch_user"
        password: "$secrets.elasticsearch_password"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: GET

Creates and schedules a customer marketing email campaign in MailChimp, logs the campaign in Salesforce, and notifies the marketing team in Teams.

naftiko: "0.5"
info:
  label: "Email Campaign Launcher"
  description: "Creates and schedules a customer marketing email campaign in MailChimp, logs the campaign in Salesforce, and notifies the marketing team in Teams."
  tags:
    - marketing
    - email
    - mailchimp
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: email-campaigns
      port: 8080
      tools:
        - name: launch-email-campaign
          description: "Given campaign details and a MailChimp list ID, create the campaign, log it in Salesforce, and notify the marketing channel."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The campaign display name."
            - name: list_id
              in: body
              type: string
              description: "The MailChimp audience list ID."
            - name: subject_line
              in: body
              type: string
              description: "The email subject line."
            - name: send_time
              in: body
              type: string
              description: "Scheduled send time in ISO 8601 format."
          steps:
            - name: create-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                name: "{{campaign_name}}"
                list_id: "{{list_id}}"
                subject_line: "{{subject_line}}"
                send_time: "{{send_time}}"
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "{{campaign_name}}"
                type: "Email"
                status: "Scheduled"
                external_id: "{{create-campaign.id}}"
            - name: notify-marketing
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "marketing"
                channel_id: "campaigns"
                text: "Email Campaign Scheduled — {{campaign_name}}: Subject: \"{{subject_line}}\". Send time: {{send_time}}. MailChimp ID: {{create-campaign.id}}. SF Campaign: {{log-in-salesforce.id}}."
  consumes:
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Routes emergency services calls by locating the caller, identifying nearest PSAP, and forwarding with location data.

naftiko: "0.5"
info:
  label: "Emergency Services Routing Orchestrator"
  description: "Routes emergency services calls by locating the caller, identifying nearest PSAP, and forwarding with location data."
  tags:
    - network
    - emergency
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: run-emergency-services-routing-orchestrator
          description: "Routes emergency services calls by locating the caller, identifying nearest PSAP, and forwarding with location data."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Emergency Services Routing Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

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

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
  tags:
    - hr
    - identity
    - operations
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-offboarding-orchestrator
          description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

On new hire creation in Workday, provisions an Azure AD account, opens a ServiceNow onboarding ticket, creates a SharePoint document folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, provisions an Azure AD account, opens a ServiceNow onboarding ticket, creates a SharePoint document folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - azure-active-directory
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate account provisioning, ticket creation, document folder setup, and welcome notification."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: provision-ad-account
              type: call
              call: "azuread.create-user"
              with:
                display_name: "{{get-employee.full_name}}"
                mail_nickname: "{{get-employee.username}}"
                department: "{{department}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{provision-ad-account.userPrincipalName}}"
                text: "Welcome to T-Mobile, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready at {{provision-folder.url}}. Your start date is {{start_date}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/tmobile"
      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: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Checks device compliance status via Microsoft Endpoint Manager, correlates with Azure AD group policies, opens a ServiceNow remediation task for non-compliant devices, and notifies IT security.

naftiko: "0.5"
info:
  label: "Endpoint Compliance Check Orchestrator"
  description: "Checks device compliance status via Microsoft Endpoint Manager, correlates with Azure AD group policies, opens a ServiceNow remediation task for non-compliant devices, and notifies IT security."
  tags:
    - security
    - compliance
    - microsoft-endpoint-manager
    - azure-active-directory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: endpoint-compliance
      port: 8080
      tools:
        - name: check-endpoint-compliance
          description: "Given a device ID, check compliance status, verify group policies, create remediation tasks for violations, and notify security."
          inputParameters:
            - name: device_id
              in: body
              type: string
              description: "The Microsoft Endpoint Manager device ID."
          steps:
            - name: get-compliance
              type: call
              call: "intune.get-device-compliance"
              with:
                device_id: "{{device_id}}"
            - name: get-policies
              type: call
              call: "azuread.get-device-policies"
              with:
                device_id: "{{device_id}}"
            - name: create-remediation
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Non-Compliant Endpoint: {{get-compliance.device_name}} — {{get-compliance.compliance_state}}"
                assigned_group: "IT_Security"
                category: "endpoint_remediation"
                description: "Device: {{get-compliance.device_name}} ({{device_id}}). OS: {{get-compliance.os_version}}. Compliance state: {{get-compliance.compliance_state}}. Violations: {{get-compliance.violation_count}}. Owner: {{get-compliance.user_principal_name}}."
            - name: notify-security
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "it-security"
                channel_id: "endpoint-alerts"
                text: "Non-Compliant Endpoint — {{get-compliance.device_name}} ({{get-compliance.user_principal_name}}): State: {{get-compliance.compliance_state}}. Violations: {{get-compliance.violation_count}}. Remediation: {{create-remediation.number}}."
  consumes:
    - type: http
      namespace: intune
      baseUri: "https://graph.microsoft.com/v1.0/deviceManagement"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: managed-devices
          path: "/managedDevices/{{device_id}}"
          inputParameters:
            - name: device_id
              in: path
          operations:
            - name: get-device-compliance
              method: GET
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: device-policies
          path: "/devices/{{device_id}}/memberOf"
          inputParameters:
            - name: device_id
              in: path
          operations:
            - name: get-device-policies
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Generates a quarterly business review package for an enterprise customer by pulling the account from Salesforce, usage from Oracle EBS, open tickets from ServiceNow, and posting the summary to the account team channel.

naftiko: "0.5"
info:
  label: "Enterprise Account Review Orchestrator"
  description: "Generates a quarterly business review package for an enterprise customer by pulling the account from Salesforce, usage from Oracle EBS, open tickets from ServiceNow, and posting the summary to the account team channel."
  tags:
    - sales
    - enterprise
    - salesforce
    - oracle-e-business-suite
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: enterprise-reviews
      port: 8080
      tools:
        - name: generate-qbr-package
          description: "Given an enterprise account ID and review quarter, compile account health, usage, and support metrics into a QBR summary."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce enterprise account ID."
            - name: quarter
              in: body
              type: string
              description: "The review quarter (e.g., 2026-Q1)."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-enterprise-account"
              with:
                account_id: "{{account_id}}"
            - name: get-usage
              type: call
              call: "oracle-ebs.get-enterprise-usage"
              with:
                customer_number: "{{get-account.Customer_Number__c}}"
                quarter: "{{quarter}}"
            - name: get-tickets
              type: call
              call: "servicenow.get-account-tickets"
              with:
                account_id: "{{account_id}}"
                quarter: "{{quarter}}"
            - name: post-qbr
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "enterprise-sales"
                channel_id: "qbr-packages"
                text: "QBR Ready — {{get-account.Name}} ({{quarter}}): Lines: {{get-usage.active_lines}}. MRC: ${{get-usage.monthly_recurring}}. Data usage: {{get-usage.data_gb}} GB avg/mo. Open tickets: {{get-tickets.open_count}}. SLA met: {{get-tickets.sla_pct}}%."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: enterprise-accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-enterprise-account
              method: GET
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/enterprise/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: enterprise-usage
          path: "/usage?customer={{customer_number}}&quarter={{quarter}}"
          inputParameters:
            - name: customer_number
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-enterprise-usage
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: account-tickets
          path: "/table/incident?sysparm_query=account={{account_id}}&opened_atON{{quarter}}"
          inputParameters:
            - name: account_id
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-account-tickets
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.

naftiko: "0.5"
info:
  label: "Executive Dashboard Refresh Orchestrator"
  description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
  tags:
    - analytics
    - power-bi
    - business
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-executive-dashboard-refresh-orchestrator
          description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries an F5 Networks load balancer for the health status of a virtual server pool, returning member availability and connection counts for T-Mobile infrastructure.

naftiko: "0.5"
info:
  label: "F5 Load Balancer Pool Status"
  description: "Queries an F5 Networks load balancer for the health status of a virtual server pool, returning member availability and connection counts for T-Mobile infrastructure."
  tags:
    - network-ops
    - f5-networks
capability:
  exposes:
    - type: mcp
      namespace: lb-monitoring
      port: 8080
      tools:
        - name: get-pool-status
          description: "Look up an F5 load balancer pool by name. Returns pool availability, active member count, and total connections."
          inputParameters:
            - name: pool_name
              in: body
              type: string
              description: "The F5 pool name (e.g., pool_billing-api_443)."
          call: "f5.get-pool"
          with:
            pool_name: "{{pool_name}}"
          outputParameters:
            - name: availability_state
              type: string
              mapping: "$.availabilityState"
            - name: active_members
              type: integer
              mapping: "$.activeMemberCnt"
            - name: total_connections
              type: integer
              mapping: "$.serverside.totConns"
  consumes:
    - type: http
      namespace: f5
      baseUri: "https://f5-ltm.tmobile-network.com/mgmt/tm/ltm"
      authentication:
        type: basic
        username: "$secrets.f5_user"
        password: "$secrets.f5_password"
      resources:
        - name: pools
          path: "/pool/~Common~{{pool_name}}/stats"
          inputParameters:
            - name: pool_name
              in: path
          operations:
            - name: get-pool
              method: GET

Queries a Palo Alto Networks firewall rule by name, logs the audit result in ServiceNow as a compliance record, and notifies the security team in Teams.

naftiko: "0.5"
info:
  label: "Firewall Rule Audit and Compliance Log"
  description: "Queries a Palo Alto Networks firewall rule by name, logs the audit result in ServiceNow as a compliance record, and notifies the security team in Teams."
  tags:
    - security
    - compliance
    - palo-alto-networks
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: firewall-ops
      port: 8080
      tools:
        - name: audit-firewall-rule
          description: "Look up a firewall rule, log the audit finding in ServiceNow, and notify the security compliance team."
          inputParameters:
            - name: rule_name
              in: body
              type: string
              description: "The firewall security rule name."
            - name: audit_reason
              in: body
              type: string
              description: "The reason for the audit (periodic_review, incident, change_request)."
          steps:
            - name: get-rule
              type: call
              call: "paloalto.get-rule"
              with:
                rule_name: "{{rule_name}}"
            - name: log-audit
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Firewall Rule Audit: {{rule_name}}"
                category: "security_audit"
                assigned_group: "Security_Compliance"
                description: "Rule: {{rule_name}}. Action: {{get-rule.action}}. Source zones: {{get-rule.source_zone}}. Dest zones: {{get-rule.destination_zone}}. Audit reason: {{audit_reason}}."
            - name: notify-security
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "security-compliance"
                channel_id: "firewall-audits"
                text: "Firewall Audit — Rule: {{rule_name}}. Action: {{get-rule.action}}. Reason: {{audit_reason}}. Task: {{log-audit.number}}."
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://panorama.tmobile-security.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules?name={{rule_name}}"
          inputParameters:
            - name: rule_name
              in: query
          operations:
            - name: get-rule
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

When a fraud signal is detected, pulls the subscriber profile from Salesforce, queries SIM swap history from the fraud platform, opens a security incident in ServiceNow, and alerts the fraud ops team in Teams.

naftiko: "0.5"
info:
  label: "Fraud Alert Investigation Pipeline"
  description: "When a fraud signal is detected, pulls the subscriber profile from Salesforce, queries SIM swap history from the fraud platform, opens a security incident in ServiceNow, and alerts the fraud ops team in Teams."
  tags:
    - fraud
    - security
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fraud-investigation
      port: 8080
      tools:
        - name: investigate-fraud-alert
          description: "Given a subscriber MSISDN and fraud alert type, pull subscriber details, check SIM swap history, open a security incident, and notify the fraud team."
          inputParameters:
            - name: msisdn
              in: body
              type: string
              description: "The subscriber phone number in E.164 format."
            - name: alert_type
              in: body
              type: string
              description: "The type of fraud alert (sim_swap, account_takeover, device_fraud, subscription_fraud)."
            - name: risk_score
              in: body
              type: number
              description: "The fraud risk score (0-100)."
          steps:
            - name: get-subscriber
              type: call
              call: "salesforce.get-subscriber"
              with:
                msisdn: "{{msisdn}}"
            - name: get-sim-history
              type: call
              call: "fraud-platform.get-sim-swaps"
              with:
                msisdn: "{{msisdn}}"
            - name: open-security-incident
              type: call
              call: "servicenow.create-security-incident"
              with:
                short_description: "Fraud Alert: {{alert_type}} — {{msisdn}}"
                category: "fraud"
                severity: "2"
                assigned_group: "Fraud_Operations"
                description: "MSISDN: {{msisdn}}. Alert: {{alert_type}}. Risk score: {{risk_score}}. Customer: {{get-subscriber.Name}}. SIM swaps in last 90 days: {{get-sim-history.swap_count}}. Last swap: {{get-sim-history.last_swap_date}}."
            - name: notify-fraud-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "fraud-operations"
                channel_id: "alerts"
                text: "FRAUD ALERT — {{alert_type}} for {{msisdn}} ({{get-subscriber.Name}}). Risk: {{risk_score}}/100. SIM swaps: {{get-sim-history.swap_count}}. Incident: {{open-security-incident.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: subscribers
          path: "/query?q=SELECT+Id,Name,MSISDN__c,Account_Status__c+FROM+Subscriber__c+WHERE+MSISDN__c='{{msisdn}}'"
          inputParameters:
            - name: msisdn
              in: query
          operations:
            - name: get-subscriber
              method: GET
    - type: http
      namespace: fraud-platform
      baseUri: "https://fraud-api.tmobile-security.com/v1"
      authentication:
        type: bearer
        token: "$secrets.fraud_platform_token"
      resources:
        - name: sim-swaps
          path: "/sim-swaps?msisdn={{msisdn}}&days=90"
          inputParameters:
            - name: msisdn
              in: query
          operations:
            - name: get-sim-swaps
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: security-incidents
          path: "/table/sn_si_incident"
          operations:
            - name: create-security-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves the status of a GitLab merge request by project and MR ID, returning approval status, pipeline result, and merge readiness for T-Mobile engineering teams.

naftiko: "0.5"
info:
  label: "GitLab Merge Request Status"
  description: "Retrieves the status of a GitLab merge request by project and MR ID, returning approval status, pipeline result, and merge readiness for T-Mobile engineering teams."
  tags:
    - ci-cd
    - gitlab
capability:
  exposes:
    - type: mcp
      namespace: code-review
      port: 8080
      tools:
        - name: get-merge-request-status
          description: "Look up a GitLab merge request by project ID and MR IID. Returns title, approval status, pipeline status, and merge conflicts."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The GitLab project ID."
            - name: mr_iid
              in: body
              type: string
              description: "The merge request internal ID."
          call: "gitlab.get-mr"
          with:
            project_id: "{{project_id}}"
            mr_iid: "{{mr_iid}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: state
              type: string
              mapping: "$.state"
            - name: pipeline_status
              type: string
              mapping: "$.head_pipeline.status"
            - name: has_conflicts
              type: boolean
              mapping: "$.has_conflicts"
  consumes:
    - type: http
      namespace: gitlab
      baseUri: "https://gitlab.tmobile.com/api/v4"
      authentication:
        type: bearer
        token: "$secrets.gitlab_token"
      resources:
        - name: merge-requests
          path: "/projects/{{project_id}}/merge_requests/{{mr_iid}}"
          inputParameters:
            - name: project_id
              in: path
            - name: mr_iid
              in: path
          operations:
            - name: get-mr
              method: GET

Pulls a traffic summary from Google Analytics for t-mobile.com, returning sessions, bounce rate, and top pages for a given date range.

naftiko: "0.5"
info:
  label: "Google Analytics Traffic Snapshot"
  description: "Pulls a traffic summary from Google Analytics for t-mobile.com, returning sessions, bounce rate, and top pages for a given date range."
  tags:
    - analytics
    - google-analytics
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: web-analytics
      port: 8080
      tools:
        - name: get-traffic-snapshot
          description: "Retrieve a Google Analytics traffic summary for a given date range. Returns total sessions, unique users, bounce rate, and top landing pages."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "google-analytics.run-report"
          with:
            property_id: "properties/123456789"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: total_sessions
              type: integer
              mapping: "$.rows[0].metricValues[0].value"
            - name: bounce_rate
              type: number
              mapping: "$.rows[0].metricValues[1].value"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST

Retrieves a file from Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive File Viewer"
  description: "Retrieves a file from Google Drive."
  tags:
    - collaboration
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-google
          description: "Retrieves a file from Google Drive."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The google drive file viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.t-mobile.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

After a major incident is resolved, pulls the incident timeline from ServiceNow, gathers related metrics from Datadog, creates a post-mortem document in SharePoint, and notifies stakeholders in Teams.

naftiko: "0.5"
info:
  label: "Incident Post-Mortem Generator"
  description: "After a major incident is resolved, pulls the incident timeline from ServiceNow, gathers related metrics from Datadog, creates a post-mortem document in SharePoint, and notifies stakeholders in Teams."
  tags:
    - incident-management
    - servicenow
    - datadog
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: incident-postmortem
      port: 8080
      tools:
        - name: generate-postmortem
          description: "Given a resolved incident number, pull timeline and metrics, create a post-mortem document, and notify stakeholders."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The resolved ServiceNow incident number."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident-full"
              with:
                incident_number: "{{incident_number}}"
            - name: get-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:system.cpu.idle{incident:{{incident_number}}}"
                from: "{{get-incident.opened_at}}"
                to: "{{get-incident.resolved_at}}"
            - name: create-document
              type: call
              call: "sharepoint.create-file"
              with:
                site_id: "engineering_postmortems"
                file_path: "PostMortems/{{incident_number}}_postmortem.md"
                content: "# Post-Mortem: {{incident_number}}\n## Summary\n{{get-incident.short_description}}\n## Impact\nDuration: {{get-incident.business_duration}}. Priority: {{get-incident.priority}}.\n## Timeline\nOpened: {{get-incident.opened_at}}. Resolved: {{get-incident.resolved_at}}.\n## Resolution\n{{get-incident.close_notes}}"
            - name: notify-stakeholders
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "engineering"
                channel_id: "post-mortems"
                text: "Post-Mortem Ready — {{incident_number}}: {{get-incident.short_description}}. Duration: {{get-incident.business_duration}}. Document: {{create-document.url}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident-full
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: create-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.

naftiko: "0.5"
info:
  label: "Infrastructure Capacity Planning Orchestrator"
  description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
  tags:
    - infrastructure
    - planning
    - finance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-infrastructure-capacity-planning-orchestrator
          description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.

naftiko: "0.5"
info:
  label: "IT Change Management Orchestrator"
  description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
  tags:
    - it
    - servicenow
    - operations
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-it-change-management-orchestrator
          description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed IT Change Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a Jira ticket by issue key.

naftiko: "0.5"
info:
  label: "Jira Ticket Viewer"
  description: "Retrieves a Jira ticket by issue key."
  tags:
    - engineering
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-jira
          description: "Retrieves a Jira ticket by issue key."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The jira ticket viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.t-mobile.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              method: GET

Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.

naftiko: "0.5"
info:
  label: "Knowledge Base Refresh Orchestrator"
  description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
  tags:
    - knowledge-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: knowledge-management
      port: 8080
      tools:
        - name: run-knowledge-base-refresh-orchestrator
          description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Orchestrator"
  description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
  tags:
    - marketing
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: run-marketing-campaign-performance-orchestrator
          description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a new lead is captured in HubSpot, enriches with ZoomInfo company data, syncs to Salesforce, and alerts the sales team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Marketing Lead Enrichment Pipeline"
  description: "When a new lead is captured in HubSpot, enriches with ZoomInfo company data, syncs to Salesforce, and alerts the sales team in Microsoft Teams."
  tags:
    - marketing
    - lead-generation
    - hubspot
    - zoominfo
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: lead-enrichment
      port: 8080
      tools:
        - name: enrich-and-route-lead
          description: "Given a HubSpot contact ID, enrich with ZoomInfo data, create or update the Salesforce lead, and notify the assigned sales rep."
          inputParameters:
            - name: hubspot_contact_id
              in: body
              type: string
              description: "The HubSpot contact ID for the new lead."
          steps:
            - name: get-contact
              type: call
              call: "hubspot.get-contact"
              with:
                contact_id: "{{hubspot_contact_id}}"
            - name: enrich-company
              type: call
              call: "zoominfo.search-company"
              with:
                company_name: "{{get-contact.company}}"
                domain: "{{get-contact.website}}"
            - name: create-sf-lead
              type: call
              call: "salesforce.create-lead"
              with:
                first_name: "{{get-contact.firstname}}"
                last_name: "{{get-contact.lastname}}"
                company: "{{get-contact.company}}"
                email: "{{get-contact.email}}"
                employee_count: "{{enrich-company.employee_count}}"
                industry: "{{enrich-company.industry}}"
                revenue: "{{enrich-company.revenue}}"
            - name: notify-sales
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "b2b-sales"
                channel_id: "new-leads"
                text: "New Lead: {{get-contact.firstname}} {{get-contact.lastname}} at {{get-contact.company}}. Industry: {{enrich-company.industry}}. Employees: {{enrich-company.employee_count}}. Revenue: ${{enrich-company.revenue}}. SF Lead: {{create-sf-lead.id}}."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com/search"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: companies
          path: "/company"
          operations:
            - name: search-company
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Sends a message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Message Sender"
  description: "Sends a message to a Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-microsoft
          description: "Sends a message to a Microsoft Teams channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The microsoft teams message sender identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.t-mobile.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Pulls cell site traffic data from Ericsson ENM, correlates with Datadog infrastructure metrics, and generates a capacity report posted to the network planning Teams channel.

naftiko: "0.5"
info:
  label: "Network Capacity Planning Orchestrator"
  description: "Pulls cell site traffic data from Ericsson ENM, correlates with Datadog infrastructure metrics, and generates a capacity report posted to the network planning Teams channel."
  tags:
    - network-ops
    - capacity-planning
    - ericsson
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: capacity-planning
      port: 8080
      tools:
        - name: generate-capacity-report
          description: "Given a market region code, pull cell site traffic, correlate with infrastructure metrics, and post a capacity summary."
          inputParameters:
            - name: market_code
              in: body
              type: string
              description: "The T-Mobile market region code (e.g., SEA, LAX, NYC)."
            - name: time_range
              in: body
              type: string
              description: "The analysis time range (e.g., last_7d, last_30d)."
          steps:
            - name: get-traffic-data
              type: call
              call: "ericsson.get-market-traffic"
              with:
                market: "{{market_code}}"
                period: "{{time_range}}"
            - name: get-infra-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:network.cell.utilization{market:{{market_code}}}"
                from: "{{time_range}}"
            - name: post-report
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "network-planning"
                channel_id: "capacity-reports"
                text: "Capacity Report — Market {{market_code}} ({{time_range}}): Peak utilization: {{get-infra-metrics.avg_latency_ms}}%. Total sites: {{get-traffic-data.site_count}}. Sites above 80%: {{get-traffic-data.congested_count}}. Avg throughput: {{get-traffic-data.avg_throughput_mbps}} Mbps."
  consumes:
    - type: http
      namespace: ericsson
      baseUri: "https://enm.tmobile-network.com/oss/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ericsson_enm_token"
      resources:
        - name: market-traffic
          path: "/performance/market/{{market}}?period={{period}}"
          inputParameters:
            - name: market
              in: path
            - name: period
              in: query
          operations:
            - name: get-market-traffic
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Checks the operational status of a network element.

naftiko: "0.5"
info:
  label: "Network Element Status"
  description: "Checks the operational status of a network element."
  tags:
    - network
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: get-network
          description: "Checks the operational status of a network element."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The network element status identifier."
          call: "network-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: network-api
      baseUri: "https://api.t-mobile.com/network/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: network
          path: "/network/element/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-network
              method: GET

Queries Datadog for real-time network performance metrics by hostname, and if degradation is detected posts an alert to the NOC Microsoft Teams channel with metric details.

naftiko: "0.5"
info:
  label: "Network Metrics Alert Pipeline"
  description: "Queries Datadog for real-time network performance metrics by hostname, and if degradation is detected posts an alert to the NOC Microsoft Teams channel with metric details."
  tags:
    - monitoring
    - datadog
    - network-ops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: network-monitoring
      port: 8080
      tools:
        - name: check-network-metrics
          description: "Query Datadog for network performance metrics by hostname and alert the NOC team in Teams if thresholds are breached."
          inputParameters:
            - name: hostname_pattern
              in: body
              type: string
              description: "Hostname or wildcard pattern for the network device (e.g., core-rtr-sea-*)."
            - name: time_range
              in: body
              type: string
              description: "Time range for the query (e.g., last_1h, last_24h)."
          steps:
            - name: get-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:system.net.bytes_rcvd{host:{{hostname_pattern}}}"
                from: "{{time_range}}"
            - name: notify-noc
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "noc-operations"
                channel_id: "metrics-alerts"
                text: "Network Metrics Alert — Host: {{hostname_pattern}} ({{time_range}}): Avg latency: {{get-metrics.avg_latency_ms}}ms. Packet loss: {{get-metrics.packet_loss_pct}}%."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

On detection of a network outage signal, fetches affected cell site status from Ericsson ENM, checks Datadog for correlated metrics, opens a ServiceNow P1 incident, and alerts the NOC channel in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Network Outage Triage Orchestrator"
  description: "On detection of a network outage signal, fetches affected cell site status from Ericsson ENM, checks Datadog for correlated metrics, opens a ServiceNow P1 incident, and alerts the NOC channel in Microsoft Teams."
  tags:
    - network-ops
    - incident-management
    - ericsson
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: network-triage
      port: 8080
      tools:
        - name: triage-network-outage
          description: "Given an affected cell site ID and outage description, pull site status, check monitoring metrics, open a P1 incident, and notify the NOC team."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The affected cell site identifier."
            - name: outage_description
              in: body
              type: string
              description: "A brief description of the detected outage symptoms."
            - name: severity
              in: body
              type: string
              description: "Outage severity level (P1, P2, P3)."
          steps:
            - name: get-site-status
              type: call
              call: "ericsson.get-site"
              with:
                site_id: "{{site_id}}"
            - name: get-site-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:network.cell.availability{site_id:{{site_id}}}"
                from: "last_1h"
            - name: open-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Network Outage: Site {{site_id}} — {{outage_description}}"
                urgency: "1"
                impact: "1"
                category: "network"
                assigned_group: "NOC_Tier2"
                description: "Site {{site_id}} reported outage. Status: {{get-site-status.operational_status}}. Availability metric: {{get-site-metrics.avg_latency_ms}}. Severity: {{severity}}."
            - name: notify-noc
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "noc-operations"
                channel_id: "critical-alerts"
                text: "P1 NETWORK OUTAGE — Site {{site_id}}: {{outage_description}}. Incident {{open-incident.number}} opened. Site status: {{get-site-status.operational_status}}. Alarms: {{get-site-status.active_alarms}}."
  consumes:
    - type: http
      namespace: ericsson
      baseUri: "https://enm.tmobile-network.com/oss/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ericsson_enm_token"
      resources:
        - name: managed-elements
          path: "/managed-elements/{{site_id}}"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: get-site
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Generates network performance reviews by aggregating metrics, identifying degradations, and distributing reports.

naftiko: "0.5"
info:
  label: "Network Performance Review Orchestrator"
  description: "Generates network performance reviews by aggregating metrics, identifying degradations, and distributing reports."
  tags:
    - network
    - analytics
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: run-network-performance-review-orchestrator
          description: "Generates network performance reviews by aggregating metrics, identifying degradations, and distributing reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Network Performance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Handles network security incidents by detecting threats, isolating affected segments, and documenting response.

naftiko: "0.5"
info:
  label: "Network Security Incident Orchestrator"
  description: "Handles network security incidents by detecting threats, isolating affected segments, and documenting response."
  tags:
    - security
    - network
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-network-security-incident-orchestrator
          description: "Handles network security incidents by detecting threats, isolating affected segments, and documenting response."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Network Security Incident Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries SolarWinds Orion for a network node's health, and if CPU or memory exceeds thresholds creates a ServiceNow incident and alerts the network engineering team in Teams.

naftiko: "0.5"
info:
  label: "Node Health Check and Escalation"
  description: "Queries SolarWinds Orion for a network node's health, and if CPU or memory exceeds thresholds creates a ServiceNow incident and alerts the network engineering team in Teams."
  tags:
    - monitoring
    - solarwinds
    - network-ops
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: node-monitoring
      port: 8080
      tools:
        - name: check-and-escalate-node
          description: "Check a SolarWinds node by hostname, create a ServiceNow incident if degraded, and notify the network engineering team."
          inputParameters:
            - name: hostname
              in: body
              type: string
              description: "The network device hostname as registered in SolarWinds."
          steps:
            - name: get-node
              type: call
              call: "solarwinds.get-node"
              with:
                hostname: "{{hostname}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Node Health Alert: {{hostname}} — CPU: {{get-node.cpu_load}}%, Memory: {{get-node.memory_used_pct}}%"
                category: "network"
                assigned_group: "Network_Engineering"
                description: "Node {{hostname}} status: {{get-node.status}}. CPU load: {{get-node.cpu_load}}%. Memory used: {{get-node.memory_used_pct}}%."
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "network-engineering"
                channel_id: "node-alerts"
                text: "Node Alert — {{hostname}}: Status: {{get-node.status}}. CPU: {{get-node.cpu_load}}%. Memory: {{get-node.memory_used_pct}}%. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.tmobile-network.com:17778/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query?query=SELECT+Status,CPULoad,PercentMemoryUsed+FROM+Orion.Nodes+WHERE+Caption='{{hostname}}'"
          inputParameters:
            - name: hostname
              in: query
          operations:
            - name: get-node
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Processes a number port-in request by validating the number, creating the port order in the activation system, updating Salesforce, and notifying the customer and retail rep.

naftiko: "0.5"
info:
  label: "Number Porting Request Orchestrator"
  description: "Processes a number port-in request by validating the number, creating the port order in the activation system, updating Salesforce, and notifying the customer and retail rep."
  tags:
    - customer-management
    - porting
    - salesforce
    - adobe-campaign
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: number-porting
      port: 8080
      tools:
        - name: process-port-in
          description: "Given a phone number, account ID, and carrier details, submit a port-in request, update CRM, and send notifications."
          inputParameters:
            - name: porting_number
              in: body
              type: string
              description: "The phone number being ported in E.164 format."
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: losing_carrier
              in: body
              type: string
              description: "The current carrier name."
            - name: account_number
              in: body
              type: string
              description: "The customer's account number with the losing carrier."
          steps:
            - name: submit-port-request
              type: call
              call: "activation-api.submit-port"
              with:
                msisdn: "{{porting_number}}"
                losing_carrier: "{{losing_carrier}}"
                losing_account: "{{account_number}}"
            - name: get-account
              type: call
              call: "salesforce.get-account-by-id"
              with:
                account_id: "{{account_id}}"
            - name: update-crm
              type: call
              call: "salesforce.create-port-record"
              with:
                account_id: "{{account_id}}"
                msisdn: "{{porting_number}}"
                port_order_id: "{{submit-port-request.order_id}}"
                status: "submitted"
                losing_carrier: "{{losing_carrier}}"
            - name: send-confirmation
              type: call
              call: "adobe-campaign.trigger-message"
              with:
                template: "port_in_submitted"
                email: "{{get-account.PersonEmail}}"
                params:
                  customer_name: "{{get-account.Name}}"
                  porting_number: "{{porting_number}}"
                  order_id: "{{submit-port-request.order_id}}"
                  estimated_date: "{{submit-port-request.estimated_completion}}"
  consumes:
    - type: http
      namespace: activation-api
      baseUri: "https://activation-api.tmobile-network.com/v2"
      authentication:
        type: bearer
        token: "$secrets.activation_api_token"
      resources:
        - name: port-requests
          path: "/port-in"
          operations:
            - name: submit-port
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.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-by-id
              method: GET
        - name: port-records
          path: "/sobjects/Port_Request__c"
          operations:
            - name: create-port-record
              method: POST
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/tmobile/campaign/v1"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: transactional-messages
          path: "/messageCenter/{{template}}/send"
          inputParameters:
            - name: template
              in: path
          operations:
            - name: trigger-message
              method: POST

Generates marketing copy using OpenAI GPT, reviews it against brand guidelines stored in SharePoint, and posts the draft to the marketing team's Teams channel for approval.

naftiko: "0.5"
info:
  label: "OpenAI Content Generation for Marketing"
  description: "Generates marketing copy using OpenAI GPT, reviews it against brand guidelines stored in SharePoint, and posts the draft to the marketing team's Teams channel for approval."
  tags:
    - marketing
    - content
    - openai
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: content-generation
      port: 8080
      tools:
        - name: generate-marketing-copy
          description: "Given a campaign brief, generate marketing copy with AI, cross-reference brand guidelines, and share for review."
          inputParameters:
            - name: campaign_brief
              in: body
              type: string
              description: "A description of the campaign and target audience."
            - name: content_type
              in: body
              type: string
              description: "The type of content (email, social_post, landing_page, sms)."
            - name: tone
              in: body
              type: string
              description: "Desired tone (bold, friendly, professional, urgent)."
          steps:
            - name: generate-copy
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4"
                prompt: "Write T-Mobile {{content_type}} copy. Brief: {{campaign_brief}}. Tone: {{tone}}. Brand voice: bold, confident, customer-first. Include a clear call to action."
            - name: get-guidelines
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "marketing_brand"
                file_path: "Guidelines/brand-voice-guide.md"
            - name: post-for-review
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "marketing"
                channel_id: "content-review"
                text: "AI-Generated {{content_type}} Draft for Review:\n\nBrief: {{campaign_brief}}\nTone: {{tone}}\n\nGenerated Copy:\n{{generate-copy.text}}\n\nPlease review against brand guidelines and approve or suggest edits."
  consumes:
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Onboards new technology partners by provisioning API access, configuring integrations, and validating connectivity.

naftiko: "0.5"
info:
  label: "Partner Integration Orchestrator"
  description: "Onboards new technology partners by provisioning API access, configuring integrations, and validating connectivity."
  tags:
    - partnerships
    - engineering
    - api
capability:
  exposes:
    - type: mcp
      namespace: partnerships
      port: 8080
      tools:
        - name: run-partner-integration-orchestrator
          description: "Onboards new technology partners by provisioning API access, configuring integrations, and validating connectivity."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Partner Integration Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Assigns a Pluralsight learning path to a team by looking up members in Workday, creating assignments in Pluralsight, and notifying the team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Pluralsight Learning Path Assignment"
  description: "Assigns a Pluralsight learning path to a team by looking up members in Workday, creating assignments in Pluralsight, and notifying the team in Microsoft Teams."
  tags:
    - learning
    - pluralsight
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: learning-management
      port: 8080
      tools:
        - name: assign-learning-path
          description: "Given a Workday team ID and Pluralsight channel ID, assign the learning path to all team members and notify them."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Workday supervisory org ID for the team."
            - name: channel_id
              in: body
              type: string
              description: "The Pluralsight channel/path ID."
            - name: due_date
              in: body
              type: string
              description: "Assignment due date in YYYY-MM-DD format."
          steps:
            - name: get-team-members
              type: call
              call: "workday.get-team"
              with:
                org_id: "{{team_id}}"
            - name: create-assignment
              type: call
              call: "pluralsight.assign-channel"
              with:
                channel_id: "{{channel_id}}"
                user_emails: "{{get-team-members.emails}}"
                due_date: "{{due_date}}"
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "{{team_id}}"
                channel_id: "general"
                text: "New Learning Assignment: A Pluralsight learning path has been assigned to your team. Due by {{due_date}}. {{create-assignment.assigned_count}} team members enrolled. Start here: {{create-assignment.channel_url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/tmobile"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: teams
          path: "/supervisoryOrganizations/{{org_id}}/workers"
          inputParameters:
            - name: org_id
              in: path
          operations:
            - name: get-team
              method: GET
    - type: http
      namespace: pluralsight
      baseUri: "https://app.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: channel-assignments
          path: "/channels/{{channel_id}}/assignments"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: assign-channel
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Triggers a Power BI dataset refresh.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresher"
  description: "Triggers a Power BI dataset refresh."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-power
          description: "Triggers a Power BI dataset refresh."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The power bi dashboard refresher identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.t-mobile.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.

naftiko: "0.5"
info:
  label: "Procurement Spend Analysis Orchestrator"
  description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
  tags:
    - procurement
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-procurement-spend-analysis-orchestrator
          description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Fetches active Prometheus alerts filtered by severity, creates a ServiceNow incident for critical batches, and posts a digest summary to the NOC Teams channel.

naftiko: "0.5"
info:
  label: "Prometheus Alert Digest and Notification"
  description: "Fetches active Prometheus alerts filtered by severity, creates a ServiceNow incident for critical batches, and posts a digest summary to the NOC Teams channel."
  tags:
    - monitoring
    - prometheus
    - network-ops
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: alert-monitoring
      port: 8080
      tools:
        - name: process-active-alerts
          description: "Query Prometheus for active alerts by severity, batch-create a ServiceNow incident, and post a summary to the NOC channel."
          inputParameters:
            - name: severity
              in: body
              type: string
              description: "Alert severity to filter (critical, warning, info)."
          steps:
            - name: get-alerts
              type: call
              call: "prometheus.get-alerts"
              with:
                filter: "severity={{severity}}"
            - name: create-batch-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Prometheus Alert Batch: {{get-alerts.alert_count}} {{severity}} alerts"
                category: "monitoring"
                assigned_group: "NOC_Tier1"
                description: "{{get-alerts.alert_count}} active {{severity}} alerts detected in Prometheus Alertmanager. Review and triage required."
            - name: notify-noc
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "noc-operations"
                channel_id: "alert-digests"
                text: "Prometheus Alert Digest — {{get-alerts.alert_count}} {{severity}} alerts active. Incident: {{create-batch-incident.number}}. Please review and assign."
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://alertmanager.tmobile-infra.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: alerts
          path: "/alerts?filter={{filter}}"
          inputParameters:
            - name: filter
              in: query
          operations:
            - name: get-alerts
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.

naftiko: "0.5"
info:
  label: "Quarterly Business Review Orchestrator"
  description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
  tags:
    - analytics
    - business
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-quarterly-business-review-orchestrator
          description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries SAP for real-time device inventory levels at a T-Mobile retail store by store code and SKU, used by retail operations to check stock availability.

naftiko: "0.5"
info:
  label: "Retail Store Inventory Check"
  description: "Queries SAP for real-time device inventory levels at a T-Mobile retail store by store code and SKU, used by retail operations to check stock availability."
  tags:
    - retail
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: retail-inventory
      port: 8080
      tools:
        - name: check-store-inventory
          description: "Look up device inventory at a T-Mobile retail store by store code and SKU. Returns quantity on hand, reserved units, and reorder status."
          inputParameters:
            - name: store_code
              in: body
              type: string
              description: "The T-Mobile retail store code (e.g., TMUS-SEA-0312)."
            - name: sku
              in: body
              type: string
              description: "The device SKU to check."
          call: "sap.get-inventory"
          with:
            plant: "{{store_code}}"
            material: "{{sku}}"
          outputParameters:
            - name: quantity_on_hand
              type: integer
              mapping: "$.d.AvailableStock"
            - name: reserved_qty
              type: integer
              mapping: "$.d.ReservedStock"
            - name: reorder_point
              type: integer
              mapping: "$.d.ReorderPoint"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tmobile-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Plant='{{plant}}',Material='{{material}}')"
          inputParameters:
            - name: plant
              in: path
            - name: material
              in: path
          operations:
            - name: get-inventory
              method: GET

Aggregates retail store performance by pulling sales data from Salesforce, foot traffic from Google Analytics, and inventory levels from SAP, then posts a daily summary to the retail ops Teams channel.

naftiko: "0.5"
info:
  label: "Retail Store Performance Dashboard Orchestrator"
  description: "Aggregates retail store performance by pulling sales data from Salesforce, foot traffic from Google Analytics, and inventory levels from SAP, then posts a daily summary to the retail ops Teams channel."
  tags:
    - retail
    - sales
    - salesforce
    - google-analytics
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: retail-performance
      port: 8080
      tools:
        - name: generate-store-dashboard
          description: "Given a store code and date, aggregate sales, traffic, and inventory metrics and post a performance summary to Teams."
          inputParameters:
            - name: store_code
              in: body
              type: string
              description: "The T-Mobile retail store code."
            - name: report_date
              in: body
              type: string
              description: "The report date in YYYY-MM-DD format."
          steps:
            - name: get-sales-data
              type: call
              call: "salesforce.get-store-sales"
              with:
                store_code: "{{store_code}}"
                date: "{{report_date}}"
            - name: get-traffic
              type: call
              call: "google-analytics.run-report"
              with:
                property_id: "properties/123456789"
                store_filter: "{{store_code}}"
                start_date: "{{report_date}}"
                end_date: "{{report_date}}"
            - name: get-inventory-snapshot
              type: call
              call: "sap.get-plant-inventory"
              with:
                plant: "{{store_code}}"
            - name: post-dashboard
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "retail-operations"
                channel_id: "daily-dashboards"
                text: "Store {{store_code}} — {{report_date}}: Activations: {{get-sales-data.activation_count}}, Upgrades: {{get-sales-data.upgrade_count}}, Revenue: ${{get-sales-data.total_revenue}}. Walk-ins: {{get-traffic.total_sessions}}. Top device in stock: {{get-inventory-snapshot.top_sku}} ({{get-inventory-snapshot.top_sku_qty}} units)."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: store-sales
          path: "/query?q=SELECT+Activation_Count__c,Upgrade_Count__c,Total_Revenue__c+FROM+Store_Sales__c+WHERE+Store_Code__c='{{store_code}}'+AND+Sale_Date__c={{date}}"
          inputParameters:
            - name: store_code
              in: query
            - name: date
              in: query
          operations:
            - name: get-store-sales
              method: GET
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://tmobile-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: plant-inventory
          path: "/A_MatlStkInAcctMod?$filter=Plant eq '{{plant}}'"
          inputParameters:
            - name: plant
              in: query
          operations:
            - name: get-plant-inventory
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Manages roaming agreements by tracking partner usage, calculating settlements, and generating invoices.

naftiko: "0.5"
info:
  label: "Roaming Agreement Orchestrator"
  description: "Manages roaming agreements by tracking partner usage, calculating settlements, and generating invoices."
  tags:
    - partnerships
    - finance
    - billing
capability:
  exposes:
    - type: mcp
      namespace: partnerships
      port: 8080
      tools:
        - name: run-roaming-agreement-orchestrator
          description: "Manages roaming agreements by tracking partner usage, calculating settlements, and generating invoices."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Roaming Agreement Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes roaming settlement by pulling inter-operator usage from the billing system, validating against partner rates in Salesforce, generating a settlement statement, and notifying the wholesale finance team.

naftiko: "0.5"
info:
  label: "Roaming Partner Settlement Orchestrator"
  description: "Processes roaming settlement by pulling inter-operator usage from the billing system, validating against partner rates in Salesforce, generating a settlement statement, and notifying the wholesale finance team."
  tags:
    - wholesale
    - roaming
    - oracle-e-business-suite
    - salesforce
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: roaming-settlement
      port: 8080
      tools:
        - name: process-roaming-settlement
          description: "Given a roaming partner ID and settlement period, pull usage, validate rates, create the settlement document, and notify finance."
          inputParameters:
            - name: partner_id
              in: body
              type: string
              description: "The Salesforce roaming partner account ID."
            - name: settlement_period
              in: body
              type: string
              description: "The settlement period in YYYY-MM format."
          steps:
            - name: get-partner
              type: call
              call: "salesforce.get-roaming-partner"
              with:
                partner_id: "{{partner_id}}"
            - name: get-usage
              type: call
              call: "oracle-ebs.get-roaming-usage"
              with:
                partner_code: "{{get-partner.Partner_Code__c}}"
                period: "{{settlement_period}}"
            - name: create-statement
              type: call
              call: "sharepoint.create-file"
              with:
                site_id: "wholesale_finance"
                file_path: "Settlements/{{get-partner.Name}}_{{settlement_period}}.md"
                content: "# Roaming Settlement: {{get-partner.Name}}\nPeriod: {{settlement_period}}\nInbound Data: {{get-usage.inbound_data_gb}} GB\nOutbound Data: {{get-usage.outbound_data_gb}} GB\nInbound Voice: {{get-usage.inbound_voice_min}} min\nNet Settlement: ${{get-usage.net_amount}}"
            - name: notify-finance
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "wholesale-finance"
                channel_id: "settlements"
                text: "Roaming Settlement Ready — {{get-partner.Name}} ({{settlement_period}}): Net amount: ${{get-usage.net_amount}}. Document: {{create-statement.url}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: roaming-partners
          path: "/sobjects/Roaming_Partner__c/{{partner_id}}"
          inputParameters:
            - name: partner_id
              in: path
          operations:
            - name: get-roaming-partner
              method: GET
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/roaming/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: roaming-usage
          path: "/usage?partner={{partner_code}}&period={{period}}"
          inputParameters:
            - name: partner_code
              in: query
            - name: period
              in: query
          operations:
            - name: get-roaming-usage
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: create-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves a Salesforce account by account ID.

naftiko: "0.5"
info:
  label: "Salesforce Account Viewer"
  description: "Retrieves a Salesforce account by account ID."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-salesforce
          description: "Retrieves a Salesforce account by account ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The salesforce account viewer identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.t-mobile.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Queries Salesforce for the current B2B sales pipeline by owner, returning total opportunities, weighted revenue, and stage distribution for T-Mobile enterprise sales.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Pipeline Summary"
  description: "Queries Salesforce for the current B2B sales pipeline by owner, returning total opportunities, weighted revenue, and stage distribution for T-Mobile enterprise sales."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-pipeline
      port: 8080
      tools:
        - name: get-pipeline-summary
          description: "Query Salesforce for a sales rep's opportunity pipeline. Returns total open opportunities, weighted pipeline value, and stage breakdown."
          inputParameters:
            - name: owner_id
              in: body
              type: string
              description: "The Salesforce user ID of the sales rep."
          call: "salesforce.query-pipeline"
          with:
            owner_id: "{{owner_id}}"
          outputParameters:
            - name: total_opportunities
              type: integer
              mapping: "$.totalSize"
            - name: records
              type: array
              mapping: "$.records"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: pipeline-query
          path: "/query?q=SELECT+StageName,Amount,CloseDate,Name+FROM+Opportunity+WHERE+OwnerId='{{owner_id}}'+AND+IsClosed=false"
          inputParameters:
            - name: owner_id
              in: query
          operations:
            - name: query-pipeline
              method: GET

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: "0.5"
info:
  label: "Security Audit Orchestrator"
  description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
  tags:
    - security
    - servicenow
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-security-audit-orchestrator
          description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Security Audit Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Triggers a vulnerability scan assessment, pulls findings from Palo Alto Prisma Cloud, opens ServiceNow security incidents for critical findings, and alerts the security ops team in Teams.

naftiko: "0.5"
info:
  label: "Security Vulnerability Scan Orchestrator"
  description: "Triggers a vulnerability scan assessment, pulls findings from Palo Alto Prisma Cloud, opens ServiceNow security incidents for critical findings, and alerts the security ops team in Teams."
  tags:
    - security
    - vulnerability
    - palo-alto-networks
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vuln-management
      port: 8080
      tools:
        - name: process-vuln-findings
          description: "Given a cloud account ID, pull critical vulnerability findings, create security incidents, and notify the security operations team."
          inputParameters:
            - name: cloud_account_id
              in: body
              type: string
              description: "The cloud account identifier to scan."
            - name: severity_threshold
              in: body
              type: string
              description: "Minimum severity to report (critical, high, medium)."
          steps:
            - name: get-findings
              type: call
              call: "prisma-cloud.get-alerts"
              with:
                account_id: "{{cloud_account_id}}"
                severity: "{{severity_threshold}}"
            - name: open-security-incident
              type: call
              call: "servicenow.create-security-incident"
              with:
                short_description: "Vuln Scan: {{get-findings.total_count}} {{severity_threshold}}+ findings in {{cloud_account_id}}"
                category: "vulnerability"
                severity: "2"
                assigned_group: "Security_Operations"
                description: "Cloud account {{cloud_account_id}} has {{get-findings.total_count}} findings at {{severity_threshold}} or above. Top finding: {{get-findings.top_alert_rule}}. Affected resources: {{get-findings.affected_resource_count}}."
            - name: notify-secops
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "security-operations"
                channel_id: "vulnerability-alerts"
                text: "Vuln Alert — Account {{cloud_account_id}}: {{get-findings.total_count}} {{severity_threshold}}+ findings. Top: {{get-findings.top_alert_rule}}. Incident: {{open-security-incident.number}}."
  consumes:
    - type: http
      namespace: prisma-cloud
      baseUri: "https://api.prismacloud.io"
      authentication:
        type: bearer
        token: "$secrets.prisma_cloud_token"
      resources:
        - name: alerts
          path: "/alert?alert.status=open&cloud.accountId={{account_id}}&policy.severity={{severity}}"
          inputParameters:
            - name: account_id
              in: query
            - name: severity
              in: query
          operations:
            - name: get-alerts
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: security-incidents
          path: "/table/sn_si_incident"
          operations:
            - name: create-security-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Queries Dynatrace for the health status of a named service, and if the service is degraded opens a ServiceNow incident and notifies the platform team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Service Health Check and Incident Creator"
  description: "Queries Dynatrace for the health status of a named service, and if the service is degraded opens a ServiceNow incident and notifies the platform team in Microsoft Teams."
  tags:
    - monitoring
    - dynatrace
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: apm-monitoring
      port: 8080
      tools:
        - name: check-service-health
          description: "Check a Dynatrace service by name, open a ServiceNow incident if degraded, and notify the platform team in Teams."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Dynatrace service display name (e.g., tmobile-app-gateway)."
          steps:
            - name: get-service
              type: call
              call: "dynatrace.get-service"
              with:
                service_name: "{{service_name}}"
            - name: open-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Service Degradation: {{service_name}} — {{get-service.health_status}}"
                category: "application"
                assigned_group: "Platform_Engineering"
                description: "Service {{service_name}} health: {{get-service.health_status}}. Response time: {{get-service.response_time_ms}}ms. Failure rate: {{get-service.failure_rate}}%."
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "platform-engineering"
                channel_id: "service-alerts"
                text: "Service Alert — {{service_name}}: Status: {{get-service.health_status}}. Response time: {{get-service.response_time_ms}}ms. Failure rate: {{get-service.failure_rate}}%. Incident: {{open-incident.number}}."
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://tmobile.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: entities
          path: "/entities?entitySelector=type(SERVICE),entityName({{service_name}})"
          inputParameters:
            - name: service_name
              in: query
          operations:
            - name: get-service
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Creates a new incident in ServiceNow.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Creator"
  description: "Creates a new incident in ServiceNow."
  tags:
    - it
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: get-servicenow
          description: "Creates a new incident in ServiceNow."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The servicenow incident creator identifier."
          call: "it-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: it-api
      baseUri: "https://api.t-mobile.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Retrieves a ServiceNow incident by number, returning priority, assignment group, state, and resolution notes for T-Mobile IT operations.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number, returning priority, assignment group, state, and resolution notes for T-Mobile IT operations."
  tags:
    - it-ops
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-incidents
      port: 8080
      tools:
        - name: get-incident
          description: "Fetch a ServiceNow incident by incident number. Returns state, priority, assigned group, short description, and resolution notes."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
            - name: short_description
              type: string
              mapping: "$.result.short_description"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tmobile.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Activates a new SIM card by provisioning the line in the network activation system, updating the customer record in Salesforce, adjusting billing in Oracle EBS, and sending an activation confirmation via Adobe Campaign.

naftiko: "0.5"
info:
  label: "SIM Activation Orchestrator"
  description: "Activates a new SIM card by provisioning the line in the network activation system, updating the customer record in Salesforce, adjusting billing in Oracle EBS, and sending an activation confirmation via Adobe Campaign."
  tags:
    - customer-management
    - activation
    - salesforce
    - oracle-e-business-suite
    - adobe-campaign
capability:
  exposes:
    - type: mcp
      namespace: sim-activation
      port: 8080
      tools:
        - name: activate-sim
          description: "Given an ICCID, MSISDN, and account ID, provision the line, update CRM, set up billing, and send confirmation."
          inputParameters:
            - name: iccid
              in: body
              type: string
              description: "The SIM card ICCID (19-20 digits)."
            - name: msisdn
              in: body
              type: string
              description: "The phone number to assign in E.164 format."
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: plan
              in: body
              type: string
              description: "The rate plan to activate (e.g., Go5G Plus)."
          steps:
            - name: provision-line
              type: call
              call: "activation-api.provision"
              with:
                iccid: "{{iccid}}"
                msisdn: "{{msisdn}}"
                plan_code: "{{plan}}"
            - name: update-crm
              type: call
              call: "salesforce.create-subscriber-line"
              with:
                account_id: "{{account_id}}"
                msisdn: "{{msisdn}}"
                iccid: "{{iccid}}"
                plan: "{{plan}}"
                activation_date: "{{provision-line.activation_date}}"
            - name: setup-billing
              type: call
              call: "oracle-ebs.create-subscription"
              with:
                account_id: "{{account_id}}"
                msisdn: "{{msisdn}}"
                plan: "{{plan}}"
                start_date: "{{provision-line.activation_date}}"
            - name: send-confirmation
              type: call
              call: "adobe-campaign.trigger-message"
              with:
                template: "sim_activation_welcome"
                email: "{{update-crm.contact_email}}"
                params:
                  msisdn: "{{msisdn}}"
                  plan: "{{plan}}"
  consumes:
    - type: http
      namespace: activation-api
      baseUri: "https://activation-api.tmobile-network.com/v2"
      authentication:
        type: bearer
        token: "$secrets.activation_api_token"
      resources:
        - name: provisions
          path: "/lines/provision"
          operations:
            - name: provision
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: subscriber-lines
          path: "/sobjects/Subscriber_Line__c"
          operations:
            - name: create-subscriber-line
              method: POST
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/billing/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: subscriptions
          path: "/subscriptions"
          operations:
            - name: create-subscription
              method: POST
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/tmobile/campaign/v1"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: transactional-messages
          path: "/messageCenter/{{template}}/send"
          inputParameters:
            - name: template
              in: path
          operations:
            - name: trigger-message
              method: POST

Sends a notification to a Slack channel.

naftiko: "0.5"
info:
  label: "Slack Notification Publisher"
  description: "Sends a notification to a Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-slack
          description: "Sends a notification to a Slack channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The slack notification publisher identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.t-mobile.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: slack
          path: "/slack/notification/publisher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-slack
              method: GET

Runs an analytics query against the Snowflake data warehouse.

naftiko: "0.5"
info:
  label: "Snowflake Analytics Query"
  description: "Runs an analytics query against the Snowflake data warehouse."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-snowflake
          description: "Runs an analytics query against the Snowflake data warehouse."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The snowflake analytics query identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.t-mobile.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

When a negative social media mention is detected, retrieves the post from Twitter, logs it in Salesforce as a case, and notifies the social care team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Social Media Mention Monitor"
  description: "When a negative social media mention is detected, retrieves the post from Twitter, logs it in Salesforce as a case, and notifies the social care team in Microsoft Teams."
  tags:
    - social-media
    - customer-management
    - twitter
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: social-care
      port: 8080
      tools:
        - name: handle-negative-mention
          description: "Given a tweet ID and sentiment score, fetch the tweet, create a Salesforce social care case, and alert the social team."
          inputParameters:
            - name: tweet_id
              in: body
              type: string
              description: "The Twitter/X tweet ID."
            - name: sentiment_score
              in: body
              type: number
              description: "Sentiment score (-1.0 to 1.0, negative indicates negative sentiment)."
          steps:
            - name: get-tweet
              type: call
              call: "twitter.get-tweet"
              with:
                tweet_id: "{{tweet_id}}"
            - name: create-social-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Social Mention: @{{get-tweet.author_username}} — Sentiment {{sentiment_score}}"
                description: "Tweet: {{get-tweet.text}}. Author: @{{get-tweet.author_username}} ({{get-tweet.author_followers}} followers). Sentiment: {{sentiment_score}}. URL: https://twitter.com/{{get-tweet.author_username}}/status/{{tweet_id}}."
                type: "Social_Care"
                priority: "High"
            - name: notify-social-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "social-care"
                channel_id: "escalations"
                text: "Negative Mention from @{{get-tweet.author_username}} ({{get-tweet.author_followers}} followers): \"{{get-tweet.text}}\". Sentiment: {{sentiment_score}}. Case: {{create-social-case.id}}."
  consumes:
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_bearer_token"
      resources:
        - name: tweets
          path: "/tweets/{{tweet_id}}?expansions=author_id&tweet.fields=text,created_at&user.fields=username,public_metrics"
          inputParameters:
            - name: tweet_id
              in: path
          operations:
            - name: get-tweet
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.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: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Views spectrum band allocation details.

naftiko: "0.5"
info:
  label: "Spectrum Band Allocation Viewer"
  description: "Views spectrum band allocation details."
  tags:
    - network
    - spectrum
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: get-spectrum
          description: "Views spectrum band allocation details."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The spectrum band allocation viewer identifier."
          call: "network-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: network-api
      baseUri: "https://api.t-mobile.com/network/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: spectrum
          path: "/spectrum/band/allocation/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-spectrum
              method: GET

Plans spectrum refarming by analyzing usage patterns, modeling reallocation, and coordinating tower updates.

naftiko: "0.5"
info:
  label: "Spectrum Refarming Orchestrator"
  description: "Plans spectrum refarming by analyzing usage patterns, modeling reallocation, and coordinating tower updates."
  tags:
    - network
    - spectrum
    - planning
capability:
  exposes:
    - type: mcp
      namespace: network
      port: 8080
      tools:
        - name: run-spectrum-refarming-orchestrator
          description: "Plans spectrum refarming by analyzing usage patterns, modeling reallocation, and coordinating tower updates."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Spectrum Refarming Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves data usage summary for a subscriber.

naftiko: "0.5"
info:
  label: "Subscriber Usage Summary"
  description: "Retrieves data usage summary for a subscriber."
  tags:
    - billing
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: billing
      port: 8080
      tools:
        - name: get-subscriber
          description: "Retrieves data usage summary for a subscriber."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The subscriber usage summary identifier."
          call: "billing-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://api.t-mobile.com/billing/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: subscriber
          path: "/subscriber/usage/summary/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-subscriber
              method: GET

Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Collection Orchestrator"
  description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
  tags:
    - sustainability
    - analytics
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: run-sustainability-metrics-collection-orchestrator
          description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates telecom workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Telecom Workflow 1"
  description: "Orchestrates telecom workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - telecom
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: telecom
      port: 8080
      tools:
        - name: run-telecom-workflow-001
          description: "Orchestrates telecom workflow 1 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Telecom Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates telecom workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Telecom Workflow 2"
  description: "Orchestrates telecom workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - telecom
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: telecom
      port: 8080
      tools:
        - name: run-telecom-workflow-002
          description: "Orchestrates telecom workflow 2 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Telecom Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves telecom operational data for workflow 3.

naftiko: "0.5"
info:
  label: "Telecom Data Query 3"
  description: "Retrieves telecom operational data for workflow 3."
  tags:
    - telecom
    - operations
capability:
  exposes:
    - type: mcp
      namespace: telecom
      port: 8080
      tools:
        - name: get-data-3
          description: "Query telecom data for workflow 3."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "telecom-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: telecom-api
      baseUri: "https://api.t-mobile.com/telecom/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-3
              method: GET

Orchestrates telecom workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Telecom Workflow 4"
  description: "Orchestrates telecom workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - telecom
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: telecom
      port: 8080
      tools:
        - name: run-telecom-workflow-004
          description: "Orchestrates telecom workflow 4 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Telecom Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates telecom workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Telecom Workflow 5"
  description: "Orchestrates telecom workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - telecom
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: telecom
      port: 8080
      tools:
        - name: run-telecom-workflow-005
          description: "Orchestrates telecom workflow 5 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Telecom Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves the current Terraform Cloud workspace state for a given workspace, showing resource counts and drift status for T-Mobile cloud infrastructure.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure State Query"
  description: "Retrieves the current Terraform Cloud workspace state for a given workspace, showing resource counts and drift status for T-Mobile cloud infrastructure."
  tags:
    - infrastructure
    - terraform
capability:
  exposes:
    - type: mcp
      namespace: infra-state
      port: 8080
      tools:
        - name: get-workspace-state
          description: "Query Terraform Cloud for the current state of a workspace. Returns resource count, last apply status, and any detected drift."
          inputParameters:
            - name: workspace_name
              in: body
              type: string
              description: "The Terraform Cloud workspace name (e.g., tmobile-5g-core-prod)."
          call: "terraform.get-workspace"
          with:
            workspace_name: "{{workspace_name}}"
          outputParameters:
            - name: resource_count
              type: integer
              mapping: "$.data.attributes.resource-count"
            - name: last_apply_status
              type: string
              mapping: "$.data.attributes.current-run.status"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_cloud_token"
      inputParameters:
        - name: Content-Type
          in: header
          value: "application/vnd.api+json"
      resources:
        - name: workspaces
          path: "/organizations/t-mobile/workspaces/{{workspace_name}}"
          inputParameters:
            - name: workspace_name
              in: path
          operations:
            - name: get-workspace
              method: GET

Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.

naftiko: "0.5"
info:
  label: "Third Party Risk Assessment Orchestrator"
  description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
  tags:
    - risk
    - procurement
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: risk
      port: 8080
      tools:
        - name: run-third-party-risk-assessment-orchestrator
          description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

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

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.t-mobile.com/v1"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.t-mobile.com/v2"
      authentication:
        type: bearer
        token: "$secrets.t_mobile_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Sends a templated WhatsApp notification to a T-Mobile customer using the WhatsApp Business API, used for service alerts, appointment reminders, and delivery notifications.

naftiko: "0.5"
info:
  label: "WhatsApp Customer Notification Sender"
  description: "Sends a templated WhatsApp notification to a T-Mobile customer using the WhatsApp Business API, used for service alerts, appointment reminders, and delivery notifications."
  tags:
    - customer-management
    - messaging
    - whatsapp
capability:
  exposes:
    - type: mcp
      namespace: customer-messaging
      port: 8080
      tools:
        - name: send-whatsapp-notification
          description: "Send a templated WhatsApp message to a customer phone number. Returns message ID and delivery status."
          inputParameters:
            - name: phone_number
              in: body
              type: string
              description: "The recipient phone number in E.164 format."
            - name: template_name
              in: body
              type: string
              description: "The WhatsApp message template name."
            - name: template_params
              in: body
              type: object
              description: "Template parameter key-value pairs."
          call: "whatsapp.send-template"
          with:
            phone_number: "{{phone_number}}"
            template_name: "{{template_name}}"
            template_params: "{{template_params}}"
          outputParameters:
            - name: message_id
              type: string
              mapping: "$.messages[0].id"
            - name: status
              type: string
              mapping: "$.messages[0].message_status"
  consumes:
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v18.0/$secrets.whatsapp_phone_id"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-template
              method: POST

Generates a wholesale MVNO partner usage report by pulling usage data from the billing platform, enriching with partner details from Salesforce, and sending the report via email through Adobe Campaign.

naftiko: "0.5"
info:
  label: "Wholesale Partner Usage Report Orchestrator"
  description: "Generates a wholesale MVNO partner usage report by pulling usage data from the billing platform, enriching with partner details from Salesforce, and sending the report via email through Adobe Campaign."
  tags:
    - wholesale
    - billing
    - oracle-e-business-suite
    - salesforce
    - adobe-campaign
capability:
  exposes:
    - type: mcp
      namespace: wholesale-reporting
      port: 8080
      tools:
        - name: generate-partner-usage-report
          description: "Given a partner ID and billing period, pull usage data, enrich with partner details, and email the report."
          inputParameters:
            - name: partner_id
              in: body
              type: string
              description: "The Salesforce wholesale partner account ID."
            - name: billing_period
              in: body
              type: string
              description: "The billing period in YYYY-MM format."
          steps:
            - name: get-partner
              type: call
              call: "salesforce.get-partner-account"
              with:
                partner_id: "{{partner_id}}"
            - name: get-usage
              type: call
              call: "oracle-ebs.get-partner-usage"
              with:
                partner_code: "{{get-partner.Partner_Code__c}}"
                period: "{{billing_period}}"
            - name: send-report
              type: call
              call: "adobe-campaign.trigger-message"
              with:
                template: "wholesale_usage_report"
                email: "{{get-partner.Billing_Contact_Email__c}}"
                params:
                  partner_name: "{{get-partner.Name}}"
                  period: "{{billing_period}}"
                  total_lines: "{{get-usage.active_lines}}"
                  data_usage_gb: "{{get-usage.total_data_gb}}"
                  voice_minutes: "{{get-usage.total_voice_minutes}}"
                  total_amount: "{{get-usage.total_amount}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tmobile.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: partner-accounts
          path: "/sobjects/Partner_Account__c/{{partner_id}}"
          inputParameters:
            - name: partner_id
              in: path
          operations:
            - name: get-partner-account
              method: GET
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ebs.tmobile-finance.com/webservices/rest/wholesale/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: partner-usage
          path: "/usage?partner={{partner_code}}&period={{period}}"
          inputParameters:
            - name: partner_code
              in: query
            - name: period
              in: query
          operations:
            - name: get-partner-usage
              method: GET
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/tmobile/campaign/v1"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: transactional-messages
          path: "/messageCenter/{{template}}/send"
          inputParameters:
            - name: template
              in: path
          operations:
            - name: trigger-message
              method: POST

Retrieves T-Mobile employee profile information from Workday by worker ID, including department, manager, cost center, and job title.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves T-Mobile employee profile information from Workday by worker ID, including department, manager, cost center, and job title."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-employee
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a T-Mobile employee by Workday worker ID. Returns full name, job title, department, cost center, manager, and work email."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.descriptor"
            - name: job_title
              type: string
              mapping: "$.worker.primaryPosition.jobTitle"
            - name: department
              type: string
              mapping: "$.worker.primaryPosition.department"
            - name: cost_center
              type: string
              mapping: "$.worker.primaryPosition.costCenter"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/tmobile"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves employee profile from Workday.

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