Under Armour Capabilities

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

Sort
Expand

Retrieves Adobe Analytics site traffic data for the UA.com storefront, returning unique visitors, page views, and average session duration.

naftiko: "0.5"
info:
  label: "Adobe Analytics Traffic Report"
  description: "Retrieves Adobe Analytics site traffic data for the UA.com storefront, returning unique visitors, page views, and average session duration."
  tags:
    - analytics
    - e-commerce
    - adobe-analytics
capability:
  exposes:
    - type: mcp
      namespace: web-analytics
      port: 8080
      tools:
        - name: get-site-traffic
          description: "Fetch UA.com traffic metrics from Adobe Analytics."
          inputParameters:
            - name: report_suite_id
              in: body
              type: string
              description: "The Adobe Analytics report suite ID."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          call: "adobe-analytics.get-report"
          with:
            rsid: "{{report_suite_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: unique_visitors
              type: number
              mapping: "$.totalPages[0].data[0].uniqueVisitors"
            - name: page_views
              type: number
              mapping: "$.totalPages[0].data[0].pageViews"
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/{{company_id}}/reports"
          inputParameters:
            - name: company_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves ADP payroll summary data for a given pay period, returning gross pay, net pay, and deductions totals.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary Lookup"
  description: "Retrieves ADP payroll summary data for a given pay period, returning gross pay, net pay, and deductions totals."
  tags:
    - hr
    - payroll
    - adp
capability:
  exposes:
    - type: mcp
      namespace: payroll-ops
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch ADP payroll summary for a pay period."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period identifier."
          call: "adp.get-payroll"
          with:
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: gross_pay
              type: string
              mapping: "$.payrollSummary.grossPay"
            - name: net_pay
              type: string
              mapping: "$.payrollSummary.netPay"
            - name: deductions
              type: string
              mapping: "$.payrollSummary.totalDeductions"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payroll
          path: "/payroll-summaries/{{pay_period}}"
          inputParameters:
            - name: pay_period
              in: path
          operations:
            - name: get-payroll
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Athlete Endorsement Contract Workflow"
  description: "When a new athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams."
  tags:
    - endorsements
    - legal
    - salesforce
    - sharepoint
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: endorsement-ops
      port: 8080
      tools:
        - name: process-endorsement
          description: "Orchestrate contract generation, finance entry, and team notification for a new athlete endorsement."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID for the endorsement deal."
          steps:
            - name: get-deal
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: generate-contract
              type: call
              call: "sharepoint.create-document"
              with:
                site_id: "legal_contracts"
                template: "athlete_endorsement"
                fields:
                  athlete_name: "{{get-deal.Contact_Name__c}}"
                  deal_value: "{{get-deal.Amount}}"
                  term: "{{get-deal.Contract_Term__c}}"
            - name: create-cost-center
              type: call
              call: "sap.create-cost-element"
              with:
                cost_center: "marketing_endorsements"
                amount: "{{get-deal.Amount}}"
                description: "Endorsement: {{get-deal.Contact_Name__c}}"
            - name: notify-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "endorsement-deals"
                text: "New endorsement approved: {{get-deal.Contact_Name__c}} for ${{get-deal.Amount}}. Contract: {{generate-contract.url}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/{{site_id}}/drive/root:/{{template}}"
          inputParameters:
            - name: site_id
              in: path
            - name: template
              in: path
          operations:
            - name: create-document
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_COSTCENTERACTIVITYTYPE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: cost-elements
          path: "/A_CostCenterActivityType"
          operations:
            - name: create-cost-element
              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: send-message
              method: POST

Retrieves status of an athlete endorsement deal.

naftiko: "0.5"
info:
  label: "Athlete Endorsement Status"
  description: "Retrieves status of an athlete endorsement deal."
  tags:
    - marketing
    - legal
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: get-athlete
          description: "Retrieves status of an athlete endorsement deal."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The athlete endorsement status identifier."
          call: "marketing-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: marketing-api
      baseUri: "https://api.under-armour.com/marketing/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: athlete
          path: "/athlete/endorsement/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-athlete
              method: GET

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

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 1"
  description: "Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-001
          description: "Orchestrates athletic apparel 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 Athletic Apparel Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 2"
  description: "Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-002
          description: "Orchestrates athletic apparel 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 Athletic Apparel Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel operational data for workflow 3.

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

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

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 4"
  description: "Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-004
          description: "Orchestrates athletic apparel 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 Athletic Apparel Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 5"
  description: "Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-005
          description: "Orchestrates athletic apparel 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 Athletic Apparel Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel operational data for workflow 6.

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

Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 7"
  description: "Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-007
          description: "Orchestrates athletic apparel workflow 7 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 Athletic Apparel Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 8"
  description: "Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-008
          description: "Orchestrates athletic apparel workflow 8 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 Athletic Apparel Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel operational data for workflow 9.

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

Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 10"
  description: "Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-010
          description: "Orchestrates athletic apparel workflow 10 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 Athletic Apparel Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 11"
  description: "Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-011
          description: "Orchestrates athletic apparel workflow 11 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 Athletic Apparel Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel operational data for workflow 12.

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

Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 13"
  description: "Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-013
          description: "Orchestrates athletic apparel workflow 13 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 Athletic Apparel Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Athletic Apparel Workflow 14"
  description: "Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - athletic
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: athletic
      port: 8080
      tools:
        - name: run-athletic-apparel-workflow-014
          description: "Orchestrates athletic apparel workflow 14 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 Athletic Apparel Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 athletic apparel operational data for workflow 15.

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

Retrieves the latest build status from Azure DevOps for a given pipeline, returning build number, status, and result.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status Lookup"
  description: "Retrieves the latest build status from Azure DevOps for a given pipeline, returning build number, status, and result."
  tags:
    - devops
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Fetch the latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            project: "{{project}}"
            definition_id: "{{pipeline_id}}"
          outputParameters:
            - name: build_number
              type: string
              mapping: "$.value[0].buildNumber"
            - name: status
              type: string
              mapping: "$.value[0].status"
            - name: result
              type: string
              mapping: "$.value[0].result"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/underarmour"
      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

Retrieves product inventory data from BigCommerce including stock level, low stock warning, and SKU details.

naftiko: "0.5"
info:
  label: "BigCommerce Product Inventory Lookup"
  description: "Retrieves product inventory data from BigCommerce including stock level, low stock warning, and SKU details."
  tags:
    - e-commerce
    - inventory
    - bigcommerce
capability:
  exposes:
    - type: mcp
      namespace: storefront-inventory
      port: 8080
      tools:
        - name: get-product-inventory
          description: "Fetch inventory for a BigCommerce product."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "BigCommerce product ID."
          call: "bigcommerce.get-product"
          with:
            product_id: "{{product_id}}"
          outputParameters:
            - name: inventory_level
              type: number
              mapping: "$.data.inventory_level"
            - name: inventory_warning_level
              type: number
              mapping: "$.data.inventory_warning_level"
            - name: sku
              type: string
              mapping: "$.data.sku"
  consumes:
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: products
          path: "/catalog/products/{{product_id}}"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET

