Tilray Brands Capabilities

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

Sort
Expand

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 latest build status for an Azure DevOps pipeline by pipeline ID and returns build result, duration, and commit hash.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Retrieves the latest build status for an Azure DevOps pipeline by pipeline ID and returns build result, duration, and commit hash."
  tags:
    - development
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Fetch latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The Azure DevOps pipeline ID."
          call: "azdo.get-latest-build"
          with:
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/tilray"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azure_devops_pat"
      resources:
        - name: builds
          path: "/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: path
          operations:
            - name: get-latest-build
              method: GET

Queries SAP for a beverage production run by run ID and returns batch yield, quality metrics, and packaging status for beer and spirits lines.

naftiko: "0.5"
info:
  label: "Beverage Production Run Tracker"
  description: "Queries SAP for a beverage production run by run ID and returns batch yield, quality metrics, and packaging status for beer and spirits lines."
  tags:
    - production
    - beverages
    - sap
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: beverage-production
      port: 8080
      tools:
        - name: get-production-run
          description: "Retrieve beverage production run details from SAP including yield, quality metrics, and packaging status."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The SAP production run identifier."
          call: "sap.get-run"
          with:
            run_id: "{{run_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZPP_PRODUCTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-runs
          path: "/ProductionRunSet('{{run_id}}')"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET

Aggregates social media engagement metrics from Instagram and Facebook for Tilray brand campaigns, returning impressions, reach, and engagement rates.

naftiko: "0.5"
info:
  label: "Brand Social Media Metrics"
  description: "Aggregates social media engagement metrics from Instagram and Facebook for Tilray brand campaigns, returning impressions, reach, and engagement rates."
  tags:
    - marketing
    - social-media
    - instagram
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: get-social-metrics
          description: "Aggregate social metrics from Instagram and Facebook for a brand campaign."
          inputParameters:
            - name: campaign_tag
              in: body
              type: string
              description: "The campaign hashtag or tag to filter on."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          steps:
            - name: get-instagram-metrics
              type: call
              call: "instagram.get-insights"
              with:
                campaign_tag: "{{campaign_tag}}"
                date_range: "{{date_range}}"
            - name: get-facebook-metrics
              type: call
              call: "facebook.get-insights"
              with:
                campaign_tag: "{{campaign_tag}}"
                date_range: "{{date_range}}"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_api_token"
      resources:
        - name: insights
          path: "/{{campaign_tag}}/insights"
          inputParameters:
            - name: campaign_tag
              in: path
          operations:
            - name: get-insights
              method: GET
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_api_token"
      resources:
        - name: insights
          path: "/{{campaign_tag}}/insights"
          inputParameters:
            - name: campaign_tag
              in: path
          operations:
            - name: get-insights
              method: GET

Looks up a cultivation batch by ID in SAP and returns strain, growth stage, estimated harvest date, and assigned greenhouse.

naftiko: "0.5"
info:
  label: "Cannabis Cultivation Batch Tracker"
  description: "Looks up a cultivation batch by ID in SAP and returns strain, growth stage, estimated harvest date, and assigned greenhouse."
  tags:
    - cultivation
    - erp
    - sap
    - batch-tracking
capability:
  exposes:
    - type: mcp
      namespace: cultivation-ops
      port: 8080
      tools:
        - name: get-cultivation-batch
          description: "Retrieve cultivation batch details from SAP by batch number including strain, stage, and harvest date."
          inputParameters:
            - name: batch_id
              in: body
              type: string
              description: "The SAP cultivation batch identifier."
          call: "sap.get-batch"
          with:
            batch_id: "{{batch_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_CULTIVATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batches
          path: "/BatchSet('{{batch_id}}')"
          inputParameters:
            - name: batch_id
              in: path
          operations:
            - name: get-batch
              method: GET

Verifies that a facility license is valid and current by checking the regulatory database and logs the result in ServiceNow for audit trail.

naftiko: "0.5"
info:
  label: "Cannabis License Compliance Checker"
  description: "Verifies that a facility license is valid and current by checking the regulatory database and logs the result in ServiceNow for audit trail."
  tags:
    - compliance
    - licensing
    - regulatory
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: license-compliance
      port: 8080
      tools:
        - name: verify-facility-license
          description: "Check facility license validity against regulatory database and log result in ServiceNow."
          inputParameters:
            - name: facility_id
              in: body
              type: string
              description: "The facility identifier."
            - name: license_number
              in: body
              type: string
              description: "The cannabis facility license number."
          steps:
            - name: check-license
              type: call
              call: "regulatory-db.verify-license"
              with:
                license_number: "{{license_number}}"
            - name: log-audit
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_license_audit"
                facility_id: "{{facility_id}}"
                license_number: "{{license_number}}"
                status: "{{check-license.status}}"
                expiry_date: "{{check-license.expiry_date}}"
  consumes:
    - type: http
      namespace: regulatory-db
      baseUri: "https://compliance.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: licenses
          path: "/licenses/{{license_number}}/verify"
          inputParameters:
            - name: license_number
              in: path
          operations:
            - name: verify-license
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Extracts audit trail records from ServiceNow for a date range and uploads the export to SharePoint for regulatory review.

naftiko: "0.5"
info:
  label: "Compliance Audit Trail Exporter"
  description: "Extracts audit trail records from ServiceNow for a date range and uploads the export to SharePoint for regulatory review."
  tags:
    - compliance
    - audit
    - servicenow
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: compliance-audit
      port: 8080
      tools:
        - name: export-audit-trail
          description: "Extract ServiceNow audit records and upload to SharePoint for regulatory review."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Audit period start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Audit period end date in YYYY-MM-DD format."
          steps:
            - name: extract-records
              type: call
              call: "servicenow.get-audit-records"
              with:
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: upload-to-sharepoint
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "compliance_site"
                file_path: "AuditExports/audit_{{start_date}}_{{end_date}}.csv"
                content: "{{extract-records.csv_export}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: audit-records
          path: "/table/sys_audit?sysparm_query=sys_created_onBETWEEN{{start_date}}@{{end_date}}"
          inputParameters:
            - name: start_date
              in: path
            - name: end_date
              in: path
          operations:
            - name: get-audit-records
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT

Searches Confluence for articles matching a query string and returns the top results with titles, excerpts, and links.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches Confluence for articles matching a query string and returns the top results with titles, excerpts, and links."
  tags:
    - knowledge-management
    - confluence
    - search
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-confluence
          description: "Search Confluence knowledge base and return matching articles."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query string."
          call: "confluence.search"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://tilray.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql=text~\"{{query}}\""
          inputParameters:
            - name: query
              in: path
          operations:
            - name: search
              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.tilray-brands.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 environmental conditions for a grow room.

naftiko: "0.5"
info:
  label: "Cultivation Room Environment"
  description: "Retrieves environmental conditions for a grow room."
  tags:
    - cultivation
    - operations