Aggregates campaign data from Google Analytics, Facebook Ads, and Instagram into a unified Power BI dataset refresh for the marketing leadership dashboard.

naftiko: "0.5"
info:
  label: "Campaign Performance Dashboard Orchestrator"
  description: "Aggregates campaign data from Google Analytics, Facebook Ads, and Instagram into a unified Power BI dataset refresh for the marketing leadership dashboard."
  tags:
    - marketing
    - analytics
    - google-analytics
    - facebook
    - instagram
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: campaign-dashboard
      port: 8080
      tools:
        - name: refresh-campaign-dashboard
          description: "Pull multi-channel campaign metrics and refresh the Power BI dashboard."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Campaign name to aggregate metrics for."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          steps:
            - name: get-ga-data
              type: call
              call: "ga.get-report"
              with:
                campaign: "{{campaign_name}}"
                date_range: "{{date_range}}"
            - name: get-fb-data
              type: call
              call: "meta.get-campaign-insights"
              with:
                campaign_name: "{{campaign_name}}"
                date_range: "{{date_range}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                workspace_id: "marketing_workspace"
                dataset_id: "campaign_performance"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: campaign-insights
          path: "/{{campaign_id}}/insights"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-insights
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: refreshes
          path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: workspace_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Retrieves Circana (formerly IRI/NPD) market share data for a specified product category and time period.

naftiko: "0.5"
info:
  label: "Circana Market Share Report"
  description: "Retrieves Circana (formerly IRI/NPD) market share data for a specified product category and time period."
  tags:
    - analytics
    - market-research
    - circana
capability:
  exposes:
    - type: mcp
      namespace: market-intelligence
      port: 8080
      tools:
        - name: get-market-share
          description: "Fetch Circana market share data for a given category."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "Product category (e.g., 'athletic_footwear')."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., '52_weeks')."
          call: "circana.get-category-report"
          with:
            category: "{{category}}"
            period: "{{period}}"
          outputParameters:
            - name: ua_share
              type: string
              mapping: "$.brands.under_armour.market_share"
            - name: category_total
              type: string
              mapping: "$.category.total_sales"
  consumes:
    - type: http
      namespace: circana
      baseUri: "https://api.circana.com/v1"
      authentication:
        type: bearer
        token: "$secrets.circana_token"
      resources:
        - name: reports
          path: "/reports/market-share"
          operations:
            - name: get-category-report
              method: GET

Retrieves DNS records for a specified Cloudflare zone, returning record type, name, and content.

naftiko: "0.5"
info:
  label: "Cloudflare DNS Record Lookup"
  description: "Retrieves DNS records for a specified Cloudflare zone, returning record type, name, and content."
  tags:
    - infrastructure
    - dns
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: dns-management
      port: 8080
      tools:
        - name: get-dns-records
          description: "Fetch DNS records from Cloudflare for a zone."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.list-dns-records"
          with:
            zone_id: "{{zone_id}}"
          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_token"
      resources:
        - name: dns-records
          path: "/zones/{{zone_id}}/dns_records"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: list-dns-records
              method: GET

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.under-armour.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns.

naftiko: "0.5"
info:
  label: "Connected Fitness Data Sync Orchestrator"
  description: "Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns."
  tags:
    - dtc
    - connected-fitness
    - salesforce
    - hubspot
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: fitness-marketing
      port: 8080
      tools:
        - name: sync-fitness-segments
          description: "Sync connected fitness activity data to Salesforce and HubSpot, and trigger targeted email."
          inputParameters:
            - name: segment_type
              in: body
              type: string
              description: "Activity segment (e.g., 'high_activity_runners')."
            - name: period_days
              in: body
              type: number
              description: "Lookback period in days."
          steps:
            - name: get-segment-users
              type: call
              call: "salesforce.query-contacts"
              with:
                query: "SELECT Id, Email FROM Contact WHERE Fitness_Segment__c = '{{segment_type}}'"
            - name: update-hubspot-list
              type: call
              call: "hubspot.update-list"
              with:
                list_id: "fitness_{{segment_type}}"
                emails: "{{get-segment-users.records}}"
            - name: trigger-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "fitness_segments"
                segment_id: "{{segment_type}}"
                template: "fitness_engagement_{{segment_type}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-contacts
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/contacts/v1"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: lists
          path: "/lists/{{list_id}}/add"
          inputParameters:
            - name: list_id
              in: path
          operations:
            - name: update-list
              method: POST
    - 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: send-campaign
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify.

naftiko: "0.5"
info:
  label: "Customer Loyalty Tier Upgrade Orchestrator"
  description: "When a customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify."
  tags:
    - dtc
    - loyalty
    - salesforce
    - mailchimp
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: loyalty-ops
      port: 8080
      tools:
        - name: upgrade-loyalty-tier
          description: "Upgrade customer loyalty tier and trigger rewards."
          inputParameters:
            - name: contact_id
              in: body
              type: string
              description: "Salesforce contact ID."
            - name: new_tier
              in: body
              type: string
              description: "New loyalty tier name."
          steps:
            - name: get-contact
              type: call
              call: "salesforce.get-contact"
              with:
                contact_id: "{{contact_id}}"
            - name: update-tier
              type: call
              call: "salesforce.update-contact"
              with:
                contact_id: "{{contact_id}}"
                loyalty_tier: "{{new_tier}}"
            - name: create-discount
              type: call
              call: "shopify.create-price-rule"
              with:
                title: "LOYALTY_{{new_tier}}_{{contact_id}}"
                value: "-15"
                target_type: "line_item"
            - name: send-congrats
              type: call
              call: "mailchimp.send-transactional"
              with:
                email: "{{get-contact.Email}}"
                template: "loyalty_upgrade"
                merge_vars:
                  first_name: "{{get-contact.FirstName}}"
                  new_tier: "{{new_tier}}"
                  discount_code: "{{create-discount.code}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
            - name: update-contact
              method: PATCH
    - type: http
      namespace: shopify
      baseUri: "https://under-armour.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: price-rules
          path: "/price_rules.json"
          operations:
            - name: create-price-rule
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 status and details of a Datadog monitor by ID, returning state, message, and last triggered timestamp.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Alert Lookup"
  description: "Retrieves the current status and details of a Datadog monitor by ID, returning state, message, and last triggered timestamp."
  tags:
    - monitoring
    - infrastructure
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-monitor-status
          description: "Fetch the current status of a Datadog monitor."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Datadog monitor ID."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.overall_state"
            - name: message
              type: string
              mapping: "$.message"
            - name: last_triggered
              type: string
              mapping: "$.overall_state_modified"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer.

naftiko: "0.5"
info:
  label: "DTC Order Fulfillment Orchestrator"
  description: "When a new order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer."
  tags:
    - e-commerce
    - fulfillment
    - bigcommerce
    - sap
    - oracle-e-business-suite
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: dtc-fulfillment
      port: 8080
      tools:
        - name: process-dtc-order
          description: "Given a BigCommerce order ID, orchestrate fulfillment across SAP, Oracle EBS, and MailChimp shipping notification."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The BigCommerce order identifier."
          steps:
            - name: get-order
              type: call
              call: "bigcommerce.get-order"
              with:
                order_id: "{{order_id}}"
            - name: create-delivery
              type: call
              call: "sap.create-delivery"
              with:
                order_ref: "{{get-order.id}}"
                ship_to: "{{get-order.shipping_address}}"
                items: "{{get-order.line_items}}"
            - name: decrement-inventory
              type: call
              call: "oracle-ebs.update-inventory"
              with:
                items: "{{get-order.line_items}}"
                warehouse: "{{create-delivery.warehouse_id}}"
            - name: send-confirmation
              type: call
              call: "mailchimp.send-transactional"
              with:
                email: "{{get-order.customer_email}}"
                template: "shipping_confirmation"
                merge_vars:
                  tracking_number: "{{create-delivery.tracking_number}}"
                  order_id: "{{order_id}}"
  consumes:
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v2"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_OutbDeliveryHeader"
          operations:
            - name: create-delivery
              method: POST
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ua-ebs.under-armour.com/webservices/rest/inventory"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: inventory
          path: "/on-hand"
          operations:
            - name: update-inventory
              method: PUT
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause.

naftiko: "0.5"
info:
  label: "Dynatrace Problem Detection Lookup"
  description: "Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause."
  tags:
    - monitoring
    - e-commerce
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-active-problems
          description: "Fetch active Dynatrace problems."
          inputParameters:
            - name: time_range
              in: body
              type: string
              description: "Time range (e.g., 'last2hours')."
          call: "dynatrace.get-problems"
          with:
            relativeTime: "{{time_range}}"
          outputParameters:
            - name: total_count
              type: number
              mapping: "$.totalCount"
            - name: problems
              type: array
              mapping: "$.problems"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://ua.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: problems
          path: "/problems"
          operations:
            - name: get-problems
              method: GET

Retrieves e-commerce conversion rate metrics.

naftiko: "0.5"
info:
  label: "E-Commerce Conversion Rate"
  description: "Retrieves e-commerce conversion rate metrics."
  tags:
    - e-commerce
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: e-commerce
      port: 8080
      tools:
        - name: get-e
          description: "Retrieves e-commerce conversion rate metrics."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The e commerce conversion rate identifier."
          call: "e-commerce-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: e-commerce-api
      baseUri: "https://api.under-armour.com/e-commerce/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: e
          path: "/e/commerce/conversion/rate/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-e
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Pipeline"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate onboarding across Workday, ServiceNow, SharePoint, and Teams for a new hire."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "Department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - 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"
            - 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: "{{get-employee.work_email}}"
                text: "Welcome to Under Armour, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://underarmour.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

Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets.

naftiko: "0.5"
info:
  label: "End of Season Closeout Orchestrator"
  description: "Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets."
  tags:
    - merchandising
    - e-commerce
    - sap
    - bigcommerce
    - shopify
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: closeout-ops
      port: 8080
      tools:
        - name: execute-closeout
          description: "Run end-of-season closeout across DTC channels and report."
          inputParameters:
            - name: season_code
              in: body
              type: string
              description: "SAP season code (e.g., 'FW24')."
            - name: clearance_pct
              in: body
              type: number
              description: "Clearance discount percentage."
          steps:
            - name: get-aging-inventory
              type: call
              call: "sap.get-aging-stock"
              with:
                season: "{{season_code}}"
            - name: create-bc-promotions
              type: call
              call: "bigcommerce.create-promotion"
              with:
                name: "{{season_code}} Closeout"
                discount_pct: "{{clearance_pct}}"
                product_ids: "{{get-aging-inventory.product_ids}}"
            - name: update-shopify-prices
              type: call
              call: "shopify.bulk-price-update"
              with:
                items: "{{get-aging-inventory.items}}"
                discount_pct: "{{clearance_pct}}"
            - name: log-report
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "ua_closeout_tracker"
                row:
                  season: "{{season_code}}"
                  items_count: "{{get-aging-inventory.total_items}}"
                  clearance_pct: "{{clearance_pct}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: aging-stock
          path: "/A_MatlStkInAcctMod"
          operations:
            - name: get-aging-stock
              method: GET
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: promotions
          path: "/promotions"
          operations:
            - name: create-promotion
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://under-armour.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: bulk-price-update
              method: PUT
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 Facebook advertising spend and ROAS metrics for a specified ad account and date range.

naftiko: "0.5"
info:
  label: "Facebook Ads Spend Reporter"
  description: "Retrieves Facebook advertising spend and ROAS metrics for a specified ad account and date range."
  tags:
    - marketing
    - advertising
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: paid-media
      port: 8080
      tools:
        - name: get-fb-ad-spend
          description: "Fetch Facebook ad account spend and ROAS for a date range."
          inputParameters:
            - name: ad_account_id
              in: body
              type: string
              description: "Facebook ad account ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "meta.get-account-insights"
          with:
            ad_account_id: "{{ad_account_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: spend
              type: string
              mapping: "$.data[0].spend"
            - name: roas
              type: string
              mapping: "$.data[0].purchase_roas[0].value"
  consumes:
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: account-insights
          path: "/act_{{ad_account_id}}/insights"
          inputParameters:
            - name: ad_account_id
              in: path
          operations:
            - name: get-account-insights
              method: GET

Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews.

naftiko: "0.5"
info:
  label: "Google Analytics Session Lookup"
  description: "Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews."
  tags:
    - analytics
    - dtc
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: analytics-reporting
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve GA session data for a specific campaign and date range."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The UTM campaign name to filter on."
            - 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: "ga.get-report"
          with:
            campaign: "{{campaign_name}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: sessions
              type: number
              mapping: "$.rows[0].sessions"
            - name: bounce_rate
              type: string
              mapping: "$.rows[0].bounceRate"
            - name: conversions
              type: number
              mapping: "$.rows[0].goalCompletionsAll"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status.

naftiko: "0.5"
info:
  label: "Google Drive File Lookup"
  description: "Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status."
  tags:
    - documents
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: drive-search
      port: 8080
      tools:
        - name: search-drive-files
          description: "Search Google Drive for files by name."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "File name search query."
          call: "gdrive.search-files"
          with:
            q: "name contains '{{query}}'"
          outputParameters:
            - name: files
              type: array
              mapping: "$.files"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: search-files
              method: GET

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.under-armour.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position.