capability:
  exposes:
    - type: mcp
      namespace: cultivation
      port: 8080
      tools:
        - name: get-cultivation
          description: "Retrieves environmental conditions for a grow room."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The cultivation room environment identifier."
          call: "cultivation-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: cultivation-api
      baseUri: "https://api.tilray-brands.com/cultivation/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: cultivation
          path: "/cultivation/room/environment/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-cultivation
              method: GET

Retrieves the current cultivation schedule from SAP and cross-references with demand forecasts in Salesforce to recommend planting adjustments, posting recommendations to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Cultivation Schedule Optimizer"
  description: "Retrieves the current cultivation schedule from SAP and cross-references with demand forecasts in Salesforce to recommend planting adjustments, posting recommendations to Microsoft Teams."
  tags:
    - cultivation
    - planning
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cultivation-planning
      port: 8080
      tools:
        - name: optimize-cultivation-schedule
          description: "Cross-reference SAP cultivation schedule with Salesforce demand forecast and recommend adjustments."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "The planning quarter (e.g., 2026-Q2)."
          steps:
            - name: get-schedule
              type: call
              call: "sap.get-cultivation-schedule"
              with:
                quarter: "{{quarter}}"
            - name: get-demand
              type: call
              call: "salesforce.get-demand-forecast"
              with:
                quarter: "{{quarter}}"
            - name: post-recommendations
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "cultivation_planning"
                text: "Cultivation schedule review for {{quarter}}: Planned batches: {{get-schedule.batch_count}}. Forecasted demand: {{get-demand.total_units}}. Recommend adjusting {{get-schedule.gap_analysis}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_SCHEDULE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: schedules
          path: "/CultivationScheduleSet?$filter=Quarter eq '{{quarter}}'"
          inputParameters:
            - name: quarter
              in: path
          operations:
            - name: get-cultivation-schedule
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: forecasts
          path: "/sobjects/Demand_Forecast__c?q=Quarter__c='{{quarter}}'"
          inputParameters:
            - name: quarter
              in: path
          operations:
            - name: get-demand-forecast
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Logs a customer complaint in Salesforce, creates a ServiceNow case for investigation, and notifies the quality team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Complaint Handler"
  description: "Logs a customer complaint in Salesforce, creates a ServiceNow case for investigation, and notifies the quality team via Microsoft Teams."
  tags:
    - customer-service
    - salesforce
    - servicenow
    - microsoft-teams
    - quality
capability:
  exposes:
    - type: mcp
      namespace: customer-complaints
      port: 8080
      tools:
        - name: handle-complaint
          description: "Log a complaint in Salesforce, create a ServiceNow case, and notify quality team."
          inputParameters:
            - name: customer_name
              in: body
              type: string
              description: "The customer or dispensary name."
            - name: product_sku
              in: body
              type: string
              description: "The product SKU involved."
            - name: complaint_detail
              in: body
              type: string
              description: "Description of the complaint."
          steps:
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Complaint: {{product_sku}} from {{customer_name}}"
                description: "{{complaint_detail}}"
                origin: "Phone"
            - name: create-investigation
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Product complaint: {{product_sku}}"
                category: "quality_investigation"
                description: "Customer {{customer_name}} reported: {{complaint_detail}}. SF Case: {{log-in-salesforce.case_number}}"
            - name: notify-quality
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "quality_team"
                text: "New complaint for {{product_sku}} from {{customer_name}}. ServiceNow: {{create-investigation.number}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

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

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

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

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

Queries Datadog for the health status of a specified application service, returning error rate, latency, and throughput metrics.

naftiko: "0.5"
info:
  label: "Datadog Application Health Check"
  description: "Queries Datadog for the health status of a specified application service, returning error rate, latency, and throughput metrics."
  tags:
    - monitoring
    - datadog
    - application-health
capability:
  exposes:
    - type: mcp
      namespace: app-monitoring
      port: 8080
      tools:
        - name: get-app-health
          description: "Fetch application health metrics from Datadog for a service."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name."
          call: "datadog.get-service-metrics"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        headerName: "DD-API-KEY"
      resources:
        - name: service-metrics
          path: "/query?query=avg:trace.http.request.duration{service:{{service_name}}}"
          inputParameters:
            - name: service_name
              in: path
          operations:
            - name: get-service-metrics
              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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 dispensary account details from Salesforce including contact info, license status, and order history summary.

naftiko: "0.5"
info:
  label: "Dispensary Account Lookup"
  description: "Retrieves dispensary account details from Salesforce including contact info, license status, and order history summary."
  tags:
    - sales
    - salesforce
    - dispensary
    - accounts
capability:
  exposes:
    - type: mcp
      namespace: dispensary-accounts
      port: 8080
      tools:
        - name: get-dispensary-account
          description: "Look up a dispensary account in Salesforce by account ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID for the dispensary."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

When a dispensary places an order in Salesforce, validates inventory in SAP, creates a pick list, and sends confirmation to the dispensary via email and updates Salesforce.

naftiko: "0.5"
info:
  label: "Dispensary Order Fulfillment Pipeline"
  description: "When a dispensary places an order in Salesforce, validates inventory in SAP, creates a pick list, and sends confirmation to the dispensary via email and updates Salesforce."
  tags:
    - sales
    - order-fulfillment
    - salesforce
    - sap
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: order-fulfillment
      port: 8080
      tools:
        - name: fulfill-dispensary-order
          description: "Validate inventory, create pick list, and confirm dispensary order."
          inputParameters:
            - name: salesforce_order_id
              in: body
              type: string
              description: "The Salesforce order record ID."
          steps:
            - name: get-order
              type: call
              call: "salesforce.get-order"
              with:
                order_id: "{{salesforce_order_id}}"
            - name: check-inventory
              type: call
              call: "sap.check-availability"
              with:
                materials: "{{get-order.line_items}}"
                plant: "{{get-order.fulfillment_plant}}"
            - name: create-pick-list
              type: call
              call: "sap.create-delivery"
              with:
                order_ref: "{{salesforce_order_id}}"
                materials: "{{check-inventory.available_items}}"
            - name: update-salesforce
              type: call
              call: "salesforce.update-order"
              with:
                order_id: "{{salesforce_order_id}}"
                status: "In Fulfillment"
                delivery_number: "{{create-pick-list.delivery_number}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: orders
          path: "/sobjects/Order/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
            - name: update-order
              method: PATCH
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZSD_FULFILL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: availability
          path: "/AvailabilityCheckSet"
          operations:
            - name: check-availability
              method: POST
        - name: deliveries
          path: "/DeliverySet"
          operations:
            - name: create-delivery
              method: POST

Retrieves daily sales report for a dispensary.

naftiko: "0.5"
info:
  label: "Dispensary Sales Report"
  description: "Retrieves daily sales report for a dispensary."
  tags:
    - sales
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-dispensary
          description: "Retrieves daily sales report for a dispensary."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The dispensary sales report identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.tilray-brands.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: dispensary
          path: "/dispensary/sales/report/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-dispensary
              method: GET

Queries SAP for a distribution order by order number and returns shipment status, carrier, estimated delivery, and destination dispensary.