naftiko: "0.5"
info:
  label: "Google Search Console Performance Lookup"
  description: "Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position."
  tags:
    - seo
    - analytics
    - google-search-console
capability:
  exposes:
    - type: mcp
      namespace: seo-analytics
      port: 8080
      tools:
        - name: get-search-performance
          description: "Fetch Google Search Console performance data."
          inputParameters:
            - name: site_url
              in: body
              type: string
              description: "The site URL property in GSC."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "gsc.query-analytics"
          with:
            site_url: "{{site_url}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: clicks
              type: number
              mapping: "$.rows[0].clicks"
            - name: impressions
              type: number
              mapping: "$.rows[0].impressions"
            - name: avg_position
              type: number
              mapping: "$.rows[0].position"
  consumes:
    - type: http
      namespace: gsc
      baseUri: "https://www.googleapis.com/webmasters/v3"
      authentication:
        type: bearer
        token: "$secrets.google_search_console_token"
      resources:
        - name: analytics
          path: "/sites/{{site_url}}/searchAnalytics/query"
          inputParameters:
            - name: site_url
              in: path
          operations:
            - name: query-analytics
              method: POST

Retrieves the latest published container version from Google Tag Manager for the UA.com property.

naftiko: "0.5"
info:
  label: "Google Tag Manager Container Version Lookup"
  description: "Retrieves the latest published container version from Google Tag Manager for the UA.com property."
  tags:
    - analytics
    - tag-management
    - google-tag-manager
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: get-gtm-version
          description: "Fetch the latest GTM container version."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "GTM account ID."
            - name: container_id
              in: body
              type: string
              description: "GTM container ID."
          call: "gtm.get-live-version"
          with:
            account_id: "{{account_id}}"
            container_id: "{{container_id}}"
          outputParameters:
            - name: version_number
              type: string
              mapping: "$.containerVersionId"
            - name: name
              type: string
              mapping: "$.name"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: versions
          path: "/accounts/{{account_id}}/containers/{{container_id}}/versions/live"
          inputParameters:
            - name: account_id
              in: path
            - name: container_id
              in: path
          operations:
            - name: get-live-version
              method: GET

Retrieves a HubSpot contact by email and returns lifecycle stage, last activity date, and associated deals.

naftiko: "0.5"
info:
  label: "HubSpot Contact Lookup"
  description: "Retrieves a HubSpot contact by email and returns lifecycle stage, last activity date, and associated deals."
  tags:
    - marketing
    - crm
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: crm-marketing
      port: 8080
      tools:
        - name: get-hubspot-contact
          description: "Look up a HubSpot contact by email address."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "The contact email address."
          call: "hubspot.get-contact-by-email"
          with:
            email: "{{email}}"
          outputParameters:
            - name: lifecycle_stage
              type: string
              mapping: "$.properties.lifecyclestage"
            - name: last_activity
              type: string
              mapping: "$.properties.notes_last_updated"
            - name: deal_count
              type: number
              mapping: "$.properties.num_associated_deals"
  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/{{email}}?idProperty=email"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact-by-email
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range.

naftiko: "0.5"
info:
  label: "Instagram Campaign Performance Lookup"
  description: "Retrieves Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range."
  tags:
    - marketing
    - social-media
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: get-instagram-campaign
          description: "Fetch performance metrics for a given Instagram campaign."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Instagram/Meta campaign ID."
            - name: date_range
              in: body
              type: string
              description: "Date range as start,end in YYYY-MM-DD format."
          call: "meta.get-campaign-insights"
          with:
            campaign_id: "{{campaign_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: impressions
              type: number
              mapping: "$.data[0].impressions"
            - name: reach
              type: number
              mapping: "$.data[0].reach"
            - name: engagement_rate
              type: string
              mapping: "$.data[0].engagement_rate"
  consumes:
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: campaign-insights
          path: "/{{campaign_id}}/insights"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-insights
              method: GET

Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Inventory Reorder Point Orchestrator"
  description: "Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams."
  tags:
    - supply-chain
    - inventory
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: inventory-replenishment
      port: 8080
      tools:
        - name: check-and-reorder
          description: "Check inventory levels and create purchase requisitions for items below reorder point."
          inputParameters:
            - name: plant_id
              in: body
              type: string
              description: "SAP plant ID."
            - name: material_group
              in: body
              type: string
              description: "Material group to check."
          steps:
            - name: check-levels
              type: call
              call: "sap.get-inventory-levels"
              with:
                plant: "{{plant_id}}"
                material_group: "{{material_group}}"
            - name: create-requisition
              type: call
              call: "sap.create-purchase-requisition"
              with:
                items: "{{check-levels.below_reorder_items}}"
                plant: "{{plant_id}}"
            - name: notify-procurement
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "procurement-alerts"
                text: "Reorder triggered for {{check-levels.below_reorder_count}} items in plant {{plant_id}}. PR: {{create-requisition.pr_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/A_MatlStkInAcctMod"
          operations:
            - name: get-inventory-levels
              method: GET
        - name: requisitions
          path: "/A_PurchaseRequisition"
          operations:
            - name: create-purchase-requisition
              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: send-message
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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

Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets.

naftiko: "0.5"
info:
  label: "LinkedIn Sponsored Content Orchestrator"
  description: "Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets."
  tags:
    - marketing
    - social-media
    - linkedin
    - salesforce
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: social-campaigns
      port: 8080
      tools:
        - name: launch-linkedin-campaign
          description: "Create and launch a LinkedIn sponsored campaign with audience from SFMC and reporting in Google Sheets."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Name for the new campaign."
            - name: audience_segment_id
              in: body
              type: string
              description: "Salesforce Marketing Cloud segment ID."
            - name: creative_url
              in: body
              type: string
              description: "URL of the ad creative asset."
          steps:
            - name: get-audience
              type: call
              call: "sfmc.get-segment"
              with:
                segment_id: "{{audience_segment_id}}"
            - name: create-campaign
              type: call
              call: "linkedin.create-campaign"
              with:
                name: "{{campaign_name}}"
                targeting: "{{get-audience.targeting_criteria}}"
                creative_url: "{{creative_url}}"
            - name: log-campaign
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "ua_campaign_tracker"
                row:
                  campaign_name: "{{campaign_name}}"
                  platform: "LinkedIn"
                  campaign_id: "{{create-campaign.id}}"
                  status: "Launched"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://ua.rest.marketingcloudapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: segments
          path: "/segments/{{segment_id}}"
          inputParameters:
            - name: segment_id
              in: path
          operations:
            - name: get-segment
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: campaigns
          path: "/adCampaignsV2"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate.