naftiko: "0.5"
info:
  label: "Distribution Order Status"
  description: "Queries SAP for a distribution order by order number and returns shipment status, carrier, estimated delivery, and destination dispensary."
  tags:
    - distribution
    - logistics
    - sap
    - order-tracking
capability:
  exposes:
    - type: mcp
      namespace: distribution-ops
      port: 8080
      tools:
        - name: get-distribution-order
          description: "Look up a SAP distribution order and return shipment status, carrier, and delivery estimate."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "The SAP distribution order number."
          call: "sap.get-order"
          with:
            order_number: "{{order_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZSD_DISTRIB_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/DistributionOrderSet('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-order
              method: GET

Sends a vendor contract for e-signature via DocuSign and logs the signing status in Salesforce.

naftiko: "0.5"
info:
  label: "DocuSign Contract Execution"
  description: "Sends a vendor contract for e-signature via DocuSign and logs the signing status in Salesforce."
  tags:
    - legal
    - docusign
    - salesforce
    - contracts
capability:
  exposes:
    - type: mcp
      namespace: contract-management
      port: 8080
      tools:
        - name: send-contract-for-signature
          description: "Send a contract via DocuSign and log status in Salesforce."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "The Salesforce contract record ID."
            - name: signer_email
              in: body
              type: string
              description: "The signer's email address."
            - name: signer_name
              in: body
              type: string
              description: "The signer's full name."
          steps:
            - name: get-contract
              type: call
              call: "salesforce.get-contract"
              with:
                contract_id: "{{contract_id}}"
            - name: send-envelope
              type: call
              call: "docusign.create-envelope"
              with:
                document_url: "{{get-contract.document_url}}"
                signer_email: "{{signer_email}}"
                signer_name: "{{signer_name}}"
            - name: update-contract
              type: call
              call: "salesforce.update-contract"
              with:
                contract_id: "{{contract_id}}"
                envelope_id: "{{send-envelope.envelope_id}}"
                status: "Sent for Signature"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contracts
          path: "/sobjects/Contract/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              method: GET
            - name: update-contract
              method: PATCH
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: create-envelope
              method: POST

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

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
  tags:
    - hr
    - identity
    - operations
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-offboarding-orchestrator
          description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 training materials, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for training materials, 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: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Tilray Brands, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Training docs are at {{provision-folder.url}}."
  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://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Checks equipment maintenance schedules in SAP Plant Maintenance and creates ServiceNow work orders for upcoming preventive maintenance tasks.

naftiko: "0.5"
info:
  label: "Equipment Maintenance Scheduler"
  description: "Checks equipment maintenance schedules in SAP Plant Maintenance and creates ServiceNow work orders for upcoming preventive maintenance tasks."
  tags:
    - maintenance
    - sap
    - servicenow
    - equipment
capability:
  exposes:
    - type: mcp
      namespace: equipment-maintenance
      port: 8080
      tools:
        - name: schedule-preventive-maintenance
          description: "Check SAP for upcoming maintenance and create ServiceNow work orders."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code."
            - name: days_ahead
              in: body
              type: string
              description: "Number of days to look ahead for due maintenance."
          steps:
            - name: get-due-maintenance
              type: call
              call: "sap.get-maintenance-due"
              with:
                plant_code: "{{plant_code}}"
                days_ahead: "{{days_ahead}}"
            - name: create-work-orders
              type: call
              call: "servicenow.create-record"
              with:
                table: "wm_order"
                short_description: "Preventive maintenance: {{get-due-maintenance.equipment_list}}"
                plant: "{{plant_code}}"
                due_date: "{{get-due-maintenance.next_due_date}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZPM_MAINTENANCE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-due
          path: "/MaintenanceDueSet?$filter=Plant eq '{{plant_code}}' and DaysAhead eq {{days_ahead}}"
          inputParameters:
            - name: plant_code
              in: path
            - name: days_ahead
              in: path
          operations:
            - name: get-maintenance-due
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Calculates excise tax obligations for a shipment batch in SAP, logs the calculation in the compliance system, and creates a Jira task for the finance team to review.

naftiko: "0.5"
info:
  label: "Excise Tax Calculation and Filing"
  description: "Calculates excise tax obligations for a shipment batch in SAP, logs the calculation in the compliance system, and creates a Jira task for the finance team to review."
  tags:
    - compliance
    - tax
    - sap
    - jira
    - finance
capability:
  exposes:
    - type: mcp
      namespace: excise-tax
      port: 8080
      tools:
        - name: calculate-and-file-excise-tax
          description: "Calculate excise tax for a batch, log in compliance system, and create a Jira review task."
          inputParameters:
            - name: batch_id
              in: body
              type: string
              description: "The SAP batch identifier."
            - name: destination_province
              in: body
              type: string
              description: "The destination province code."
          steps:
            - name: get-batch-details
              type: call
              call: "sap.get-batch-tax"
              with:
                batch_id: "{{batch_id}}"
            - name: log-tax-calc
              type: call
              call: "compliance.log-excise"
              with:
                batch_id: "{{batch_id}}"
                province: "{{destination_province}}"
                amount: "{{get-batch-details.taxable_amount}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project: "FIN"
                summary: "Review excise tax for batch {{batch_id}} to {{destination_province}}"
                description: "Tax amount: {{log-tax-calc.calculated_tax}}. Batch value: {{get-batch-details.taxable_amount}}."
                issue_type: "Task"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZFI_TAX_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batch-tax
          path: "/BatchTaxSet('{{batch_id}}')"
          inputParameters:
            - name: batch_id
              in: path
          operations:
            - name: get-batch-tax
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: excise
          path: "/excise-tax/calculate"
          operations:
            - name: log-excise
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://tilray.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 vendor invoice arrives in SAP, matches it to the purchase order, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow.

naftiko: "0.5"
info:
  label: "Finance Invoice Processing Pipeline"
  description: "When a vendor invoice arrives in SAP, matches it to the purchase order, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow."
  tags:
    - finance
    - sap
    - microsoft-power-automate
    - servicenow
    - invoice
capability:
  exposes:
    - type: mcp
      namespace: invoice-processing
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Match a vendor invoice to its PO in SAP, route for approval, and log in ServiceNow."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The vendor invoice number."
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number to match against."
          steps:
            - name: match-invoice
              type: call
              call: "sap.match-invoice-to-po"
              with:
                invoice_number: "{{invoice_number}}"
                po_number: "{{po_number}}"
            - name: route-approval
              type: call
              call: "power-automate.trigger-flow"
              with:
                flow_id: "invoice_approval_flow"
                invoice_number: "{{invoice_number}}"
                match_status: "{{match-invoice.match_status}}"
                amount: "{{match-invoice.invoice_amount}}"
            - name: log-processing
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_invoice_log"
                invoice_number: "{{invoice_number}}"
                po_number: "{{po_number}}"
                status: "{{route-approval.approval_status}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZFI_INVOICE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoice-match
          path: "/InvoiceMatchSet"
          operations:
            - name: match-invoice-to-po
              method: POST
    - type: http
      namespace: power-automate
      baseUri: "https://prod-01.westus.logic.azure.com/workflows"
      authentication:
        type: bearer
        token: "$secrets.power_automate_token"
      resources:
        - name: flows
          path: "/{{flow_id}}/triggers/manual/paths/invoke"
          inputParameters:
            - name: flow_id
              in: path
          operations:
            - name: trigger-flow
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Fetches a document from Google Drive by file ID and returns metadata, download link, and sharing permissions.

naftiko: "0.5"
info:
  label: "Google Drive Document Retrieval"
  description: "Fetches a document from Google Drive by file ID and returns metadata, download link, and sharing permissions."
  tags:
    - document-management
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: doc-management
      port: 8080
      tools:
        - name: get-drive-document
          description: "Retrieve a Google Drive document by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
          call: "gdrive.get-file"
          with:
            file_id: "{{file_id}}"
  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/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              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.tilray-brands.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Exports a dataset to a Google Sheets spreadsheet for ad hoc analysis and sharing.

naftiko: "0.5"
info:
  label: "Google Sheets Data Export"
  description: "Exports a dataset to a Google Sheets spreadsheet for ad hoc analysis and sharing."
  tags:
    - reporting
    - google-sheets
    - data-export
capability:
  exposes:
    - type: mcp
      namespace: data-export
      port: 8080
      tools:
        - name: export-to-sheets
          description: "Write data to a Google Sheets spreadsheet."
          inputParameters:
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
            - name: range
              in: body
              type: string
              description: "The cell range to write to (e.g., Sheet1!A1:D100)."
            - name: values
              in: body
              type: string
              description: "The data values to write as a JSON array."
          call: "gsheets.update-values"
          with:
            spreadsheet_id: "{{spreadsheet_id}}"
            range: "{{range}}"
            values: "{{values}}"
  consumes:
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-values
              method: PUT

Fetches real-time temperature, humidity, and CO2 readings from the IoT sensor platform for a specified greenhouse zone and logs the data in SAP for cultivation compliance.

naftiko: "0.5"
info:
  label: "Greenhouse Environment Monitor"
  description: "Fetches real-time temperature, humidity, and CO2 readings from the IoT sensor platform for a specified greenhouse zone and logs the data in SAP for cultivation compliance."
  tags:
    - cultivation
    - iot
    - greenhouse
    - sap
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: greenhouse-monitoring
      port: 8080
      tools:
        - name: check-greenhouse-environment
          description: "Retrieve current environmental readings for a greenhouse zone from IoT sensors and log to SAP for compliance."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The greenhouse zone identifier."
          steps:
            - name: get-readings
              type: call
              call: "iot-platform.get-zone-readings"
              with:
                zone_id: "{{zone_id}}"
            - name: log-to-sap
              type: call
              call: "sap.post-environment-log"
              with:
                zone_id: "{{zone_id}}"
                temperature: "{{get-readings.temperature}}"
                humidity: "{{get-readings.humidity}}"
                co2_ppm: "{{get-readings.co2_ppm}}"
  consumes:
    - type: http
      namespace: iot-platform
      baseUri: "https://iot.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.iot_token"
      resources:
        - name: zone-readings
          path: "/zones/{{zone_id}}/current"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-zone-readings
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_ENVIRONMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: environment-logs
          path: "/EnvironmentLogSet"
          operations:
            - name: post-environment-log
              method: POST

Pulls harvest data from SAP for a date range, aggregates yield by strain in Power BI, and distributes the report via Microsoft Teams to the cultivation leadership.