naftiko: "0.5"
info:
  label: "MailChimp Subscriber List Export"
  description: "Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate."
  tags:
    - marketing
    - email
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: email-marketing
      port: 8080
      tools:
        - name: get-audience-stats
          description: "Retrieve MailChimp audience list statistics."
          inputParameters:
            - name: list_id
              in: body
              type: string
              description: "MailChimp audience list ID."
          call: "mailchimp.get-list"
          with:
            list_id: "{{list_id}}"
          outputParameters:
            - name: member_count
              type: number
              mapping: "$.stats.member_count"
            - name: open_rate
              type: number
              mapping: "$.stats.open_rate"
            - name: click_rate
              type: number
              mapping: "$.stats.click_rate"
  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: lists
          path: "/lists/{{list_id}}"
          inputParameters:
            - name: list_id
              in: path
          operations:
            - name: get-list
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets.

naftiko: "0.5"
info:
  label: "Mastercard Transaction Reconciliation"
  description: "Retrieves Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets."
  tags:
    - finance
    - payments
    - mastercard
    - sap
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: payment-reconciliation
      port: 8080
      tools:
        - name: reconcile-settlements
          description: "Compare Mastercard settlements against SAP payments and log discrepancies."
          inputParameters:
            - name: settlement_date
              in: body
              type: string
              description: "Settlement date YYYY-MM-DD."
          steps:
            - name: get-settlements
              type: call
              call: "mastercard.get-settlements"
              with:
                date: "{{settlement_date}}"
            - name: get-sap-payments
              type: call
              call: "sap.get-payment-docs"
              with:
                date: "{{settlement_date}}"
            - name: log-discrepancies
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "ua_reconciliation_log"
                row:
                  date: "{{settlement_date}}"
                  mc_total: "{{get-settlements.total}}"
                  sap_total: "{{get-sap-payments.total}}"
  consumes:
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/settlement/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_token"
      resources:
        - name: settlements
          path: "/settlements"
          operations:
            - name: get-settlements
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PAYMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: payments
          path: "/A_PaymentDocument"
          operations:
            - name: get-payment-docs
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

Sends a formatted notification message to a specified Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification message to a specified Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: team-notifications
      port: 8080
      tools:
        - name: send-channel-message
          description: "Post a message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "Microsoft Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "Channel ID."
            - name: message
              in: body
              type: string
              description: "The message text to send."
          call: "msteams.post-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - 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-message
              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.under-armour.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Retrieves application performance metrics from New Relic including response time, throughput, and error rate.

naftiko: "0.5"
info:
  label: "New Relic Application Performance Lookup"
  description: "Retrieves application performance metrics from New Relic including response time, throughput, and error rate."
  tags:
    - monitoring
    - performance
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: apm-monitoring
      port: 8080
      tools:
        - name: get-app-performance
          description: "Fetch New Relic APM metrics for a given application."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "New Relic application ID."
          call: "newrelic.get-application"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: response_time
              type: number
              mapping: "$.application.application_summary.response_time"
            - name: throughput
              type: number
              mapping: "$.application.application_summary.throughput"
            - name: error_rate
              type: number
              mapping: "$.application.application_summary.error_rate"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-application
              method: GET

Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization.

naftiko: "0.5"
info:
  label: "Oracle EBS Inventory Snapshot"
  description: "Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization."
  tags:
    - supply-chain
    - inventory
    - oracle-e-business-suite
capability:
  exposes:
    - type: mcp
      namespace: inventory-lookup
      port: 8080
      tools:
        - name: get-inventory-onhand
          description: "Fetch on-hand inventory from Oracle EBS."
          inputParameters:
            - name: item_number
              in: body
              type: string
              description: "Oracle item number."
            - name: org_id
              in: body
              type: string
              description: "Organization ID."
          call: "oracle-ebs.get-onhand"
          with:
            item: "{{item_number}}"
            org: "{{org_id}}"
          outputParameters:
            - name: quantity_on_hand
              type: number
              mapping: "$.onhand_quantity"
            - name: reserved
              type: number
              mapping: "$.reserved_quantity"
            - name: available
              type: number
              mapping: "$.available_to_promise"
  consumes:
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ua-ebs.under-armour.com/webservices/rest/inventory"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: onhand
          path: "/on-hand?item={{item}}&org={{org}}"
          inputParameters:
            - name: item
              in: query
            - name: org
              in: query
          operations:
            - name: get-onhand
              method: GET

Triggers a dataset refresh in Power BI for the specified workspace and dataset, returning refresh status.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a dataset refresh in Power BI for the specified workspace and dataset, returning refresh status."
  tags:
    - analytics
    - reporting
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: bi-ops
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Power BI workspace GUID."
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset GUID."
          call: "powerbi.trigger-refresh"
          with:
            workspace_id: "{{workspace_id}}"
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: refreshes
          path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: workspace_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              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.under-armour.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 available colorways for a product style.

naftiko: "0.5"
info:
  label: "Product Colorway Catalog"
  description: "Retrieves available colorways for a product style."
  tags:
    - product-management
    - merchandising
capability:
  exposes:
    - type: mcp
      namespace: product-management
      port: 8080
      tools:
        - name: get-product
          description: "Retrieves available colorways for a product style."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The product colorway catalog identifier."
          call: "product-management-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: product-management-api
      baseUri: "https://api.under-armour.com/product-management/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: product
          path: "/product/colorway/catalog/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-product
              method: GET

Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram.

naftiko: "0.5"
info:
  label: "Product Launch Coordination Orchestrator"
  description: "Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram."
  tags:
    - product-management
    - e-commerce
    - sap
    - bigcommerce
    - shopify
    - mailchimp
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: coordinate-launch
          description: "Orchestrate cross-platform product launch activities."
          inputParameters:
            - name: material_id
              in: body
              type: string
              description: "SAP material number for the new product."
            - name: launch_date
              in: body
              type: string
              description: "Planned launch date YYYY-MM-DD."
          steps:
            - name: get-product
              type: call
              call: "sap.get-material"
              with:
                material_id: "{{material_id}}"
            - name: publish-bigcommerce
              type: call
              call: "bigcommerce.create-product"
              with:
                name: "{{get-product.description}}"
                price: "{{get-product.list_price}}"
                sku: "{{material_id}}"
            - name: publish-shopify
              type: call
              call: "shopify.create-product"
              with:
                title: "{{get-product.description}}"
                variants_price: "{{get-product.list_price}}"
                sku: "{{material_id}}"
            - name: schedule-email
              type: call
              call: "mailchimp.schedule-campaign"
              with:
                list_id: "ua_subscribers"
                subject: "New Arrival: {{get-product.description}}"
                send_time: "{{launch_date}}T10:00:00Z"
            - name: post-teaser
              type: call
              call: "instagram.create-media"
              with:
                caption: "Coming {{launch_date}}: {{get-product.description}} #UnderArmour #NewArrival"
                image_url: "{{get-product.image_url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product('{{material_id}}')"
          inputParameters:
            - name: material_id
              in: path
          operations:
            - name: get-material
              method: GET
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: products
          path: "/catalog/products"
          operations:
            - name: create-product
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://under-armour.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: create-product
              method: POST
    - 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: schedule-campaign
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/{{ig_user_id}}/media"
          inputParameters:
            - name: ig_user_id
              in: path
          operations:
            - name: create-media
              method: POST