naftiko: "0.5"
info:
  label: "Harvest Yield Report Generator"
  description: "Pulls harvest data from SAP for a date range, aggregates yield by strain in Power BI, and distributes the report via Microsoft Teams to the cultivation leadership."
  tags:
    - cultivation
    - reporting
    - sap
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: harvest-reporting
      port: 8080
      tools:
        - name: generate-harvest-report
          description: "Generate and distribute a harvest yield report for a date range across SAP, Power BI, and Teams."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Report start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Report end date in YYYY-MM-DD format."
            - name: teams_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for distribution."
          steps:
            - name: pull-harvest-data
              type: call
              call: "sap.get-harvests"
              with:
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: refresh-report
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "harvest_yield_ds"
            - name: distribute-report
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Harvest yield report for {{start_date}} to {{end_date}} is ready: {{refresh-report.report_url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_HARVEST_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: harvests
          path: "/HarvestSet?$filter=HarvestDate ge datetime'{{start_date}}' and HarvestDate le datetime'{{end_date}}'"
          inputParameters:
            - name: start_date
              in: path
            - name: end_date
              in: path
          operations:
            - name: get-harvests
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

When a new lead is created in HubSpot, enriches the contact with firmographic data from ZoomInfo and syncs to Salesforce.

naftiko: "0.5"
info:
  label: "HubSpot Lead Enrichment"
  description: "When a new lead is created in HubSpot, enriches the contact with firmographic data from ZoomInfo and syncs to Salesforce."
  tags:
    - marketing
    - hubspot
    - zoominfo
    - salesforce
    - lead-enrichment
capability:
  exposes:
    - type: mcp
      namespace: lead-management
      port: 8080
      tools:
        - name: enrich-and-sync-lead
          description: "Enrich a HubSpot lead with ZoomInfo data and sync to Salesforce."
          inputParameters:
            - name: contact_email
              in: body
              type: string
              description: "The lead email address."
          steps:
            - name: get-hubspot-contact
              type: call
              call: "hubspot.get-contact"
              with:
                email: "{{contact_email}}"
            - name: enrich-with-zoominfo
              type: call
              call: "zoominfo.enrich-contact"
              with:
                email: "{{contact_email}}"
            - name: sync-to-salesforce
              type: call
              call: "salesforce.create-lead"
              with:
                email: "{{contact_email}}"
                company: "{{enrich-with-zoominfo.company_name}}"
                industry: "{{enrich-with-zoominfo.industry}}"
                revenue: "{{enrich-with-zoominfo.revenue}}"
  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}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: contacts
          path: "/enrich/contact"
          operations:
            - name: enrich-contact
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              method: POST

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries SAP for current inventory levels of a product at a specified warehouse location, returning available quantity, reserved stock, and reorder status.

naftiko: "0.5"
info:
  label: "Inventory Level Checker"
  description: "Queries SAP for current inventory levels of a product at a specified warehouse location, returning available quantity, reserved stock, and reorder status."
  tags:
    - inventory
    - warehouse
    - sap
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: inventory-mgmt
      port: 8080
      tools:
        - name: get-inventory-level
          description: "Check current inventory levels for a product at a warehouse in SAP."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant/warehouse code."
          call: "sap.get-stock"
          with:
            material_number: "{{material_number}}"
            plant_code: "{{plant_code}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZMM_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/StockSet(MaterialNumber='{{material_number}}',Plant='{{plant_code}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant_code
              in: path
          operations:
            - name: get-stock
              method: GET

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 sprint and its issues for a Jira project board, returning sprint name, progress, and open issue count.

naftiko: "0.5"
info:
  label: "Jira Sprint Board Viewer"
  description: "Retrieves the current sprint and its issues for a Jira project board, returning sprint name, progress, and open issue count."
  tags:
    - development
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: dev-ops
      port: 8080
      tools:
        - name: get-current-sprint
          description: "Fetch current sprint details and issue summary for a Jira board."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
          call: "jira.get-sprint"
          with:
            board_id: "{{board_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://tilray.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprint
              method: GET

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

Publishes a new job opening from Workday to LinkedIn Talent Solutions and tracks the posting status.

naftiko: "0.5"
info:
  label: "LinkedIn Job Posting Publisher"
  description: "Publishes a new job opening from Workday to LinkedIn Talent Solutions and tracks the posting status."
  tags:
    - hr
    - recruiting
    - workday
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: publish-job-to-linkedin
          description: "Fetch a job requisition from Workday and publish to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: publish-posting
              type: call
              call: "linkedin.create-job-posting"
              with:
                title: "{{get-requisition.title}}"
                description: "{{get-requisition.description}}"
                location: "{{get-requisition.location}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/simpleJobPostings"
          operations:
            - name: create-job-posting
              method: POST

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

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Orchestrator"
  description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
  tags:
    - marketing
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: run-marketing-campaign-performance-orchestrator
          description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 campaign metrics from Google Analytics for a specified campaign and date range.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance"
  description: "Retrieves campaign metrics from Google Analytics for a specified campaign and date range."
  tags:
    - marketing
    - google-analytics
    - campaigns
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Fetch Google Analytics campaign performance data for a date range."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Google Analytics campaign identifier."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "ga.get-campaign-report"
          with:
            campaign_id: "{{campaign_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{campaign_id}}:runReport"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-report
              method: POST

Retrieves a METRC transfer manifest by ID.

naftiko: "0.5"
info:
  label: "METRC Transfer Manifest"
  description: "Retrieves a METRC transfer manifest by ID."
  tags:
    - compliance
    - logistics
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: get-metrc
          description: "Retrieves a METRC transfer manifest by ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The metrc transfer manifest identifier."
          call: "compliance-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: compliance-api
      baseUri: "https://api.tilray-brands.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: metrc
          path: "/metrc/transfer/manifest/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-metrc
              method: GET

Fetches data from SAP and generates a formatted Excel report in SharePoint for finance review.

naftiko: "0.5"
info:
  label: "Microsoft Excel Report Generator"
  description: "Fetches data from SAP and generates a formatted Excel report in SharePoint for finance review."
  tags:
    - reporting
    - microsoft-excel
    - sap
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: excel-reporting
      port: 8080
      tools:
        - name: generate-excel-report
          description: "Pull SAP data and create an Excel report in SharePoint."
          inputParameters:
            - name: report_type
              in: body
              type: string
              description: "The type of report to generate."
            - name: period
              in: body
              type: string
              description: "The reporting period in YYYY-MM format."
          steps:
            - name: fetch-data
              type: call
              call: "sap.get-report-data"
              with:
                report_type: "{{report_type}}"
                period: "{{period}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "finance_reports"
                file_path: "Reports/{{report_type}}_{{period}}.xlsx"
                content: "{{fetch-data.excel_content}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZFI_REPORT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: report-data
          path: "/ReportDataSet?$filter=ReportType eq '{{report_type}}' and Period eq '{{period}}'"
          inputParameters:
            - name: report_type
              in: path
            - name: period
              in: path
          operations:
            - name: get-report-data
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT

Sends a formatted email via Microsoft Outlook Graph API for external stakeholder communication.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends a formatted email via Microsoft Outlook Graph API for external stakeholder communication."
  tags:
    - communications
    - microsoft-outlook
    - email
capability:
  exposes:
    - type: mcp
      namespace: email-comms
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Microsoft Outlook."
          inputParameters:
            - name: to_address
              in: body
              type: string
              description: "The recipient email address."
            - name: subject
              in: body
              type: string
              description: "The email subject."
            - name: body_text
              in: body
              type: string
              description: "The email body."
          call: "outlook.send-email"
          with:
            to: "{{to_address}}"
            subject: "{{subject}}"
            body: "{{body_text}}"
  consumes:
    - 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-email
              method: POST

Sends a formatted message to a specified Microsoft Teams channel, used by various workflows for team notifications.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notifier"
  description: "Sends a formatted message to a specified Microsoft Teams channel, used by various workflows for team notifications."
  tags:
    - communications
    - microsoft-teams
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: team-notifications
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Post a notification message to a Microsoft Teams channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The message text to send."
          call: "msteams.post-channel-message"
          with:
            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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-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.tilray-brands.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 and updates nutrient feed schedules for greenhouse zones in the cultivation management system.

naftiko: "0.5"
info:
  label: "Nutrient Feed Schedule Manager"
  description: "Retrieves and updates nutrient feed schedules for greenhouse zones in the cultivation management system."
  tags:
    - cultivation
    - nutrients
    - greenhouse
    - scheduling
capability:
  exposes:
    - type: mcp
      namespace: nutrient-management
      port: 8080
      tools:
        - name: get-feed-schedule
          description: "Retrieve the nutrient feed schedule for a greenhouse zone."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The greenhouse zone identifier."
          call: "cultivation-mgmt.get-feed-schedule"
          with:
            zone_id: "{{zone_id}}"
  consumes:
    - type: http
      namespace: cultivation-mgmt
      baseUri: "https://cultivation.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cultivation_api_token"
      resources:
        - name: feed-schedules
          path: "/zones/{{zone_id}}/feed-schedule"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-feed-schedule
              method: GET

Validates cannabis product packaging labels against provincial regulatory requirements by querying the compliance system and returns pass/fail with specific deficiency details.

naftiko: "0.5"
info:
  label: "Packaging Label Compliance Validator"
  description: "Validates cannabis product packaging labels against provincial regulatory requirements by querying the compliance system and returns pass/fail with specific deficiency details."
  tags:
    - compliance
    - packaging
    - labeling
    - cannabis
    - quality
capability:
  exposes:
    - type: mcp
      namespace: label-compliance
      port: 8080
      tools:
        - name: validate-packaging-label
          description: "Validate a cannabis product label against provincial regulatory requirements."
          inputParameters:
            - name: product_sku
              in: body
              type: string
              description: "The product SKU."
            - name: province_code
              in: body
              type: string
              description: "The destination province code."
            - name: label_version
              in: body
              type: string
              description: "The label design version identifier."
          call: "compliance.validate-label"
          with:
            product_sku: "{{product_sku}}"
            province: "{{province_code}}"
            version: "{{label_version}}"
  consumes:
    - type: http
      namespace: compliance
      baseUri: "https://compliance.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: label-validation
          path: "/labels/validate"
          operations:
            - name: validate-label
              method: POST

When a pest or disease is detected during crop inspection, logs the finding in SAP, creates a Jira task for the cultivation team, and sends an alert to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Pest and Disease Alert System"
  description: "When a pest or disease is detected during crop inspection, logs the finding in SAP, creates a Jira task for the cultivation team, and sends an alert to Microsoft Teams."
  tags:
    - cultivation
    - crop-protection
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: pest-management
      port: 8080
      tools:
        - name: report-pest-detection
          description: "Log a pest/disease detection in SAP, create a Jira task, and alert the cultivation team via Teams."
          inputParameters:
            - name: greenhouse_zone
              in: body
              type: string
              description: "The greenhouse zone where the issue was detected."
            - name: pest_type
              in: body
              type: string
              description: "The type of pest or disease detected."
            - name: severity
              in: body
              type: string
              description: "Severity level: low, medium, high, critical."
          steps:
            - name: log-in-sap
              type: call
              call: "sap.create-pest-record"
              with:
                zone: "{{greenhouse_zone}}"
                pest_type: "{{pest_type}}"
                severity: "{{severity}}"
            - name: create-task
              type: call
              call: "jira.create-issue"
              with:
                project: "CULT"
                summary: "Pest alert: {{pest_type}} in zone {{greenhouse_zone}}"
                description: "Severity: {{severity}}. SAP record: {{log-in-sap.record_id}}."
                issue_type: "Task"
                priority: "{{severity}}"
            - name: alert-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "cultivation_alerts"
                text: "PEST ALERT: {{pest_type}} detected in zone {{greenhouse_zone}} ({{severity}}). Jira: {{create-task.key}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_PEST_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: pest-records
          path: "/PestRecordSet"
          operations:
            - name: create-pest-record
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://tilray.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Triggers a Power BI dataset refresh and returns the refresh status, used to keep executive dashboards current.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh and returns the refresh status, used to keep executive dashboards current."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-refresh
      port: 8080
      tools:
        - name: refresh-dashboard
          description: "Trigger a Power BI dataset refresh and return status."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            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: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              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.tilray-brands.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 lab test results for a cannabis product lot from the LIMS system including potency, terpene profile, and contaminant screening status.

naftiko: "0.5"
info:
  label: "Product Quality Test Result"
  description: "Retrieves lab test results for a cannabis product lot from the LIMS system including potency, terpene profile, and contaminant screening status."
  tags:
    - quality
    - testing
    - lims
    - cannabis
capability:
  exposes:
    - type: mcp
      namespace: quality-testing
      port: 8080
      tools:
        - name: get-lab-results
          description: "Look up lab test results for a product lot including potency, terpenes, and contaminant screening."
          inputParameters:
            - name: lot_number
              in: body
              type: string
              description: "The product lot number to retrieve test results for."
          call: "lims.get-results"
          with:
            lot_number: "{{lot_number}}"
  consumes:
    - type: http
      namespace: lims
      baseUri: "https://lims.tilray.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.lims_token"
      resources:
        - name: test-results
          path: "/lots/{{lot_number}}/results"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-results
              method: GET

Generates a provincial cannabis regulatory report from SAP data, formats it for submission, uploads to SharePoint, and logs the filing in ServiceNow.

naftiko: "0.5"
info:
  label: "Provincial Regulatory Report Submitter"
  description: "Generates a provincial cannabis regulatory report from SAP data, formats it for submission, uploads to SharePoint, and logs the filing in ServiceNow."
  tags:
    - compliance
    - regulatory
    - sap
    - sharepoint
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: regulatory-reporting
      port: 8080
      tools:
        - name: submit-regulatory-report
          description: "Generate, upload, and log a provincial regulatory report."
          inputParameters:
            - name: province_code
              in: body
              type: string
              description: "The province code for the regulatory jurisdiction."
            - name: report_period
              in: body
              type: string
              description: "The reporting period in YYYY-MM format."
          steps:
            - name: generate-report
              type: call
              call: "sap.generate-regulatory-data"
              with:
                province: "{{province_code}}"
                period: "{{report_period}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "regulatory_filings"
                file_path: "Filings/{{province_code}}/{{report_period}}_report.pdf"
                content: "{{generate-report.report_content}}"
            - name: log-filing
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_regulatory_filing"
                province: "{{province_code}}"
                period: "{{report_period}}"
                document_url: "{{upload-report.url}}"
                status: "submitted"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_REGULATORY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: regulatory-data
          path: "/RegulatoryReportSet"
          operations:
            - name: generate-regulatory-data
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

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

naftiko: "0.5"
info:
  label: "Quarterly Business Review Orchestrator"
  description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
  tags:
    - analytics
    - business
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-quarterly-business-review-orchestrator
          description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 product recall is initiated, pulls affected lot data from SAP, creates a ServiceNow major incident, alerts the quality team via Microsoft Teams, and updates the compliance portal.

naftiko: "0.5"
info:
  label: "Recall Notification Orchestrator"
  description: "When a product recall is initiated, pulls affected lot data from SAP, creates a ServiceNow major incident, alerts the quality team via Microsoft Teams, and updates the compliance portal."
  tags:
    - quality
    - recall
    - sap
    - servicenow
    - microsoft-teams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: recall-management
      port: 8080
      tools:
        - name: initiate-recall
          description: "Orchestrate a product recall across SAP, ServiceNow, Teams, and the compliance system."
          inputParameters:
            - name: lot_number
              in: body
              type: string
              description: "The lot number being recalled."
            - name: reason
              in: body
              type: string
              description: "The reason for the recall."
          steps:
            - name: get-affected-lots
              type: call
              call: "sap.get-lot-distribution"
              with:
                lot_number: "{{lot_number}}"
            - name: create-major-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Product recall: Lot {{lot_number}}"
                priority: "1"
                category: "product_recall"
                description: "Recall initiated for lot {{lot_number}}. Reason: {{reason}}. Affected locations: {{get-affected-lots.location_count}}."
            - name: alert-quality-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "quality_alerts_channel"
                text: "RECALL ALERT: Lot {{lot_number}} recalled. Incident {{create-major-incident.number}}. Reason: {{reason}}."
            - name: update-compliance
              type: call
              call: "compliance.create-recall-record"
              with:
                lot_number: "{{lot_number}}"
                reason: "{{reason}}"
                incident_number: "{{create-major-incident.number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZQM_RECALL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: lot-distribution
          path: "/LotDistributionSet('{{lot_number}}')"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-lot-distribution
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST
    - type: http
      namespace: compliance
      baseUri: "https://compliance.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: recalls
          path: "/recalls"
          operations:
            - name: create-recall-record
              method: POST

Retrieves the latest compliance document for a given product SKU from SharePoint, used by quality and regulatory teams to confirm cannabis product certifications.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Document Lookup"
  description: "Retrieves the latest compliance document for a given product SKU from SharePoint, used by quality and regulatory teams to confirm cannabis product certifications."
  tags:
    - compliance
    - regulatory
    - sharepoint
    - quality
capability:
  exposes:
    - type: mcp
      namespace: compliance-docs
      port: 8080
      tools:
        - name: get-compliance-doc
          description: "Fetch the latest compliance certificate for a product SKU from the SharePoint regulatory library."
          inputParameters:
            - name: product_sku
              in: body
              type: string
              description: "The product SKU to look up compliance documents for."
          call: "sharepoint.get-doc"
          with:
            product_sku: "{{product_sku}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: regulatory-docs
          path: "/tilray-regulatory/drive/root:/ComplianceDocs/{{product_sku}}"
          inputParameters:
            - name: product_sku
              in: path
          operations:
            - name: get-doc
              method: GET

Retrieves a Salesforce opportunity and creates a corresponding sales order in SAP, linking the dispensary account and product catalog.

naftiko: "0.5"
info:
  label: "Sales Order Entry via Salesforce"
  description: "Retrieves a Salesforce opportunity and creates a corresponding sales order in SAP, linking the dispensary account and product catalog."
  tags:
    - sales
    - salesforce
    - sap
    - order-management
capability:
  exposes:
    - type: mcp
      namespace: sales-orders
      port: 8080
      tools:
        - name: create-sales-order-from-opportunity
          description: "Convert a Salesforce opportunity into a SAP sales order with product lines and dispensary details."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-order
              type: call
              call: "sap.create-sales-order"
              with:
                customer_id: "{{get-opportunity.account_id}}"
                products: "{{get-opportunity.line_items}}"
                requested_date: "{{get-opportunity.close_date}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.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://tilray.sap.com/sap/opu/odata/sap/ZSD_SALES_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sales-orders
          path: "/SalesOrderSet"
          operations:
            - name: create-sales-order
              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.tilray-brands.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Retrieves the current sales pipeline from Salesforce for a specified product category, returning opportunity count, total value, and stage distribution.

naftiko: "0.5"
info:
  label: "Salesforce Pipeline Report"
  description: "Retrieves the current sales pipeline from Salesforce for a specified product category, returning opportunity count, total value, and stage distribution."
  tags:
    - sales
    - salesforce
    - pipeline
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: sales-pipeline
      port: 8080
      tools:
        - name: get-sales-pipeline
          description: "Fetch Salesforce sales pipeline by product category."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "The product category to filter."
          call: "salesforce.get-pipeline"
          with:
            category: "{{category}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: pipeline
          path: "/sobjects/Opportunity?q=Product_Category__c='{{category}}' AND IsClosed=false"
          inputParameters:
            - name: category
              in: path
          operations:
            - name: get-pipeline
              method: GET

Creates an expense report in SAP Concur from receipts and submits it for manager approval.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Submitter"
  description: "Creates an expense report in SAP Concur from receipts and submits it for manager approval."
  tags:
    - finance
    - sap-concur
    - expense-management
capability:
  exposes:
    - type: mcp
      namespace: expense-mgmt
      port: 8080
      tools:
        - name: submit-expense-report
          description: "Create and submit an expense report in SAP Concur."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee ID submitting the report."
            - name: report_name
              in: body
              type: string
              description: "Name for the expense report."
            - name: expense_entries
              in: body
              type: string
              description: "JSON array of expense entries."
          call: "concur.create-report"
          with:
            employee_id: "{{employee_id}}"
            report_name: "{{report_name}}"
            entries: "{{expense_entries}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports"
          operations:
            - name: create-report
              method: POST

Retrieves material master data from SAP by material number including description, unit of measure, product group, and storage conditions.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves material master data from SAP by material number including description, unit of measure, product group, and storage conditions."
  tags:
    - erp
    - sap
    - materials
    - master-data
capability:
  exposes:
    - type: mcp
      namespace: material-master
      port: 8080
      tools:
        - name: get-material
          description: "Look up SAP material master data by material number."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          call: "sap.get-material"
          with:
            material_number: "{{material_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.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_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              method: GET

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

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

Traces a cannabis product from seed batch through cultivation, testing, and distribution by querying SAP, LIMS, and the compliance system, returning the full chain-of-custody.

naftiko: "0.5"
info:
  label: "Seed-to-Sale Traceability Pipeline"
  description: "Traces a cannabis product from seed batch through cultivation, testing, and distribution by querying SAP, LIMS, and the compliance system, returning the full chain-of-custody."
  tags:
    - compliance
    - traceability
    - sap
    - lims
    - cannabis
    - seed-to-sale
capability:
  exposes:
    - type: mcp
      namespace: traceability
      port: 8080
      tools:
        - name: trace-product
          description: "Trace a cannabis product through the full seed-to-sale chain across SAP, LIMS, and compliance."
          inputParameters:
            - name: product_lot
              in: body
              type: string
              description: "The product lot number to trace."
          steps:
            - name: get-cultivation-record
              type: call
              call: "sap.get-cultivation-record"
              with:
                lot_number: "{{product_lot}}"
            - name: get-test-results
              type: call
              call: "lims.get-results"
              with:
                lot_number: "{{product_lot}}"
            - name: get-distribution-record
              type: call
              call: "sap.get-distribution-record"
              with:
                lot_number: "{{product_lot}}"
            - name: get-compliance-status
              type: call
              call: "compliance.get-lot-status"
              with:
                lot_number: "{{product_lot}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZCB_TRACE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: cultivation-records
          path: "/CultivationRecordSet('{{lot_number}}')"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-cultivation-record
              method: GET
        - name: distribution-records
          path: "/DistributionRecordSet('{{lot_number}}')"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-distribution-record
              method: GET
    - type: http
      namespace: lims
      baseUri: "https://lims.tilray.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.lims_token"
      resources:
        - name: test-results
          path: "/lots/{{lot_number}}/results"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-results
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: lot-status
          path: "/lots/{{lot_number}}/status"
          inputParameters:
            - name: lot_number
              in: path
          operations:
            - name: get-lot-status
              method: GET

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.tilray-brands.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 the current state, priority, assigned group, and resolution notes.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number and returns the current state, priority, assigned group, and resolution notes."
  tags:
    - it-support
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: path
          operations:
            - name: get-incident
              method: GET

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.tilray-brands.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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.tilray-brands.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Queries the internal genetics database for a cannabis strain by name, returning genetic lineage, cannabinoid profile targets, and growth characteristics.

naftiko: "0.5"
info:
  label: "Strain Genetics Database Lookup"
  description: "Queries the internal genetics database for a cannabis strain by name, returning genetic lineage, cannabinoid profile targets, and growth characteristics."
  tags:
    - cultivation
    - genetics
    - cannabis
    - research
capability:
  exposes:
    - type: mcp
      namespace: genetics-db
      port: 8080
      tools:
        - name: get-strain-profile
          description: "Look up cannabis strain genetics, cannabinoid targets, and growth characteristics."
          inputParameters:
            - name: strain_name
              in: body
              type: string
              description: "The strain name to look up."
          call: "genetics.get-strain"
          with:
            strain_name: "{{strain_name}}"
  consumes:
    - type: http
      namespace: genetics
      baseUri: "https://genetics.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.genetics_db_token"
      resources:
        - name: strains
          path: "/strains?name={{strain_name}}"
          inputParameters:
            - name: strain_name
              in: path
          operations:
            - name: get-strain
              method: GET

Retrieves terpene profile data for a cannabis strain.

naftiko: "0.5"
info:
  label: "Strain Terpene Profile"
  description: "Retrieves terpene profile data for a cannabis strain."
  tags:
    - product-management
    - quality
capability:
  exposes:
    - type: mcp
      namespace: product-management
      port: 8080
      tools:
        - name: get-strain
          description: "Retrieves terpene profile data for a cannabis strain."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The strain terpene profile identifier."
          call: "product-management-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: product-management-api
      baseUri: "https://api.tilray-brands.com/product-management/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: strain
          path: "/strain/terpene/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-strain
              method: GET

Queries the carrier tracking API for a shipment and updates the SAP delivery record with current status and ETA.

naftiko: "0.5"
info:
  label: "Supply Chain Shipment Tracker"
  description: "Queries the carrier tracking API for a shipment and updates the SAP delivery record with current status and ETA."
  tags:
    - distribution
    - supply-chain
    - logistics
    - sap
capability:
  exposes:
    - type: mcp
      namespace: shipment-tracking
      port: 8080
      tools:
        - name: track-and-update-shipment
          description: "Track a shipment via carrier API and update the SAP delivery record with current status."
          inputParameters:
            - name: tracking_number
              in: body
              type: string
              description: "The carrier tracking number."
            - name: sap_delivery_id
              in: body
              type: string
              description: "The SAP delivery document number."
          steps:
            - name: get-tracking
              type: call
              call: "carrier.get-tracking"
              with:
                tracking_number: "{{tracking_number}}"
            - name: update-delivery
              type: call
              call: "sap.update-delivery"
              with:
                delivery_id: "{{sap_delivery_id}}"
                status: "{{get-tracking.status}}"
                eta: "{{get-tracking.estimated_delivery}}"
  consumes:
    - type: http
      namespace: carrier
      baseUri: "https://api.carrier-logistics.com/v1"
      authentication:
        type: bearer
        token: "$secrets.carrier_api_token"
      resources:
        - name: tracking
          path: "/track/{{tracking_number}}"
          inputParameters:
            - name: tracking_number
              in: path
          operations:
            - name: get-tracking
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.com/sap/opu/odata/sap/ZSD_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/DeliverySet('{{delivery_id}}')"
          inputParameters:
            - name: delivery_id
              in: path
          operations:
            - name: update-delivery
              method: PATCH

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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 THC potency test results by batch.

naftiko: "0.5"
info:
  label: "THC Potency Test Result"
  description: "Retrieves THC potency test results by batch."
  tags:
    - quality
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: get-thc
          description: "Retrieves THC potency test results by batch."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The thc potency test result identifier."
          call: "quality-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: quality-api
      baseUri: "https://api.tilray-brands.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: thc
          path: "/thc/potency/test/result/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-thc
              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.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

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

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tilray-brands.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tilray-brands.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tilray_brands_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 purchase order in SAP for raw materials based on a Salesforce vendor quote and notifies procurement via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Purchase Order Creator"
  description: "Creates a purchase order in SAP for raw materials based on a Salesforce vendor quote and notifies procurement via Microsoft Teams."
  tags:
    - procurement
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement-ops
      port: 8080
      tools:
        - name: create-po-from-quote
          description: "Convert a Salesforce vendor quote into a SAP purchase order and notify procurement team."
          inputParameters:
            - name: quote_id
              in: body
              type: string
              description: "The Salesforce quote ID."
            - name: teams_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel for notifications."
          steps:
            - name: get-quote
              type: call
              call: "salesforce.get-quote"
              with:
                quote_id: "{{quote_id}}"
            - name: create-po
              type: call
              call: "sap.create-po"
              with:
                vendor_id: "{{get-quote.vendor_id}}"
                materials: "{{get-quote.line_items}}"
                delivery_date: "{{get-quote.delivery_date}}"
            - name: notify-procurement
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{teams_channel_id}}"
                text: "PO {{create-po.po_number}} created from quote {{quote_id}} for vendor {{get-quote.vendor_name}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tilray.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: quotes
          path: "/sobjects/Quote/{{quote_id}}"
          inputParameters:
            - name: quote_id
              in: path
          operations:
            - name: get-quote
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://tilray.sap.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"
          operations:
            - name: create-po
              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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Monitors warehouse temperature sensors via the IoT platform and creates a ServiceNow incident if readings exceed cannabis storage thresholds.

naftiko: "0.5"
info:
  label: "Warehouse Temperature Compliance Alert"
  description: "Monitors warehouse temperature sensors via the IoT platform and creates a ServiceNow incident if readings exceed cannabis storage thresholds."
  tags:
    - warehouse
    - compliance
    - iot
    - servicenow
    - temperature
capability:
  exposes:
    - type: mcp
      namespace: warehouse-compliance
      port: 8080
      tools:
        - name: check-warehouse-temp
          description: "Check warehouse temperature and create a ServiceNow incident if out of compliance range."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "The warehouse identifier."
            - name: zone
              in: body
              type: string
              description: "The storage zone within the warehouse."
          steps:
            - name: get-temp
              type: call
              call: "iot-platform.get-temperature"
              with:
                warehouse_id: "{{warehouse_id}}"
                zone: "{{zone}}"
            - name: create-alert
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Temperature alert: Warehouse {{warehouse_id}} Zone {{zone}}"
                category: "facility_compliance"
                priority: "2"
                description: "Temperature reading {{get-temp.current_temp}}°C exceeds threshold for zone {{zone}} in warehouse {{warehouse_id}}."
  consumes:
    - type: http
      namespace: iot-platform
      baseUri: "https://iot.tilray.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.iot_token"
      resources:
        - name: temperature
          path: "/warehouses/{{warehouse_id}}/zones/{{zone}}/temperature"
          inputParameters:
            - name: warehouse_id
              in: path
            - name: zone
              in: path
          operations:
            - name: get-temperature
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://tilray.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

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