Checks size availability for a product across channels.

naftiko: "0.5"
info:
  label: "Product Size Availability"
  description: "Checks size availability for a product across channels."
  tags:
    - inventory
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: get-product
          description: "Checks size availability for a product across channels."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The product size availability identifier."
          call: "inventory-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: inventory-api
      baseUri: "https://api.under-armour.com/inventory/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: product
          path: "/product/size/availability/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-product
              method: GET

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp.

naftiko: "0.5"
info:
  label: "Return Processing Orchestrator"
  description: "When a customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp."
  tags:
    - e-commerce
    - returns
    - bigcommerce
    - sap
    - square
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: returns-processing
      port: 8080
      tools:
        - name: process-return
          description: "Orchestrate return authorization, refund, and customer communication."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "BigCommerce order ID."
            - name: reason
              in: body
              type: string
              description: "Return reason code."
          steps:
            - name: get-order
              type: call
              call: "bigcommerce.get-order"
              with:
                order_id: "{{order_id}}"
            - name: create-return
              type: call
              call: "sap.create-return-order"
              with:
                order_ref: "{{get-order.id}}"
                reason: "{{reason}}"
                items: "{{get-order.line_items}}"
            - name: issue-refund
              type: call
              call: "square.create-refund"
              with:
                payment_id: "{{get-order.payment_id}}"
                amount: "{{get-order.total}}"
            - name: send-label
              type: call
              call: "mailchimp.send-transactional"
              with:
                email: "{{get-order.customer_email}}"
                template: "return_label"
                merge_vars:
                  return_auth: "{{create-return.return_number}}"
  consumes:
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v2"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: returns
          path: "/A_ReturnsDeliveryHeader"
          operations:
            - name: create-return-order
              method: POST
    - type: http
      namespace: square
      baseUri: "https://connect.squareup.com/v2"
      authentication:
        type: bearer
        token: "$secrets.square_token"
      resources:
        - name: refunds
          path: "/refunds"
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              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.under-armour.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information.

naftiko: "0.5"
info:
  label: "Salesforce Case Lookup"
  description: "Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information."
  tags:
    - customer-service
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: get-case
          description: "Look up a Salesforce case by case number."
          inputParameters:
            - name: case_number
              in: body
              type: string
              description: "Salesforce case number."
          call: "salesforce.get-case"
          with:
            case_number: "{{case_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.Status"
            - name: priority
              type: string
              mapping: "$.Priority"
            - name: subject
              type: string
              mapping: "$.Subject"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_number}}"
          inputParameters:
            - name: case_number
              in: path
          operations:
            - name: get-case
              method: GET

When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Salesforce Lead to Wholesale Opportunity"
  description: "When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams."
  tags:
    - sales
    - wholesale
    - salesforce
    - zoominfo
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: wholesale-pipeline
      port: 8080
      tools:
        - name: qualify-wholesale-lead
          description: "Enrich a Salesforce lead with ZoomInfo data, create an opportunity, and notify the sales team."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead ID."
          steps:
            - name: get-lead
              type: call
              call: "salesforce.get-lead"
              with:
                lead_id: "{{lead_id}}"
            - name: enrich-lead
              type: call
              call: "zoominfo.enrich-company"
              with:
                company_name: "{{get-lead.Company}}"
                domain: "{{get-lead.Website}}"
            - name: create-opportunity
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "Wholesale - {{get-lead.Company}}"
                account_id: "{{get-lead.ConvertedAccountId}}"
                amount: "{{enrich-lead.estimated_revenue}}"
                stage: "Qualification"
            - name: notify-sales
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "wholesale-leads"
                text: "New wholesale opportunity: {{get-lead.Company}} (est. ${{enrich-lead.estimated_revenue}}). Opp ID: {{create-opportunity.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              method: POST
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: enrich
          path: "/enrich/company"
          operations:
            - name: enrich-company
              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: send-message
              method: POST

Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job.

naftiko: "0.5"
info:
  label: "Salesforce Marketing Cloud Email Performance"
  description: "Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job."
  tags:
    - marketing
    - email
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: sfmc-analytics
      port: 8080
      tools:
        - name: get-email-send-metrics
          description: "Fetch SFMC email send performance metrics."
          inputParameters:
            - name: send_id
              in: body
              type: string
              description: "SFMC send job ID."
          call: "sfmc.get-send-summary"
          with:
            send_id: "{{send_id}}"
          outputParameters:
            - name: delivery_rate
              type: string
              mapping: "$.deliveryRate"
            - name: open_rate
              type: string
              mapping: "$.uniqueOpenRate"
            - name: click_rate
              type: string
              mapping: "$.uniqueClickRate"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://ua.rest.marketingcloudapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: sends
          path: "/sends/{{send_id}}"
          inputParameters:
            - name: send_id
              in: path
          operations:
            - name: get-send-summary
              method: GET

Retrieves a SAP Concur expense report by ID, returning total amount, approval status, and expense entries.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Lookup"
  description: "Retrieves a SAP Concur expense report by ID, returning total amount, approval status, and expense entries."
  tags:
    - finance
    - travel
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: expense-management
      port: 8080
      tools:
        - name: get-expense-report
          description: "Fetch a SAP Concur expense report."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
          outputParameters:
            - name: total_amount
              type: string
              mapping: "$.Total"
            - name: approval_status
              type: string
              mapping: "$.ApprovalStatusName"
            - name: entry_count
              type: number
              mapping: "$.TotalEntryCount"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET

Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for Under Armour procurement teams.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for Under Armour procurement teams."
  tags:
    - procurement
    - supply-chain
    - sap
capability:
  exposes:
    - type: mcp
      namespace: procurement-ops
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Retrieve a SAP purchase order by PO number."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint.