Retrieves payroll summary data from Workday for a pay period including gross pay, deductions, and net pay totals by department.

naftiko: "0.5"
info:
  label: "Workday Payroll Summary"
  description: "Retrieves payroll summary data from Workday for a pay period including gross pay, deductions, and net pay totals by department."
  tags:
    - hr
    - payroll
    - workday
    - finance
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch Workday payroll summary for a pay period."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "The pay period identifier (e.g., 2026-03-15)."
          call: "workday.get-payroll"
          with:
            pay_period: "{{pay_period}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payroll
          path: "/payroll/summaries?payPeriod={{pay_period}}"
          inputParameters:
            - name: pay_period
              in: path
          operations:
            - name: get-payroll
              method: GET

Retrieves an employee's current time-off balances from Workday by worker ID, returning vacation, sick, and personal day totals.

naftiko: "0.5"
info:
  label: "Workday Time-Off Balance"
  description: "Retrieves an employee's current time-off balances from Workday by worker ID, returning vacation, sick, and personal day totals."
  tags:
    - hr
    - workday
    - time-off
capability:
  exposes:
    - type: mcp
      namespace: hr-time-off
      port: 8080
      tools:
        - name: get-time-off-balance
          description: "Look up an employee's time-off balances in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-time-off"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: time-off
          path: "/workers/{{worker_id}}/timeOffBalance"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-time-off
              method: GET