naftiko: "0.5"
info:
  label: "Seasonal Markdown Orchestrator"
  description: "Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint."
  tags:
    - pricing
    - e-commerce
    - sap
    - bigcommerce
    - shopify
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: pricing-ops
      port: 8080
      tools:
        - name: apply-seasonal-markdown
          description: "Apply a markdown across DTC channels for a given product category."
          inputParameters:
            - name: category_id
              in: body
              type: string
              description: "SAP product category identifier."
            - name: markdown_pct
              in: body
              type: number
              description: "Markdown percentage to apply."
          steps:
            - name: get-pricing-rules
              type: call
              call: "sap.get-pricing-conditions"
              with:
                category: "{{category_id}}"
            - name: update-bigcommerce
              type: call
              call: "bigcommerce.bulk-price-update"
              with:
                items: "{{get-pricing-rules.items}}"
                discount_pct: "{{markdown_pct}}"
            - name: update-shopify
              type: call
              call: "shopify.bulk-price-update"
              with:
                items: "{{get-pricing-rules.items}}"
                discount_pct: "{{markdown_pct}}"
            - name: log-change
              type: call
              call: "sharepoint.append-row"
              with:
                site_id: "pricing_ops"
                workbook: "MarkdownLog.xlsx"
                row:
                  category: "{{category_id}}"
                  markdown: "{{markdown_pct}}"
                  items_count: "{{get-pricing-rules.total_items}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: conditions
          path: "/A_SlsPrcgCndnRecdValidity"
          operations:
            - name: get-pricing-conditions
              method: GET
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/ua-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      resources:
        - name: pricing
          path: "/catalog/products"
          operations:
            - name: bulk-price-update
              method: PUT
    - type: http
      namespace: shopify
      baseUri: "https://under-armour.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: bulk-price-update
              method: PUT
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: workbook-rows
          path: "/{{site_id}}/drive/root:/{{workbook}}:/workbook/tables/Table1/rows"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook
              in: path
          operations:
            - name: append-row
              method: POST

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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

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.under-armour.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 and returns its state, priority, assigned group, and resolution notes.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number and returns its state, priority, assigned group, and resolution notes."
  tags:
    - it-ops
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Fetch a ServiceNow incident record by incident number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://underarmour.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={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Uploads a document to a specified SharePoint site and folder path.

naftiko: "0.5"
info:
  label: "SharePoint Document Upload"
  description: "Uploads a document to a specified SharePoint site and folder path."
  tags:
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: upload-document
          description: "Upload a document to SharePoint."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: folder_path
              in: body
              type: string
              description: "Folder path for the upload."
            - name: file_name
              in: body
              type: string
              description: "Name of the file."
          call: "sharepoint.upload-file"
          with:
            site_id: "{{site_id}}"
            folder_path: "{{folder_path}}"
            file_name: "{{file_name}}"
  consumes:
    - 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}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront.

naftiko: "0.5"
info:
  label: "Shopify Product Catalog Sync"
  description: "When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront."
  tags:
    - e-commerce
    - product-management
    - sap
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: product-sync
      port: 8080
      tools:
        - name: sync-product-to-shopify
          description: "Push a SAP product update to the Shopify storefront."
          inputParameters:
            - name: sap_material_id
              in: body
              type: string
              description: "The SAP material number."
          steps:
            - name: get-material
              type: call
              call: "sap.get-material"
              with:
                material_id: "{{sap_material_id}}"
            - name: update-shopify
              type: call
              call: "shopify.update-product"
              with:
                title: "{{get-material.description}}"
                body_html: "{{get-material.long_text}}"
                variants_price: "{{get-material.list_price}}"
                inventory_quantity: "{{get-material.available_stock}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product('{{material_id}}')"
          inputParameters:
            - name: material_id
              in: path
          operations:
            - name: get-material
              method: GET
    - type: http
      namespace: shopify
      baseUri: "https://under-armour.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: update-product
              method: PUT

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.under-armour.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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.under-armour.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supply Chain Delay Alert Orchestrator"
  description: "When a SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams."
  tags:
    - supply-chain
    - alerts
    - sap
    - servicenow
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-alerts
      port: 8080
      tools:
        - name: handle-delivery-delay
          description: "Orchestrate delay notifications across ServiceNow, Salesforce, and Teams."
          inputParameters:
            - name: delivery_id
              in: body
              type: string
              description: "SAP inbound delivery document number."
            - name: delay_days
              in: body
              type: number
              description: "Number of days the delivery is delayed."
          steps:
            - name: get-delivery
              type: call
              call: "sap.get-inbound-delivery"
              with:
                delivery_id: "{{delivery_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supply chain delay: {{delivery_id}} - {{delay_days}} days"
                category: "supply_chain"
                priority: "2"
            - name: update-account
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{get-delivery.vendor_account_id}}"
                delay_notice: "Delivery {{delivery_id}} delayed by {{delay_days}} days"
            - name: alert-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "supply-chain-ops"
                text: "DELAY ALERT: Delivery {{delivery_id}} from {{get-delivery.vendor_name}} is {{delay_days}} days late. Incident: {{create-incident.number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_INBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_InbDeliveryHeader('{{delivery_id}}')"
          inputParameters:
            - name: delivery_id
              in: path
          operations:
            - name: get-inbound-delivery
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://underarmour.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: salesforce
      baseUri: "https://ua.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: update-account
              method: PATCH
    - 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: send-message
              method: POST

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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 metadata for a Tableau workbook view including view name, last refresh time, and content URL.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Lookup"
  description: "Retrieves metadata for a Tableau workbook view including view name, last refresh time, and content URL."
  tags:
    - analytics
    - reporting
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: bi-dashboards
      port: 8080
      tools:
        - name: get-tableau-view
          description: "Fetch Tableau view metadata."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "Tableau site ID."
            - name: view_id
              in: body
              type: string
              description: "Tableau view ID."
          call: "tableau.get-view"
          with:
            site_id: "{{site_id}}"
            view_id: "{{view_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.view.name"
            - name: content_url
              type: string
              mapping: "$.view.contentUrl"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://ua-tableau.under-armour.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: views
          path: "/sites/{{site_id}}/views/{{view_id}}"
          inputParameters:
            - name: site_id
              in: path
            - name: view_id
              in: path
          operations:
            - name: get-view
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review.

naftiko: "0.5"
info:
  label: "Twitter Mention Sentiment Tracker"
  description: "Fetches recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review."
  tags:
    - marketing
    - social-media
    - twitter
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: social-listening
      port: 8080
      tools:
        - name: track-brand-mentions
          description: "Pull Twitter mentions and log sentiment analysis results to Google Sheets."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query (e.g., '@UnderArmour')."
            - name: since_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
          steps:
            - name: search-tweets
              type: call
              call: "twitter.search-recent"
              with:
                query: "{{query}}"
                start_time: "{{since_date}}T00:00:00Z"
            - name: log-results
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "ua_social_mentions"
                row:
                  query: "{{query}}"
                  tweet_count: "{{search-tweets.meta.result_count}}"
                  date: "{{since_date}}"
  consumes:
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_bearer_token"
      resources:
        - name: tweets-search
          path: "/tweets/search/recent"
          operations:
            - name: search-recent
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              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.under-armour.com/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.under-armour.com/v2"
      authentication:
        type: bearer
        token: "$secrets.under_armour_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 vendor is approved in SAP Ariba, creates a vendor master record in SAP, provisions a Box collaboration folder, and sends onboarding instructions via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Vendor Onboarding Orchestrator"
  description: "When a new vendor is approved in SAP Ariba, creates a vendor master record in SAP, provisions a Box collaboration folder, and sends onboarding instructions via Microsoft Outlook."
  tags:
    - procurement
    - vendor-management
    - sap-ariba
    - sap
    - box
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: vendor-onboarding
      port: 8080
      tools:
        - name: onboard-vendor
          description: "Orchestrate vendor master creation, document folder, and onboarding email."
          inputParameters:
            - name: ariba_vendor_id
              in: body
              type: string
              description: "SAP Ariba vendor registration ID."
          steps:
            - name: get-vendor
              type: call
              call: "ariba.get-vendor-registration"
              with:
                vendor_id: "{{ariba_vendor_id}}"
            - name: create-master
              type: call
              call: "sap.create-vendor-master"
              with:
                name: "{{get-vendor.company_name}}"
                tax_id: "{{get-vendor.tax_number}}"
                payment_terms: "{{get-vendor.payment_terms}}"
            - name: create-folder
              type: call
              call: "box.create-folder"
              with:
                parent_id: "vendor_documents"
                name: "{{get-vendor.company_name}}"
            - name: send-welcome
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-vendor.contact_email}}"
                subject: "Welcome to Under Armour Vendor Network"
                body: "Your vendor number is {{create-master.vendor_number}}. Upload documents to {{create-folder.url}}."
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/sourcing/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: registrations
          path: "/vendors/{{vendor_id}}"
          inputParameters:
            - name: vendor_id
              in: path
          operations:
            - name: get-vendor-registration
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_BusinessPartner"
          operations:
            - name: create-vendor-master
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders"
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Warehouse Transfer Orchestrator"
  description: "Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams."
  tags:
    - supply-chain
    - logistics
    - sap
    - oracle-e-business-suite
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: warehouse-ops
      port: 8080
      tools:
        - name: initiate-transfer
          description: "Create an inter-warehouse stock transfer with notifications."
          inputParameters:
            - name: material_id
              in: body
              type: string
              description: "SAP material number."
            - name: from_plant
              in: body
              type: string
              description: "Source warehouse/plant ID."
            - name: to_plant
              in: body
              type: string
              description: "Destination warehouse/plant ID."
            - name: quantity
              in: body
              type: number
              description: "Quantity to transfer."
          steps:
            - name: create-transfer
              type: call
              call: "sap.create-stock-transfer"
              with:
                material: "{{material_id}}"
                from_plant: "{{from_plant}}"
                to_plant: "{{to_plant}}"
                quantity: "{{quantity}}"
            - name: update-source
              type: call
              call: "oracle-ebs.adjust-inventory"
              with:
                item: "{{material_id}}"
                org: "{{from_plant}}"
                adjustment: "-{{quantity}}"
            - name: update-destination
              type: call
              call: "oracle-ebs.adjust-inventory"
              with:
                item: "{{material_id}}"
                org: "{{to_plant}}"
                adjustment: "+{{quantity}}"
            - name: notify-logistics
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "logistics-ops"
                text: "Stock transfer {{create-transfer.transfer_number}}: {{quantity}} units of {{material_id}} from {{from_plant}} to {{to_plant}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: transfers
          path: "/A_StockTransfer"
          operations:
            - name: create-stock-transfer
              method: POST
    - type: http
      namespace: oracle-ebs
      baseUri: "https://ua-ebs.under-armour.com/webservices/rest/inventory"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: adjustments
          path: "/adjustments"
          operations:
            - name: adjust-inventory
              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: send-message
              method: POST

Checks order status for a wholesale account.

naftiko: "0.5"
info:
  label: "Wholesale Account Order Status"
  description: "Checks order status for a wholesale account."
  tags:
    - sales
    - logistics
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-wholesale
          description: "Checks order status for a wholesale account."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The wholesale account order status identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.under-armour.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: wholesale
          path: "/wholesale/account/order/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-wholesale
              method: GET

When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Wholesale Order to Invoice Orchestrator"
  description: "When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook."
  tags:
    - wholesale
    - finance
    - salesforce
    - sap
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: wholesale-billing
      port: 8080
      tools:
        - name: process-wholesale-invoice
          description: "Create SAP sales order and invoice from a confirmed Salesforce wholesale order."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-sales-order
              type: call
              call: "sap.create-sales-order"
              with:
                customer: "{{get-opportunity.Account.Name}}"
                items: "{{get-opportunity.OpportunityLineItems}}"
                total: "{{get-opportunity.Amount}}"
            - name: create-invoice
              type: call
              call: "sap.create-invoice"
              with:
                sales_order: "{{create-sales-order.order_number}}"
            - name: email-invoice
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-opportunity.Contact_Email__c}}"
                subject: "Under Armour Invoice {{create-invoice.invoice_number}}"
                body: "Please find your invoice for order {{create-sales-order.order_number}}."
                attachment_url: "{{create-invoice.pdf_url}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://ua.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://ua-sap.under-armour.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sales-orders
          path: "/A_SalesOrder"
          operations:
            - name: create-sales-order
              method: POST
        - name: invoices
          path: "/A_BillingDocument"
          operations:
            - name: create-invoice
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Retrieves employee details from Workday by worker ID including name, title, department, and manager.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday by worker ID including name, title, department, and manager."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee-details
          description: "Fetch Workday employee profile by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.name.formatted"
            - name: title
              type: string
              mapping: "$.worker.position.title"
            - name: department
              type: string
              mapping: "$.worker.organization.name"
            - name: manager
              type: string
              mapping: "$.worker.manager.name.formatted"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

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.under-armour.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.under_armour_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time.

naftiko: "0.5"
info:
  label: "YouTube Channel Analytics Lookup"
  description: "Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time."
  tags:
    - marketing
    - video
    - youtube
capability:
  exposes:
    - type: mcp
      namespace: video-analytics
      port: 8080
      tools:
        - name: get-channel-analytics
          description: "Fetch YouTube channel analytics for a given date range."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "YouTube channel ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "youtube.get-analytics"
          with:
            channel_id: "{{channel_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: views
              type: number
              mapping: "$.rows[0][0]"
            - name: subscribers_gained
              type: number
              mapping: "$.rows[0][1]"
  consumes:
    - type: http
      namespace: youtube
      baseUri: "https://youtubeanalytics.googleapis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.youtube_token"
      resources:
        - name: reports
          path: "/reports"
          operations:
            - name: get-analytics
              method: GET

Creates a Zoom meeting and sends the invite details to specified attendees via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting and sends the invite details to specified attendees via Microsoft Outlook."
  tags:
    - communications
    - meetings
    - zoom
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: meeting-management
      port: 8080
      tools:
        - name: schedule-zoom-meeting
          description: "Create a Zoom meeting and email invitations."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time in ISO 8601 format."
            - name: duration
              in: body
              type: number
              description: "Duration in minutes."
            - name: attendees
              in: body
              type: string
              description: "Comma-separated attendee emails."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration}}"
            - name: send-invites
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{attendees}}"
                subject: "Zoom Meeting: {{topic}}"
                body: "Join at {{create-meeting.join_url}} on {{start_time}} ({{duration}} min)."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST