Starbucks Capabilities

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

Sort
Expand

Pulls campaign performance data from Adobe Analytics for a specific Starbucks promotional campaign, returning impressions, click-through rate, and revenue attribution.

naftiko: "0.5"
info:
  label: "Adobe Analytics Campaign Performance"
  description: "Pulls campaign performance data from Adobe Analytics for a specific Starbucks promotional campaign, returning impressions, click-through rate, and revenue attribution."
  tags:
    - marketing
    - analytics
    - adobe-analytics
capability:
  exposes:
    - type: mcp
      namespace: campaign-analytics
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Retrieve performance metrics for a Starbucks marketing campaign from Adobe Analytics by campaign ID."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Adobe Analytics campaign tracking ID."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          call: "adobe.get-campaign-report"
          with:
            campaign_id: "{{campaign_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: impressions
              type: number
              mapping: "$.rows[0].data[0]"
            - name: click_through_rate
              type: number
              mapping: "$.rows[0].data[1]"
            - name: revenue_attributed
              type: number
              mapping: "$.rows[0].data[2]"
  consumes:
    - type: http
      namespace: adobe
      baseUri: "https://analytics.adobe.io/api/starbucks/reports"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/ranked"
          operations:
            - name: get-campaign-report
              method: POST

Checks the status of Starbucks digital platform deployment pipelines in Azure DevOps, returning build status, environment, and release gate approvals for the mobile app and loyalty platform.

naftiko: "0.5"
info:
  label: "Azure DevOps Deployment Pipeline Status"
  description: "Checks the status of Starbucks digital platform deployment pipelines in Azure DevOps, returning build status, environment, and release gate approvals for the mobile app and loyalty platform."
  tags:
    - development
    - deployments
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: deployment-status
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Check an Azure DevOps pipeline build status for a Starbucks digital platform deployment."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name (e.g., starbucks-mobile, loyalty-platform)."
            - name: build_id
              in: body
              type: string
              description: "The pipeline build ID to check."
          call: "azdevops.get-build"
          with:
            project: "{{project}}"
            build_id: "{{build_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: result
              type: string
              mapping: "$.result"
            - name: source_branch
              type: string
              mapping: "$.sourceBranch"
            - name: finish_time
              type: string
              mapping: "$.finishTime"
  consumes:
    - type: http
      namespace: azdevops
      baseUri: "https://dev.azure.com/starbucks"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azure_devops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds/{{build_id}}?api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: build_id
              in: path
          operations:
            - name: get-build
              method: GET

Retrieves bean origin traceability lookup data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Bean Origin Traceability Lookup"
  description: "Retrieves bean origin traceability lookup data from the Starbucks coffeehouse chain systems."
  tags:
    - bean
    - starbucks
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: bean
      port: 8080
      tools:
        - name: bean-origin-traceability-lookup
          description: "Retrieves bean origin traceability lookup data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.bean-origin-traceability-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/bean/origin/traceability/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: bean-origin-traceability-lookup
              method: GET

Retrieves bean quality grade lookup data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Bean Quality Grade Lookup"
  description: "Retrieves bean quality grade lookup data from the Starbucks coffeehouse chain systems."
  tags:
    - bean
    - starbucks
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: bean
      port: 8080
      tools:
        - name: bean-quality-grade-lookup
          description: "Retrieves bean quality grade lookup data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.bean-quality-grade-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/bean/quality/grade/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: bean-quality-grade-lookup
              method: GET

Pulls competitive market intelligence from Circana (formerly IRI) for the coffee/tea category, returning market share, growth trends, and competitive positioning data.

naftiko: "0.5"
info:
  label: "Circana Market Intelligence Report"
  description: "Pulls competitive market intelligence from Circana (formerly IRI) for the coffee/tea category, returning market share, growth trends, and competitive positioning data."
  tags:
    - analytics
    - market-intelligence
    - circana
capability:
  exposes:
    - type: mcp
      namespace: market-intel
      port: 8080
      tools:
        - name: get-market-share-data
          description: "Retrieve coffee category market share and competitive data from Circana by market and time period."
          inputParameters:
            - name: market_id
              in: body
              type: string
              description: "The Circana market identifier (e.g., US_TOTAL, WEST_REGION)."
            - name: period
              in: body
              type: string
              description: "The reporting period (e.g., L4W, L12W, L52W)."
          call: "circana.get-market-data"
          with:
            market_id: "{{market_id}}"
            period: "{{period}}"
          outputParameters:
            - name: market_share_pct
              type: number
              mapping: "$.data.starbucks_share"
            - name: yoy_growth
              type: number
              mapping: "$.data.yoy_growth_pct"
            - name: category_size
              type: number
              mapping: "$.data.total_category_dollars"
  consumes:
    - type: http
      namespace: circana
      baseUri: "https://api.circana.com/v2/insights"
      authentication:
        type: bearer
        token: "$secrets.circana_token"
      resources:
        - name: market-data
          path: "/category/coffee?market={{market_id}}&period={{period}}"
          inputParameters:
            - name: market_id
              in: query
            - name: period
              in: query
          operations:
            - name: get-market-data
              method: GET

Orchestrates coffee quality assurance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Coffee Quality Assurance Pipeline"
  description: "Orchestrates coffee quality assurance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - coffee
    - starbucks
    - sendgrid
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: coffee
      port: 8080
      tools:
        - name: coffee-quality-assurance-pipeline
          description: "Orchestrates coffee quality assurance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/coffee"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/coffee"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/coffee"
          operations:
            - name: execute-3
              method: POST

Retrieves coffee quality lab results from SharePoint, correlates with the green coffee PO in Oracle Cloud, and distributes the quality scorecard to the roasting team in Slack and logs in Confluence for traceability.

naftiko: "0.5"
info:
  label: "Coffee Quality Lab Report Tracker"
  description: "Retrieves coffee quality lab results from SharePoint, correlates with the green coffee PO in Oracle Cloud, and distributes the quality scorecard to the roasting team in Slack and logs in Confluence for traceability."
  tags:
    - supply-chain
    - quality
    - sharepoint
    - oracle-cloud
    - slack
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: quality-lab
      port: 8080
      tools:
        - name: distribute-lab-results
          description: "Given a lab report ID and PO number, compile quality results and distribute to the roasting team."
          inputParameters:
            - name: lab_report_id
              in: body
              type: string
              description: "The SharePoint document ID for the lab report."
            - name: po_number
              in: body
              type: string
              description: "The Oracle Cloud PO number for the green coffee lot."
          steps:
            - name: get-lab-report
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "quality_lab"
                file_path: "Reports/{{lab_report_id}}.json"
            - name: get-po-details
              type: call
              call: "oracle.get-po"
              with:
                po_number: "{{po_number}}"
            - name: log-in-confluence
              type: call
              call: "confluence.create-page"
              with:
                space_key: "QUALITY"
                title: "Lab Report: {{po_number}} — {{get-po-details.Supplier}}"
                body: "Origin: {{get-po-details.lines[0].OriginCountry}} | Grade: {{get-po-details.lines[0].GradeCode}} | Report: {{get-lab-report.download_url}}"
            - name: notify-roasting
              type: call
              call: "slack.post-message"
              with:
                channel_id: "roasting-team"
                message_text: "Quality Lab Results — PO {{po_number}}\nSupplier: {{get-po-details.Supplier}} | Origin: {{get-po-details.lines[0].OriginCountry}}\nGrade: {{get-po-details.lines[0].GradeCode}}\nLab Report: {{get-lab-report.download_url}}\nConfluence: {{log-in-confluence.url}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: purchase-orders
          path: "/purchaseOrders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://starbucks.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves coffee roast profile lookup data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Coffee Roast Profile Lookup"
  description: "Retrieves coffee roast profile lookup data from the Starbucks coffeehouse chain systems."
  tags:
    - coffee
    - starbucks
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: coffee
      port: 8080
      tools:
        - name: coffee-roast-profile-lookup
          description: "Retrieves coffee roast profile lookup data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.coffee-roast-profile-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/coffee/roast/profile/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: coffee-roast-profile-lookup
              method: GET

Retrieves cold brew batch tracking data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Cold Brew Batch Tracking"
  description: "Retrieves cold brew batch tracking data from the Starbucks coffeehouse chain systems."
  tags:
    - cold
    - starbucks
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: cold
      port: 8080
      tools:
        - name: cold-brew-batch-tracking
          description: "Retrieves cold brew batch tracking data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.cold-brew-batch-tracking"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/cold/brew/batch/tracking/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: cold-brew-batch-tracking
              method: GET

Retrieves barista training content from Confluence by page ID, supporting partner onboarding and continuing education programs.

naftiko: "0.5"
info:
  label: "Confluence Barista Training Wiki"
  description: "Retrieves barista training content from Confluence by page ID, supporting partner onboarding and continuing education programs."
  tags:
    - partner-management
    - training
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: training-content
      port: 8080
      tools:
        - name: get-training-page
          description: "Retrieve a barista training wiki page from Confluence by page ID."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID for the training content."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: body_html
              type: string
              mapping: "$.body.storage.value"
            - name: version
              type: number
              mapping: "$.version.number"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://starbucks.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}?expand=body.storage,version"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET

Orchestrates customer accessibility audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Accessibility Audit Pipeline"
  description: "Orchestrates customer accessibility audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - starbucks
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-accessibility-audit-pipeline
          description: "Orchestrates customer accessibility audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "starbucks.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

When a customer complaint is received in Salesforce, looks up their loyalty history, creates a ServiceNow case, issues a recovery offer via Salesforce, and notifies the store manager in Slack with full context.

naftiko: "0.5"
info:
  label: "Customer Complaint Resolution Workflow"
  description: "When a customer complaint is received in Salesforce, looks up their loyalty history, creates a ServiceNow case, issues a recovery offer via Salesforce, and notifies the store manager in Slack with full context."
  tags:
    - customer-service
    - loyalty
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: complaint-resolution
      port: 8080
      tools:
        - name: resolve-customer-complaint
          description: "Given a Salesforce case ID and customer loyalty ID, pull complaint details, check loyalty history, create a recovery offer, and notify the store."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce case ID for the complaint."
            - name: loyalty_id
              in: body
              type: string
              description: "The customer's Starbucks Rewards loyalty ID."
            - name: store_id
              in: body
              type: string
              description: "The store where the complaint occurred."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: get-member
              type: call
              call: "salesforce.get-loyalty-member"
              with:
                loyalty_id: "{{loyalty_id}}"
            - name: create-recovery-offer
              type: call
              call: "salesforce.create-offer"
              with:
                loyalty_id: "{{loyalty_id}}"
                offer_type: "recovery"
                stars_bonus: "150"
                reason: "Complaint resolution: {{get-case.Subject}}"
            - name: create-service-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Customer complaint — Store {{store_id}} — {{get-case.Subject}}"
                description: "Loyalty member ({{get-member.TierStatus__c}}, {{get-member.LoyaltyBalance__c}} stars). Complaint: {{get-case.Description}}. Recovery offer issued: 150 bonus stars."
                category: "customer_complaint"
            - name: notify-store
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-ops"
                message_text: "Customer Complaint: {{get-case.Subject}}\nMember: {{get-member.TierStatus__c}} tier ({{get-member.LoyaltyBalance__c}} stars)\nRecovery: 150 bonus stars issued\nServiceNow: {{create-service-ticket.number}}\nPlease follow up."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
        - name: loyalty-members
          path: "/sobjects/LoyaltyMember__c/LoyaltyId__c/{{loyalty_id}}"
          inputParameters:
            - name: loyalty_id
              in: path
          operations:
            - name: get-loyalty-member
              method: GET
        - name: offers
          path: "/sobjects/LoyaltyOffer__c"
          operations:
            - name: create-offer
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates customer complaint trending pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Complaint Trending Pipeline"
  description: "Orchestrates customer complaint trending pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - oracle
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-complaint-trending-pipeline
          description: "Orchestrates customer complaint trending pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "oracle.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer drive thru analytics pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Drive Thru Analytics Pipeline"
  description: "Orchestrates customer drive thru analytics pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - snowflake
    - slack
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-drive-thru-analytics-pipeline
          description: "Orchestrates customer drive thru analytics pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "oracle.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer experience improvement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Experience Improvement Pipeline"
  description: "Orchestrates customer experience improvement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - datadog
    - starbucks
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-experience-improvement-pipeline
          description: "Orchestrates customer experience improvement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "starbucks.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer mobile engagement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Mobile Engagement Pipeline"
  description: "Orchestrates customer mobile engagement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - slack
    - oracle
    - teams
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-mobile-engagement-pipeline
          description: "Orchestrates customer mobile engagement pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "oracle.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer order accuracy pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Order Accuracy Pipeline"
  description: "Orchestrates customer order accuracy pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - starbucks
    - workday
    - datadog
    - starbucks
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-order-accuracy-pipeline
          description: "Orchestrates customer order accuracy pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "starbucks.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Generates a daily operations report by pulling sales data from SAP, labor hours from Workday, customer satisfaction from Salesforce, and POS uptime from Datadog, then posts the summary to the store manager's Slack channel.

naftiko: "0.5"
info:
  label: "Daily Store Operations Report Generator"
  description: "Generates a daily operations report by pulling sales data from SAP, labor hours from Workday, customer satisfaction from Salesforce, and POS uptime from Datadog, then posts the summary to the store manager's Slack channel."
  tags:
    - store-ops
    - reporting
    - sap
    - workday
    - salesforce
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: daily-ops-report
      port: 8080
      tools:
        - name: generate-daily-report
          description: "Given a store ID and date, compile the daily operations report from multiple sources and deliver it to the store Slack channel."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: report_date
              in: body
              type: string
              description: "The date for the report in YYYY-MM-DD format."
          steps:
            - name: get-sales
              type: call
              call: "sap.get-daily-sales"
              with:
                store_id: "{{store_id}}"
                date: "{{report_date}}"
            - name: get-labor
              type: call
              call: "workday.get-labor-hours"
              with:
                store_id: "{{store_id}}"
                date: "{{report_date}}"
            - name: get-csat
              type: call
              call: "salesforce.get-store-csat"
              with:
                store_id: "{{store_id}}"
                date: "{{report_date}}"
            - name: get-pos-uptime
              type: call
              call: "datadog.get-uptime"
              with:
                store_id: "{{store_id}}"
                date: "{{report_date}}"
            - name: post-report
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-ops"
                message_text: "Daily Ops Report — Store {{store_id}} — {{report_date}}\nRevenue: ${{get-sales.total_revenue}} | Transactions: {{get-sales.transaction_count}}\nLabor Hours: {{get-labor.total_hours}} | Efficiency: {{get-labor.sales_per_labor_hour}}\nCSAT: {{get-csat.score}}/5.0 | Surveys: {{get-csat.response_count}}\nPOS Uptime: {{get-pos-uptime.uptime_pct}}%"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_SALES_REPORT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: daily-sales
          path: "/A_DailySales(Plant='{{store_id}}',Date='{{date}}')"
          inputParameters:
            - name: store_id
              in: path
            - name: date
              in: path
          operations:
            - name: get-daily-sales
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: labor
          path: "/timeTracking/summary?org={{store_id}}&date={{date}}"
          inputParameters:
            - name: store_id
              in: query
            - name: date
              in: query
          operations:
            - name: get-labor-hours
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: csat
          path: "/sobjects/StoreSurvey__c?store={{store_id}}&date={{date}}"
          inputParameters:
            - name: store_id
              in: query
            - name: date
              in: query
          operations:
            - name: get-store-csat
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: uptime
          path: "/query?query=avg:pos.uptime{store_id:{{store_id}}}&from={{date}}"
          inputParameters:
            - name: store_id
              in: query
            - name: date
              in: query
          operations:
            - name: get-uptime
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Datadog for the latest health metrics of POS terminals at a specific Starbucks store, returning uptime percentage, error rate, and last heartbeat.

naftiko: "0.5"
info:
  label: "Datadog Store POS Health Check"
  description: "Queries Datadog for the latest health metrics of POS terminals at a specific Starbucks store, returning uptime percentage, error rate, and last heartbeat."
  tags:
    - store-ops
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: pos-monitoring
      port: 8080
      tools:
        - name: get-pos-health
          description: "Check POS terminal health for a store. Returns uptime percentage, error rate, and last heartbeat timestamp from Datadog."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
          call: "datadog.query-metrics"
          with:
            store_id: "{{store_id}}"
          outputParameters:
            - name: uptime_pct
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
            - name: error_rate
              type: number
              mapping: "$.series[1].pointlist[-1][1]"
            - name: last_heartbeat
              type: string
              mapping: "$.series[2].pointlist[-1][0]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query?query=avg:pos.health{store_id:{{store_id}}}&from={{from}}&to={{to}}"
          inputParameters:
            - name: store_id
              in: query
          operations:
            - name: query-metrics
              method: GET

Updates digital menu boards across stores by pushing new pricing and promotional items from SAP to the content management system, logs the change in ServiceNow, and announces updates to district managers via Slack.

naftiko: "0.5"
info:
  label: "Digital Menu Board Updater"
  description: "Updates digital menu boards across stores by pushing new pricing and promotional items from SAP to the content management system, logs the change in ServiceNow, and announces updates to district managers via Slack."
  tags:
    - store-ops
    - menu-management
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: menu-management
      port: 8080
      tools:
        - name: update-menu-board
          description: "Given updated menu items and pricing, push changes to stores, log in ServiceNow, and notify district managers."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The region code for the menu update (e.g., US_WEST, US_EAST)."
            - name: effective_date
              in: body
              type: string
              description: "When the menu changes take effect in YYYY-MM-DD format."
            - name: change_description
              in: body
              type: string
              description: "Description of the menu changes."
          steps:
            - name: get-pricing
              type: call
              call: "sap.get-pricing-conditions"
              with:
                region: "{{region}}"
                effective_date: "{{effective_date}}"
            - name: log-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Menu board update: {{region}} effective {{effective_date}}"
                description: "{{change_description}}. Items affected: {{get-pricing.item_count}}."
                category: "menu_management"
            - name: notify-district
              type: call
              call: "slack.post-message"
              with:
                channel_id: "district-managers-{{region}}"
                message_text: "Menu Board Update — {{region}} — Effective {{effective_date}}\n{{change_description}}\nItems Updated: {{get-pricing.item_count}}\nChange Record: {{log-change.number}}\nPlease verify menu boards at opening."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_PRICING_CONDITIONS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: pricing
          path: "/A_PricingCondition?$filter=Region eq '{{region}}' and ValidFrom eq '{{effective_date}}'"
          inputParameters:
            - name: region
              in: query
            - name: effective_date
              in: query
          operations:
            - name: get-pricing-conditions
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a new store lease is ready, sends the agreement via DocuSign for signature, tracks signing status, and updates the real estate record in Salesforce upon completion with notification to the real estate team in Slack.

naftiko: "0.5"
info:
  label: "DocuSign Lease Agreement Processor"
  description: "When a new store lease is ready, sends the agreement via DocuSign for signature, tracks signing status, and updates the real estate record in Salesforce upon completion with notification to the real estate team in Slack."
  tags:
    - real-estate
    - legal
    - docusign
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: lease-signing
      port: 8080
      tools:
        - name: process-lease-agreement
          description: "Given lease details and signer info, send the agreement via DocuSign, track status, and update Salesforce upon completion."
          inputParameters:
            - name: lease_id
              in: body
              type: string
              description: "The Salesforce lease record ID."
            - name: signer_email
              in: body
              type: string
              description: "The email of the person who needs to sign."
            - name: signer_name
              in: body
              type: string
              description: "The full name of the signer."
            - name: store_id
              in: body
              type: string
              description: "The planned store number for the new location."
          steps:
            - name: get-lease
              type: call
              call: "salesforce.get-lease"
              with:
                lease_id: "{{lease_id}}"
            - name: send-envelope
              type: call
              call: "docusign.create-envelope"
              with:
                signer_email: "{{signer_email}}"
                signer_name: "{{signer_name}}"
                document_name: "Store {{store_id}} Lease Agreement"
                template_id: "lease_agreement_template"
            - name: update-salesforce
              type: call
              call: "salesforce.update-lease"
              with:
                lease_id: "{{lease_id}}"
                docusign_envelope_id: "{{send-envelope.envelopeId}}"
                status: "Sent_For_Signature"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel_id: "real-estate-ops"
                message_text: "Lease Agreement Sent: Store {{store_id}} | Signer: {{signer_name}} ({{signer_email}})\nLocation: {{get-lease.Property_Address__c}}\nDocuSign Envelope: {{send-envelope.envelopeId}}\nAwaiting signature."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leases
          path: "/sobjects/Lease__c/{{lease_id}}"
          inputParameters:
            - name: lease_id
              in: path
          operations:
            - name: get-lease
              method: GET
            - name: update-lease
              method: PATCH
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/{{account_id}}"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: create-envelope
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls real-time drive-thru wait time metrics from Datadog, compares against SLA targets in Salesforce, and alerts the store team in Slack when times exceed thresholds.

naftiko: "0.5"
info:
  label: "Drive-Thru Wait Time Monitor"
  description: "Pulls real-time drive-thru wait time metrics from Datadog, compares against SLA targets in Salesforce, and alerts the store team in Slack when times exceed thresholds."
  tags:
    - store-ops
    - drive-thru
    - datadog
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: drive-thru-monitor
      port: 8080
      tools:
        - name: check-drive-thru-times
          description: "Given a store ID, retrieve current drive-thru wait times, compare to SLA, and alert if thresholds are breached."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: sla_threshold_seconds
              in: body
              type: number
              description: "The maximum acceptable drive-thru wait time in seconds."
          steps:
            - name: get-wait-times
              type: call
              call: "datadog.get-drive-thru-metrics"
              with:
                store_id: "{{store_id}}"
            - name: get-store-targets
              type: call
              call: "salesforce.get-store-sla"
              with:
                store_id: "{{store_id}}"
            - name: alert-team
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-ops"
                message_text: "Drive-Thru Alert — Store {{store_id}}\nCurrent Avg Wait: {{get-wait-times.avg_wait_seconds}}s | Target: {{get-store-targets.drive_thru_sla}}s\nPeak Window: {{get-wait-times.peak_window}} | Cars in Queue: {{get-wait-times.queue_length}}\nAction needed to reduce wait times."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: drive-thru
          path: "/query?query=avg:drive_thru.wait_time{store_id:{{store_id}}}"
          inputParameters:
            - name: store_id
              in: query
          operations:
            - name: get-drive-thru-metrics
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: store-sla
          path: "/sobjects/StoreSLA__c/StoreId__c/{{store_id}}"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-store-sla
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves application performance metrics from Dynatrace for Starbucks digital platforms including the web app, mobile backend, and loyalty API, returning response times, error rates, and throughput.

naftiko: "0.5"
info:
  label: "Dynatrace Application Performance Monitor"
  description: "Retrieves application performance metrics from Dynatrace for Starbucks digital platforms including the web app, mobile backend, and loyalty API, returning response times, error rates, and throughput."
  tags:
    - monitoring
    - digital-platforms
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: app-performance
      port: 8080
      tools:
        - name: get-app-performance
          description: "Query Dynatrace for application performance metrics by service entity ID and time range."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The Dynatrace service entity ID."
            - name: timeframe
              in: body
              type: string
              description: "The query timeframe (e.g., last2hours, last24hours)."
          call: "dynatrace.get-metrics"
          with:
            entity_id: "{{entity_id}}"
            timeframe: "{{timeframe}}"
          outputParameters:
            - name: avg_response_time_ms
              type: number
              mapping: "$.result[0].data[0].values[-1]"
            - name: error_rate_pct
              type: number
              mapping: "$.result[1].data[0].values[-1]"
            - name: throughput_rpm
              type: number
              mapping: "$.result[2].data[0].values[-1]"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://starbucks.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query?metricSelector=builtin:service.response.time,builtin:service.errors.total.rate,builtin:service.requestCount.total&entitySelector=entityId({{entity_id}})&from={{timeframe}}"
          inputParameters:
            - name: entity_id
              in: query
            - name: timeframe
              in: query
          operations:
            - name: get-metrics
              method: GET

Performs end-of-day cash reconciliation by pulling POS transaction totals from Square, comparing against expected deposits in SAP, logging variances in ServiceNow, and notifying the store manager and finance team via Slack.

naftiko: "0.5"
info:
  label: "End-of-Day Cash Reconciliation"
  description: "Performs end-of-day cash reconciliation by pulling POS transaction totals from Square, comparing against expected deposits in SAP, logging variances in ServiceNow, and notifying the store manager and finance team via Slack."
  tags:
    - finance
    - store-ops
    - square
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: cash-reconciliation
      port: 8080
      tools:
        - name: reconcile-daily-cash
          description: "Given a store ID and business date, compare POS totals against expected deposits and report any variances."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: business_date
              in: body
              type: string
              description: "The business date to reconcile in YYYY-MM-DD format."
            - name: location_id
              in: body
              type: string
              description: "The Square location ID for the store."
          steps:
            - name: get-pos-totals
              type: call
              call: "square.get-daily-totals"
              with:
                location_id: "{{location_id}}"
                date: "{{business_date}}"
            - name: get-expected-deposit
              type: call
              call: "sap.get-expected-cash"
              with:
                store_id: "{{store_id}}"
                date: "{{business_date}}"
            - name: log-variance
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Cash variance: Store {{store_id}} — {{business_date}}"
                description: "POS Total: ${{get-pos-totals.cash_total}}. Expected: ${{get-expected-deposit.expected_amount}}. Variance: ${{get-pos-totals.cash_total}} - ${{get-expected-deposit.expected_amount}}."
                category: "cash_management"
                priority: "3"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-ops"
                message_text: "End-of-Day Cash Reconciliation — Store {{store_id}} — {{business_date}}\nPOS Cash Total: ${{get-pos-totals.cash_total}}\nExpected Deposit: ${{get-expected-deposit.expected_amount}}\nVariance logged: {{log-variance.number}}"
  consumes:
    - type: http
      namespace: square
      baseUri: "https://connect.squareup.com/v2"
      authentication:
        type: bearer
        token: "$secrets.square_access_token"
      resources:
        - name: payments
          path: "/locations/{{location_id}}/payments?begin_time={{date}}T00:00:00Z&end_time={{date}}T23:59:59Z"
          inputParameters:
            - name: location_id
              in: path
            - name: date
              in: query
          operations:
            - name: get-daily-totals
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_CASH_MGMT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: cash
          path: "/A_CashPosition(Plant='{{store_id}}',Date='{{date}}')"
          inputParameters:
            - name: store_id
              in: path
            - name: date
              in: path
          operations:
            - name: get-expected-cash
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Compiles ethical sourcing compliance data by pulling supplier certifications from Oracle Cloud, coffee origin traceability from SAP, and audit reports from SharePoint, then generates a compliance summary in Confluence and alerts the sustainability team in Slack.

naftiko: "0.5"
info:
  label: "Ethical Sourcing Compliance Auditor"
  description: "Compiles ethical sourcing compliance data by pulling supplier certifications from Oracle Cloud, coffee origin traceability from SAP, and audit reports from SharePoint, then generates a compliance summary in Confluence and alerts the sustainability team in Slack."
  tags:
    - supply-chain
    - compliance
    - ethical-sourcing
    - oracle-cloud
    - sap
    - sharepoint
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: ethical-sourcing
      port: 8080
      tools:
        - name: audit-supplier-compliance
          description: "Given a supplier ID, compile ethical sourcing certifications, traceability data, and audit history into a compliance report."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The Oracle Cloud supplier ID."
            - name: audit_period
              in: body
              type: string
              description: "The audit period (e.g., 2025-H2, 2026-Q1)."
          steps:
            - name: get-certifications
              type: call
              call: "oracle.get-supplier-certs"
              with:
                supplier_id: "{{supplier_id}}"
            - name: get-traceability
              type: call
              call: "sap.get-origin-trace"
              with:
                supplier_id: "{{supplier_id}}"
                period: "{{audit_period}}"
            - name: get-audit-reports
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "ethical_sourcing"
                file_path: "Audits/{{supplier_id}}/{{audit_period}}_report.pdf"
            - name: create-summary
              type: call
              call: "confluence.create-page"
              with:
                space_key: "SOURCING"
                title: "Compliance Audit: Supplier {{supplier_id}} — {{audit_period}}"
                body: "Certifications: {{get-certifications.active_certs}} | Farms Traced: {{get-traceability.farm_count}} | C.A.F.E. Practices Score: {{get-traceability.cafe_score}}"
            - name: notify-sustainability
              type: call
              call: "slack.post-message"
              with:
                channel_id: "sustainability-team"
                message_text: "Ethical Sourcing Audit Complete — Supplier {{supplier_id}} — {{audit_period}}\nActive Certifications: {{get-certifications.active_certs}}\nFarms Traced: {{get-traceability.farm_count}}\nC.A.F.E. Score: {{get-traceability.cafe_score}}\nFull Report: {{get-audit-reports.download_url}}\nConfluence: {{create-summary.url}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}/certifications"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier-certs
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_SOURCING_TRACE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: traceability
          path: "/A_OriginTrace?$filter=Supplier eq '{{supplier_id}}' and Period eq '{{period}}'"
          inputParameters:
            - name: supplier_id
              in: query
            - name: period
              in: query
          operations:
            - name: get-origin-trace
              method: GET
    - 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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://starbucks.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates food safety compliance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Food Safety Compliance Pipeline"
  description: "Orchestrates food safety compliance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - food
    - starbucks
    - snowflake
    - slack
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: food
      port: 8080
      tools:
        - name: food-safety-compliance-pipeline
          description: "Orchestrates food safety compliance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "oracle.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/food"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/food"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/food"
          operations:
            - name: execute-3
              method: POST

When a food safety issue is reported, creates a high-priority ServiceNow incident, notifies the district manager via Microsoft Teams, retrieves the food safety SOP from SharePoint, and logs the incident in Salesforce for regulatory tracking.

naftiko: "0.5"
info:
  label: "Food Safety Incident Escalator"
  description: "When a food safety issue is reported, creates a high-priority ServiceNow incident, notifies the district manager via Microsoft Teams, retrieves the food safety SOP from SharePoint, and logs the incident in Salesforce for regulatory tracking."
  tags:
    - store-ops
    - food-safety
    - servicenow
    - microsoft-teams
    - sharepoint
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: food-safety
      port: 8080
      tools:
        - name: escalate-food-safety-incident
          description: "Given store ID and incident details, create a P1 ticket, notify the district manager, pull the SOP, and log in Salesforce."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: incident_type
              in: body
              type: string
              description: "Type of food safety incident (e.g., temperature_violation, contamination, allergen_exposure)."
            - name: description
              in: body
              type: string
              description: "Detailed description of the incident."
            - name: district_manager_upn
              in: body
              type: string
              description: "The Microsoft UPN of the district manager."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "FOOD SAFETY: {{incident_type}} at Store {{store_id}}"
                priority: "1"
                category: "food_safety"
                description: "{{description}}"
            - name: get-sop
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "food_safety"
                file_path: "SOPs/{{incident_type}}_response.pdf"
            - name: log-regulatory
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Food Safety Incident — Store {{store_id}} — {{incident_type}}"
                description: "{{description}}. ServiceNow: {{create-incident.number}}."
                type: "Food_Safety"
                priority: "High"
            - name: notify-dm
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{district_manager_upn}}"
                text: "URGENT FOOD SAFETY: {{incident_type}} at Store {{store_id}}. Incident: {{create-incident.number}}. SOP: {{get-sop.download_url}}. Regulatory case: {{log-regulatory.CaseNumber}}. Immediate action required."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates food waste reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Food Waste Reduction Pipeline"
  description: "Orchestrates food waste reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - food
    - starbucks
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: food
      port: 8080
      tools:
        - name: food-waste-reduction-pipeline
          description: "Orchestrates food waste reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/food"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/food"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/food"
          operations:
            - name: execute-3
              method: POST

Pulls store-level web traffic and mobile order conversion metrics from Google Analytics for a given date range to support marketing analysis.

naftiko: "0.5"
info:
  label: "Google Analytics Store Traffic"
  description: "Pulls store-level web traffic and mobile order conversion metrics from Google Analytics for a given date range to support marketing analysis."
  tags:
    - analytics
    - marketing
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: store-analytics
      port: 8080
      tools:
        - name: get-store-traffic
          description: "Retrieve web and mobile traffic metrics for a specific store page from Google Analytics. Returns sessions, conversion rate, and mobile order starts."
          inputParameters:
            - name: store_slug
              in: body
              type: string
              description: "The store identifier slug used in the Starbucks store locator URL."
            - 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."
          call: "ga.get-report"
          with:
            store_slug: "{{store_slug}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: sessions
              type: number
              mapping: "$.rows[0].metricValues[0].value"
            - name: conversion_rate
              type: number
              mapping: "$.rows[0].metricValues[1].value"
            - name: mobile_order_starts
              type: number
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves geographic details and place information for a Starbucks store location from Google Maps Places API, supporting store locator and delivery zone calculations.

naftiko: "0.5"
info:
  label: "Google Maps Store Location Lookup"
  description: "Retrieves geographic details and place information for a Starbucks store location from Google Maps Places API, supporting store locator and delivery zone calculations."
  tags:
    - store-ops
    - geolocation
    - google-maps
capability:
  exposes:
    - type: mcp
      namespace: store-locations
      port: 8080
      tools:
        - name: get-store-location
          description: "Look up store geographic details from Google Maps Places API by place ID."
          inputParameters:
            - name: place_id
              in: body
              type: string
              description: "The Google Maps place ID for the Starbucks store."
          call: "gmaps.get-place"
          with:
            place_id: "{{place_id}}"
          outputParameters:
            - name: formatted_address
              type: string
              mapping: "$.result.formatted_address"
            - name: latitude
              type: number
              mapping: "$.result.geometry.location.lat"
            - name: longitude
              type: number
              mapping: "$.result.geometry.location.lng"
  consumes:
    - type: http
      namespace: gmaps
      baseUri: "https://maps.googleapis.com/maps/api/place"
      authentication:
        type: apikey
        name: key
        in: query
        value: "$secrets.google_maps_key"
      resources:
        - name: places
          path: "/details/json?place_id={{place_id}}"
          inputParameters:
            - name: place_id
              in: query
          operations:
            - name: get-place
              method: GET

When a customer signs in to Starbucks in-store WiFi, captures their email in HubSpot as a marketing contact, tags them with store location, and triggers a welcome drip campaign.

naftiko: "0.5"
info:
  label: "HubSpot Lead Capture from Store WiFi"
  description: "When a customer signs in to Starbucks in-store WiFi, captures their email in HubSpot as a marketing contact, tags them with store location, and triggers a welcome drip campaign."
  tags:
    - marketing
    - lead-capture
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: wifi-lead-capture
      port: 8080
      tools:
        - name: capture-wifi-lead
          description: "Create or update a HubSpot contact from WiFi sign-in data and enroll in a welcome campaign."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "The customer's email from WiFi sign-in."
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: first_name
              in: body
              type: string
              description: "The customer's first name if provided."
          call: "hubspot.create-or-update-contact"
          with:
            email: "{{email}}"
            firstname: "{{first_name}}"
            store_visited: "{{store_id}}"
            lead_source: "wifi_signin"
  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"
          operations:
            - name: create-or-update-contact
              method: POST

Publishes a scheduled Instagram post via the Meta Business API for Starbucks marketing campaigns, including product photography and promotional content.

naftiko: "0.5"
info:
  label: "Instagram Social Media Post"
  description: "Publishes a scheduled Instagram post via the Meta Business API for Starbucks marketing campaigns, including product photography and promotional content."
  tags:
    - marketing
    - social-media
    - meta
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: social-instagram
      port: 8080
      tools:
        - name: publish-instagram-post
          description: "Publish an image post to the Starbucks Instagram business account via Meta Business API."
          inputParameters:
            - name: image_url
              in: body
              type: string
              description: "The publicly accessible URL of the image to post."
            - name: caption
              in: body
              type: string
              description: "The post caption text including hashtags."
          call: "meta.create-instagram-post"
          with:
            image_url: "{{image_url}}"
            caption: "{{caption}}"
  consumes:
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_page_token"
      resources:
        - name: instagram-media
          path: "/{{ig_account_id}}/media"
          inputParameters:
            - name: ig_account_id
              in: path
          operations:
            - name: create-instagram-post
              method: POST

When store inventory drops below reorder point in SAP, automatically generates a replenishment PO in Oracle Cloud, notifies the distribution center via Slack, and updates the store manager in Microsoft Teams with the expected delivery.

naftiko: "0.5"
info:
  label: "Inventory Replenishment Order Orchestrator"
  description: "When store inventory drops below reorder point in SAP, automatically generates a replenishment PO in Oracle Cloud, notifies the distribution center via Slack, and updates the store manager in Microsoft Teams with the expected delivery."
  tags:
    - supply-chain
    - inventory
    - sap
    - oracle-cloud
    - slack
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: auto-replenishment
      port: 8080
      tools:
        - name: trigger-replenishment
          description: "Given a store ID and material below reorder point, create a replenishment PO, notify the distribution center, and update the store manager."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number that is below reorder threshold."
            - name: quantity_needed
              in: body
              type: number
              description: "The quantity to order."
          steps:
            - name: get-material-details
              type: call
              call: "sap.get-material"
              with:
                material_number: "{{material_number}}"
            - name: create-po
              type: call
              call: "oracle.create-purchase-order"
              with:
                supplier_id: "{{get-material-details.preferred_supplier}}"
                material: "{{material_number}}"
                quantity: "{{quantity_needed}}"
                delivery_plant: "{{store_id}}"
            - name: notify-dc
              type: call
              call: "slack.post-message"
              with:
                channel_id: "distribution-center"
                message_text: "Replenishment PO {{create-po.po_number}} created for Store {{store_id}}. Material: {{get-material-details.description}} x{{quantity_needed}}. Supplier: {{get-material-details.preferred_supplier_name}}."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "store{{store_id}}-manager@starbucks.com"
                text: "Replenishment ordered for {{get-material-details.description}} ({{quantity_needed}} units). PO: {{create-po.po_number}}. Expected delivery: {{create-po.promised_date}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_MASTER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Material('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: purchase-orders
          path: "/purchaseOrders"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates loyalty campaign effectiveness pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Loyalty Campaign Effectiveness Pipeline"
  description: "Orchestrates loyalty campaign effectiveness pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - loyalty
    - starbucks
    - workday
    - datadog
    - starbucks
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-campaign-effectiveness-pipeline
          description: "Orchestrates loyalty campaign effectiveness pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "starbucks.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/loyalty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/loyalty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/loyalty"
          operations:
            - name: execute-3
              method: POST

Retrieves a Starbucks Rewards member profile from Salesforce by loyalty ID, returning star balance, tier status, and preferred store.

naftiko: "0.5"
info:
  label: "Loyalty Member Profile Lookup"
  description: "Retrieves a Starbucks Rewards member profile from Salesforce by loyalty ID, returning star balance, tier status, and preferred store."
  tags:
    - loyalty
    - rewards
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-rewards-member
          description: "Look up a Starbucks Rewards member by loyalty ID. Returns star balance, gold status, preferred store, and enrollment date."
          inputParameters:
            - name: loyalty_id
              in: body
              type: string
              description: "The Starbucks Rewards loyalty member ID."
          call: "salesforce.get-loyalty-member"
          with:
            loyalty_id: "{{loyalty_id}}"
          outputParameters:
            - name: star_balance
              type: number
              mapping: "$.LoyaltyBalance__c"
            - name: tier_status
              type: string
              mapping: "$.TierStatus__c"
            - name: preferred_store
              type: string
              mapping: "$.PreferredStore__c"
            - name: enrollment_date
              type: string
              mapping: "$.EnrollmentDate__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: loyalty-members
          path: "/sobjects/LoyaltyMember__c/LoyaltyId__c/{{loyalty_id}}"
          inputParameters:
            - name: loyalty_id
              in: path
          operations:
            - name: get-loyalty-member
              method: GET

Retrieves loyalty offer eligibility check data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Loyalty Offer Eligibility Check"
  description: "Retrieves loyalty offer eligibility check data from the Starbucks coffeehouse chain systems."
  tags:
    - loyalty
    - starbucks
    - check
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-offer-eligibility-check
          description: "Retrieves loyalty offer eligibility check data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.loyalty-offer-eligibility-check"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/loyalty/offer/eligibility/check/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: loyalty-offer-eligibility-check
              method: GET

Orchestrates loyalty partnership integration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Loyalty Partnership Integration Pipeline"
  description: "Orchestrates loyalty partnership integration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - loyalty
    - starbucks
    - starbucks
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-partnership-integration-pipeline
          description: "Orchestrates loyalty partnership integration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "starbucks.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/loyalty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/loyalty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/loyalty"
          operations:
            - name: execute-3
              method: POST

Orchestrates loyalty personalization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Loyalty Personalization Pipeline"
  description: "Orchestrates loyalty personalization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - loyalty
    - starbucks
    - slack
    - oracle
    - teams
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-personalization-pipeline
          description: "Orchestrates loyalty personalization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "oracle.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/loyalty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/loyalty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/loyalty"
          operations:
            - name: execute-3
              method: POST

When a rewards member redeems stars, validates the star balance in Salesforce, processes the redemption, logs the transaction in SAP, and sends a confirmation push notification via the mobile notification service.

naftiko: "0.5"
info:
  label: "Loyalty Star Redemption Processor"
  description: "When a rewards member redeems stars, validates the star balance in Salesforce, processes the redemption, logs the transaction in SAP, and sends a confirmation push notification via the mobile notification service."
  tags:
    - loyalty
    - rewards
    - salesforce
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: star-redemption
      port: 8080
      tools:
        - name: process-star-redemption
          description: "Given a loyalty ID, item, and star cost, validate balance, deduct stars, log the transaction, and confirm the redemption."
          inputParameters:
            - name: loyalty_id
              in: body
              type: string
              description: "The Starbucks Rewards member loyalty ID."
            - name: item_name
              in: body
              type: string
              description: "The item being redeemed."
            - name: star_cost
              in: body
              type: number
              description: "The number of stars required for this redemption."
            - name: store_id
              in: body
              type: string
              description: "The store where the redemption is taking place."
          steps:
            - name: get-member
              type: call
              call: "salesforce.get-loyalty-member"
              with:
                loyalty_id: "{{loyalty_id}}"
            - name: deduct-stars
              type: call
              call: "salesforce.update-loyalty-balance"
              with:
                loyalty_id: "{{loyalty_id}}"
                star_deduction: "{{star_cost}}"
            - name: log-transaction
              type: call
              call: "sap.create-loyalty-transaction"
              with:
                member_id: "{{loyalty_id}}"
                transaction_type: "REDEMPTION"
                item: "{{item_name}}"
                stars: "{{star_cost}}"
                store: "{{store_id}}"
            - name: notify-store
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-orders"
                message_text: "Star Redemption: {{item_name}} ({{star_cost}} stars) for Rewards member. New balance: {{deduct-stars.new_balance}} stars."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: loyalty-members
          path: "/sobjects/LoyaltyMember__c/LoyaltyId__c/{{loyalty_id}}"
          inputParameters:
            - name: loyalty_id
              in: path
          operations:
            - name: get-loyalty-member
              method: GET
            - name: update-loyalty-balance
              method: PATCH
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_LOYALTY_TRANSACTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: transactions
          path: "/A_LoyaltyTransaction"
          operations:
            - name: create-loyalty-transaction
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates loyalty tier upgrade pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Loyalty Tier Upgrade Pipeline"
  description: "Orchestrates loyalty tier upgrade pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - loyalty
    - starbucks
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-tier-upgrade-pipeline
          description: "Orchestrates loyalty tier upgrade pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/loyalty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/loyalty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/loyalty"
          operations:
            - name: execute-3
              method: POST

Sends a targeted email campaign to Starbucks Rewards members through MailChimp based on loyalty tier segmentation, used for promotional offers and seasonal drink launches.

naftiko: "0.5"
info:
  label: "MailChimp Loyalty Email Blast"
  description: "Sends a targeted email campaign to Starbucks Rewards members through MailChimp based on loyalty tier segmentation, used for promotional offers and seasonal drink launches."
  tags:
    - marketing
    - loyalty
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: loyalty-email
      port: 8080
      tools:
        - name: send-loyalty-email
          description: "Create and schedule a MailChimp email campaign targeting a specific loyalty segment."
          inputParameters:
            - name: list_id
              in: body
              type: string
              description: "The MailChimp audience list ID for the loyalty segment."
            - name: subject_line
              in: body
              type: string
              description: "The email subject line."
            - name: template_id
              in: body
              type: string
              description: "The MailChimp template ID to use."
            - name: send_time
              in: body
              type: string
              description: "Scheduled send time in ISO 8601 format."
          call: "mailchimp.create-campaign"
          with:
            list_id: "{{list_id}}"
            subject: "{{subject_line}}"
            template_id: "{{template_id}}"
            send_time: "{{send_time}}"
  consumes:
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST

Retrieves Mastercard payment processing metrics for Starbucks including transaction volume, average processing time, chargeback rate, and settlement status by store region.

naftiko: "0.5"
info:
  label: "Mastercard Payment Processing Report"
  description: "Retrieves Mastercard payment processing metrics for Starbucks including transaction volume, average processing time, chargeback rate, and settlement status by store region."
  tags:
    - finance
    - payments
    - mastercard
capability:
  exposes:
    - type: mcp
      namespace: payment-processing
      port: 8080
      tools:
        - name: get-payment-metrics
          description: "Pull Mastercard payment processing metrics for a region and date range."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The Starbucks region code."
            - 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."
          call: "mastercard.get-processing-report"
          with:
            region_code: "{{region_code}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: transaction_volume
              type: number
              mapping: "$.data.transactionCount"
            - name: avg_processing_time_ms
              type: number
              mapping: "$.data.avgProcessingTime"
            - name: chargeback_rate
              type: number
              mapping: "$.data.chargebackRate"
  consumes:
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/merchant-reporting/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_api_key"
      resources:
        - name: reports
          path: "/transactions/summary?region={{region_code}}&from={{start_date}}&to={{end_date}}"
          inputParameters:
            - name: region_code
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-processing-report
              method: GET

Orchestrates menu innovation testing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Menu Innovation Testing Pipeline"
  description: "Orchestrates menu innovation testing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - menu
    - starbucks
    - starbucks
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: menu
      port: 8080
      tools:
        - name: menu-innovation-testing-pipeline
          description: "Orchestrates menu innovation testing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "starbucks.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/menu"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/menu"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/menu"
          operations:
            - name: execute-3
              method: POST

Orchestrates menu pricing optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Menu Pricing Optimization Pipeline"
  description: "Orchestrates menu pricing optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - menu
    - starbucks
    - teams
    - sendgrid
    - workday
capability:
  exposes:
    - type: mcp
      namespace: menu
      port: 8080
      tools:
        - name: menu-pricing-optimization-pipeline
          description: "Orchestrates menu pricing optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/menu"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/menu"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/menu"
          operations:
            - name: execute-3
              method: POST

Sends a message to a Starbucks partner via Microsoft Teams, used for schedule changes, HR updates, and training reminders.

naftiko: "0.5"
info:
  label: "Microsoft Teams Partner Communication"
  description: "Sends a message to a Starbucks partner via Microsoft Teams, used for schedule changes, HR updates, and training reminders."
  tags:
    - communications
    - partner-management
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: partner-comms
      port: 8080
      tools:
        - name: send-partner-message
          description: "Send a Microsoft Teams message to a Starbucks partner by their UPN."
          inputParameters:
            - name: recipient_upn
              in: body
              type: string
              description: "The Microsoft UPN of the partner."
            - name: message_text
              in: body
              type: string
              description: "The message text to send."
          call: "msteams.send-message"
          with:
            recipient_upn: "{{recipient_upn}}"
            text: "{{message_text}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates mobile order experience pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Mobile Order Experience Pipeline"
  description: "Orchestrates mobile order experience pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - mobile
    - starbucks
    - teams
    - sendgrid
    - workday
capability:
  exposes:
    - type: mcp
      namespace: mobile
      port: 8080
      tools:
        - name: mobile-order-experience-pipeline
          description: "Orchestrates mobile order experience pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/mobile"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/mobile"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/mobile"
          operations:
            - name: execute-3
              method: POST

When a mobile order is placed, validates the customer loyalty tier in Salesforce, checks store inventory in SAP, and sends the order confirmation to the store via Slack and the customer via the mobile app notification service.

naftiko: "0.5"
info:
  label: "Mobile Order Fulfillment Orchestrator"
  description: "When a mobile order is placed, validates the customer loyalty tier in Salesforce, checks store inventory in SAP, and sends the order confirmation to the store via Slack and the customer via the mobile app notification service."
  tags:
    - mobile-ordering
    - loyalty
    - store-ops
    - salesforce
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: mobile-order
      port: 8080
      tools:
        - name: process-mobile-order
          description: "Given a mobile order ID and loyalty ID, validate the member, check store inventory, and dispatch the order to the store with notifications."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The mobile order identifier."
            - name: loyalty_id
              in: body
              type: string
              description: "The Starbucks Rewards loyalty member ID."
            - name: store_id
              in: body
              type: string
              description: "The target store number."
            - name: items
              in: body
              type: string
              description: "Comma-separated list of item SKUs in the order."
          steps:
            - name: get-member
              type: call
              call: "salesforce.get-loyalty-member"
              with:
                loyalty_id: "{{loyalty_id}}"
            - name: check-inventory
              type: call
              call: "sap.check-store-availability"
              with:
                store_id: "{{store_id}}"
                items: "{{items}}"
            - name: notify-store
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-orders"
                message_text: "Mobile Order {{order_id}} | {{get-member.TierStatus__c}} member | Items: {{items}} | ETA pickup: 5 min"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: loyalty-members
          path: "/sobjects/LoyaltyMember__c/LoyaltyId__c/{{loyalty_id}}"
          inputParameters:
            - name: loyalty_id
              in: path
          operations:
            - name: get-loyalty-member
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: availability
          path: "/A_MaterialStock?$filter=Plant eq '{{store_id}}' and Material in ({{items}})"
          inputParameters:
            - name: store_id
              in: query
            - name: items
              in: query
          operations:
            - name: check-store-availability
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves mobile order queue depth data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Mobile Order Queue Depth"
  description: "Retrieves mobile order queue depth data from the Starbucks coffeehouse chain systems."
  tags:
    - mobile
    - starbucks
    - depth
capability:
  exposes:
    - type: mcp
      namespace: mobile
      port: 8080
      tools:
        - name: mobile-order-queue-depth
          description: "Retrieves mobile order queue depth data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.mobile-order-queue-depth"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/mobile/order/queue/depth/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: mobile-order-queue-depth
              method: GET

Queries New Relic for Starbucks mobile app performance metrics including crash rate, API response times, and user session data for the mobile ordering experience.

naftiko: "0.5"
info:
  label: "New Relic Mobile App Performance"
  description: "Queries New Relic for Starbucks mobile app performance metrics including crash rate, API response times, and user session data for the mobile ordering experience."
  tags:
    - mobile-ordering
    - monitoring
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: mobile-app-perf
      port: 8080
      tools:
        - name: get-mobile-app-metrics
          description: "Retrieve Starbucks mobile app performance metrics from New Relic for a given time window."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The New Relic application ID for the Starbucks mobile app."
            - name: time_range
              in: body
              type: string
              description: "Time range in minutes to query (e.g., 60, 1440)."
          call: "newrelic.get-app-metrics"
          with:
            app_id: "{{app_id}}"
            time_range: "{{time_range}}"
          outputParameters:
            - name: crash_rate
              type: number
              mapping: "$.metric_data.metrics[0].timeslices[-1].values.crash_rate"
            - name: avg_response_time
              type: number
              mapping: "$.metric_data.metrics[1].timeslices[-1].values.average_response_time"
            - name: active_sessions
              type: number
              mapping: "$.metric_data.metrics[2].timeslices[-1].values.session_count"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}/metrics/data.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-metrics
              method: GET

Retrieves green coffee bean purchase order details from Oracle Cloud ERP, returning supplier, origin country, lot size, grade, and expected arrival date.

naftiko: "0.5"
info:
  label: "Oracle Cloud Coffee Bean Purchase Order"
  description: "Retrieves green coffee bean purchase order details from Oracle Cloud ERP, returning supplier, origin country, lot size, grade, and expected arrival date."
  tags:
    - supply-chain
    - procurement
    - oracle-cloud
capability:
  exposes:
    - type: mcp
      namespace: coffee-procurement
      port: 8080
      tools:
        - name: get-coffee-purchase-order
          description: "Look up a green coffee bean purchase order by PO number. Returns supplier, origin, lot size, grade, and ETA."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The Oracle Cloud purchase order number."
          call: "oracle.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: supplier
              type: string
              mapping: "$.Supplier"
            - name: origin_country
              type: string
              mapping: "$.lines[0].OriginCountry"
            - name: lot_size_kg
              type: number
              mapping: "$.lines[0].Quantity"
            - name: grade
              type: string
              mapping: "$.lines[0].GradeCode"
            - name: eta
              type: string
              mapping: "$.PromisedDeliveryDate"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: purchase-orders
          path: "/purchaseOrders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Retrieves partner benefits enrollment status data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Partner Benefits Enrollment Status"
  description: "Retrieves partner benefits enrollment status data from the Starbucks coffeehouse chain systems."
  tags:
    - partner
    - starbucks
    - status
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-benefits-enrollment-status
          description: "Retrieves partner benefits enrollment status data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.partner-benefits-enrollment-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/partner/benefits/enrollment/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: partner-benefits-enrollment-status
              method: GET

Retrieves partner certification status data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Partner Certification Status"
  description: "Retrieves partner certification status data from the Starbucks coffeehouse chain systems."
  tags:
    - partner
    - starbucks
    - status
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-certification-status
          description: "Retrieves partner certification status data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.partner-certification-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/partner/certification/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: partner-certification-status
              method: GET

Orchestrates partner development pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Development Pipeline"
  description: "Orchestrates partner development pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - workday
    - datadog
    - starbucks
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-development-pipeline
          description: "Orchestrates partner development pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "starbucks.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

Orchestrates partner diversity reporting pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Diversity Reporting Pipeline"
  description: "Orchestrates partner diversity reporting pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-diversity-reporting-pipeline
          description: "Orchestrates partner diversity reporting pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

On new partner hire in Workday, provisions a ServiceNow onboarding ticket, creates a SharePoint training folder, enrolls them in Pluralsight learning paths, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Partner Onboarding Orchestrator"
  description: "On new partner hire in Workday, provisions a ServiceNow onboarding ticket, creates a SharePoint training folder, enrolls them in Pluralsight learning paths, and sends a Microsoft Teams welcome message."
  tags:
    - partner-management
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - pluralsight
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: partner-onboarding
      port: 8080
      tools:
        - name: trigger-partner-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full partner onboarding across ServiceNow, SharePoint, Pluralsight, and Microsoft Teams."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the new partner."
            - name: start_date
              in: body
              type: string
              description: "The partner's start date in YYYY-MM-DD format."
            - name: store_id
              in: body
              type: string
              description: "The store number where the partner will work."
          steps:
            - name: get-partner
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New partner onboarding: {{get-partner.full_name}} — Store {{store_id}}"
                category: "hr_onboarding"
                assigned_group: "Partner_Resources"
                description: "Onboarding for {{get-partner.full_name}} starting {{start_date}} at store {{store_id}}."
            - name: create-training-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "partner_onboarding"
                folder_path: "Training/{{get-partner.full_name}}_{{store_id}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-partner.work_email}}"
                text: "Welcome to Starbucks, {{get-partner.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Training materials: {{create-training-folder.url}}. Your first day at Store {{store_id}} is {{start_date}}."
  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://starbucks.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates partner onboarding training pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Onboarding Training Pipeline"
  description: "Orchestrates partner onboarding training pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - datadog
    - starbucks
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-onboarding-training-pipeline
          description: "Orchestrates partner onboarding training pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "starbucks.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

Aggregates partner performance data from Workday, customer feedback from Salesforce, and learning completions from Pluralsight, then compiles a review summary and delivers it to the store manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Partner Performance Review Pipeline"
  description: "Aggregates partner performance data from Workday, customer feedback from Salesforce, and learning completions from Pluralsight, then compiles a review summary and delivers it to the store manager via Microsoft Teams."
  tags:
    - partner-management
    - performance
    - workday
    - salesforce
    - pluralsight
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: partner-review
      port: 8080
      tools:
        - name: compile-performance-review
          description: "Given a partner employee ID and review period, gather metrics from Workday, Salesforce, and Pluralsight, and send the summary to the store manager."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the partner."
            - name: review_period_start
              in: body
              type: string
              description: "Start of the review period in YYYY-MM-DD format."
            - name: review_period_end
              in: body
              type: string
              description: "End of the review period in YYYY-MM-DD format."
          steps:
            - name: get-partner
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: get-performance
              type: call
              call: "workday.get-performance-data"
              with:
                worker_id: "{{employee_id}}"
                start_date: "{{review_period_start}}"
                end_date: "{{review_period_end}}"
            - name: get-feedback
              type: call
              call: "salesforce.get-partner-feedback"
              with:
                partner_id: "{{employee_id}}"
                start_date: "{{review_period_start}}"
                end_date: "{{review_period_end}}"
            - name: get-learning
              type: call
              call: "pluralsight.get-user-progress"
              with:
                user_id: "{{employee_id}}"
            - name: send-review
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-partner.manager_email}}"
                text: "Performance Review: {{get-partner.full_name}} ({{review_period_start}} to {{review_period_end}})\nAttendance: {{get-performance.attendance_rate}}% | Avg Speed of Service: {{get-performance.avg_service_time}}s\nCustomer Feedback: {{get-feedback.avg_rating}}/5 ({{get-feedback.total_reviews}} reviews)\nLearning: {{get-learning.completedCourses}} courses completed, {{get-learning.totalMinutesViewed}} min"
  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
            - name: get-performance-data
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: feedback
          path: "/sobjects/PartnerFeedback__c?partner={{partner_id}}&from={{start_date}}&to={{end_date}}"
          inputParameters:
            - name: partner_id
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-partner-feedback
              method: GET
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api-v0.9"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: users
          path: "/users/{{user_id}}/progress"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-user-progress
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates partner recognition program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Recognition Program Pipeline"
  description: "Orchestrates partner recognition program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-recognition-program-pipeline
          description: "Orchestrates partner recognition program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

Orchestrates partner scheduling optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Scheduling Optimization Pipeline"
  description: "Orchestrates partner scheduling optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - slack
    - oracle
    - teams
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-scheduling-optimization-pipeline
          description: "Orchestrates partner scheduling optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "oracle.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

Retrieves upcoming shift schedules for a Starbucks partner (employee) from Workday, returning shift times, assigned store, and role.

naftiko: "0.5"
info:
  label: "Partner Shift Schedule Lookup"
  description: "Retrieves upcoming shift schedules for a Starbucks partner (employee) from Workday, returning shift times, assigned store, and role."
  tags:
    - partner-management
    - scheduling
    - workday
capability:
  exposes:
    - type: mcp
      namespace: partner-scheduling
      port: 8080
      tools:
        - name: get-partner-schedule
          description: "Look up a partner's upcoming shift schedule by employee ID and date range. Returns shift start/end times and store assignments."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the Starbucks partner."
            - name: start_date
              in: body
              type: string
              description: "Start of the date range in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End of the date range in YYYY-MM-DD format."
          call: "workday.get-schedule"
          with:
            employee_id: "{{employee_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: shifts
              type: array
              mapping: "$.shifts"
            - name: total_hours
              type: number
              mapping: "$.totalScheduledHours"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/workers/{{employee_id}}/schedules?startDate={{start_date}}&endDate={{end_date}}"
          inputParameters:
            - name: employee_id
              in: path
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-schedule
              method: GET

When a partner requests a shift swap, looks up both partners' schedules in Workday, validates coverage requirements, updates the schedule, and notifies both partners and the store manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Partner Shift Swap Coordinator"
  description: "When a partner requests a shift swap, looks up both partners' schedules in Workday, validates coverage requirements, updates the schedule, and notifies both partners and the store manager via Microsoft Teams."
  tags:
    - partner-management
    - scheduling
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shift-swap
      port: 8080
      tools:
        - name: process-shift-swap
          description: "Given two partner IDs and a shift date, validate and execute a shift swap in Workday, then notify all parties."
          inputParameters:
            - name: requesting_partner_id
              in: body
              type: string
              description: "The Workday employee ID of the partner requesting the swap."
            - name: covering_partner_id
              in: body
              type: string
              description: "The Workday employee ID of the partner taking the shift."
            - name: shift_date
              in: body
              type: string
              description: "The date of the shift to swap in YYYY-MM-DD format."
            - name: shift_id
              in: body
              type: string
              description: "The Workday shift identifier."
          steps:
            - name: get-requesting-partner
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requesting_partner_id}}"
            - name: get-covering-partner
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{covering_partner_id}}"
            - name: update-schedule
              type: call
              call: "workday.swap-shift"
              with:
                shift_id: "{{shift_id}}"
                original_worker: "{{requesting_partner_id}}"
                replacement_worker: "{{covering_partner_id}}"
            - name: notify-requester
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-requesting-partner.work_email}}"
                text: "Shift Swap Confirmed: Your {{shift_date}} shift has been reassigned to {{get-covering-partner.full_name}}. You are no longer scheduled."
            - name: notify-coverer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-covering-partner.work_email}}"
                text: "Shift Swap Confirmed: You are now scheduled to cover {{get-requesting-partner.full_name}}'s shift on {{shift_date}}. Shift ID: {{shift_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: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
        - name: shifts
          path: "/scheduling/shifts/{{shift_id}}/swap"
          inputParameters:
            - name: shift_id
              in: path
          operations:
            - name: swap-shift
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates partner time attendance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Time Attendance Pipeline"
  description: "Orchestrates partner time attendance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - sendgrid
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-time-attendance-pipeline
          description: "Orchestrates partner time attendance pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

When a partner submits a time-off request, validates available PTO balance in Workday, checks store staffing levels, and either auto-approves or escalates to the store manager via Microsoft Teams with a staffing coverage summary.

naftiko: "0.5"
info:
  label: "Partner Time-Off Request Processor"
  description: "When a partner submits a time-off request, validates available PTO balance in Workday, checks store staffing levels, and either auto-approves or escalates to the store manager via Microsoft Teams with a staffing coverage summary."
  tags:
    - partner-management
    - scheduling
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: time-off
      port: 8080
      tools:
        - name: process-time-off-request
          description: "Given a partner ID and requested dates, check PTO balance, evaluate staffing coverage, and route for approval."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the requesting partner."
            - name: start_date
              in: body
              type: string
              description: "The requested time-off start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "The requested time-off end date in YYYY-MM-DD format."
            - name: hours_requested
              in: body
              type: number
              description: "Total hours of time off requested."
          steps:
            - name: get-partner
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: get-pto-balance
              type: call
              call: "workday.get-time-off-balance"
              with:
                worker_id: "{{employee_id}}"
            - name: get-staffing
              type: call
              call: "workday.get-staffing-coverage"
              with:
                store_id: "{{get-partner.store_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-partner.manager_email}}"
                text: "Time-Off Request: {{get-partner.full_name}} requests {{hours_requested}}h off ({{start_date}} to {{end_date}})\nPTO Balance: {{get-pto-balance.available_hours}}h available\nStaffing Impact: {{get-staffing.coverage_pct}}% coverage during requested period\nPlease approve or deny in Workday."
  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
        - name: time-off
          path: "/workers/{{worker_id}}/timeOffBalance"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-time-off-balance
              method: GET
        - name: staffing
          path: "/supervisoryOrganizations/{{store_id}}/staffing?from={{start_date}}&to={{end_date}}"
          inputParameters:
            - name: store_id
              in: path
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-staffing-coverage
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates partner wellness program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Partner Wellness Program Pipeline"
  description: "Orchestrates partner wellness program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - partner
    - starbucks
    - snowflake
    - slack
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: partner
      port: 8080
      tools:
        - name: partner-wellness-program-pipeline
          description: "Orchestrates partner wellness program pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "oracle.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/partner"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/partner"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/partner"
          operations:
            - name: execute-3
              method: POST

Retrieves a Starbucks partner's learning progress and completed courses from Pluralsight, used for tracking professional development and coffee master certification paths.

naftiko: "0.5"
info:
  label: "Pluralsight Partner Learning Progress"
  description: "Retrieves a Starbucks partner's learning progress and completed courses from Pluralsight, used for tracking professional development and coffee master certification paths."
  tags:
    - partner-management
    - training
    - pluralsight
capability:
  exposes:
    - type: mcp
      namespace: partner-learning
      port: 8080
      tools:
        - name: get-learning-progress
          description: "Look up a partner's Pluralsight course completion and learning progress by user ID."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Pluralsight user ID for the Starbucks partner."
          call: "pluralsight.get-user-progress"
          with:
            user_id: "{{user_id}}"
          outputParameters:
            - name: completed_courses
              type: number
              mapping: "$.completedCourses"
            - name: total_hours
              type: number
              mapping: "$.totalMinutesViewed"
            - name: current_path
              type: string
              mapping: "$.activePaths[0].title"
  consumes:
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api-v0.9"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: users
          path: "/users/{{user_id}}/progress"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-user-progress
              method: GET

Triggers a Microsoft Power Automate flow to execute the daily store opening checklist, verifying equipment health in Datadog, confirming staffing in Workday, and logging the completed checklist in SharePoint.

naftiko: "0.5"
info:
  label: "Power Automate Store Opening Checklist"
  description: "Triggers a Microsoft Power Automate flow to execute the daily store opening checklist, verifying equipment health in Datadog, confirming staffing in Workday, and logging the completed checklist in SharePoint."
  tags:
    - store-ops
    - automation
    - microsoft-power-automate
    - datadog
    - workday
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: store-opening
      port: 8080
      tools:
        - name: execute-opening-checklist
          description: "Given a store ID, run the morning opening checklist by verifying equipment, confirming staffing, and logging completion."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: shift_manager_id
              in: body
              type: string
              description: "The Workday employee ID of the opening shift manager."
          steps:
            - name: check-equipment
              type: call
              call: "datadog.get-store-health"
              with:
                store_id: "{{store_id}}"
            - name: verify-staffing
              type: call
              call: "workday.get-today-schedule"
              with:
                store_id: "{{store_id}}"
            - name: log-checklist
              type: call
              call: "sharepoint.create-checklist"
              with:
                site_id: "store_operations"
                file_path: "OpeningChecklists/{{store_id}}/checklist_{{shift_manager_id}}.json"
                equipment_status: "{{check-equipment.overall_status}}"
                staffing_count: "{{verify-staffing.scheduled_partners}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: health
          path: "/query?query=avg:store.equipment.health{store_id:{{store_id}}}"
          inputParameters:
            - name: store_id
              in: query
          operations:
            - name: get-store-health
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/supervisoryOrganizations/{{store_id}}/schedules/today"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-today-schedule
              method: GET
    - 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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: create-checklist
              method: PUT

Retrieves regional sales dashboard data from Qlik Sense, providing district-level revenue, transaction counts, average ticket size, and year-over-year growth for executive review.

naftiko: "0.5"
info:
  label: "Qlik Sense Regional Sales Dashboard"
  description: "Retrieves regional sales dashboard data from Qlik Sense, providing district-level revenue, transaction counts, average ticket size, and year-over-year growth for executive review."
  tags:
    - analytics
    - reporting
    - qlik-sense
capability:
  exposes:
    - type: mcp
      namespace: regional-sales
      port: 8080
      tools:
        - name: get-regional-sales-dashboard
          description: "Pull regional sales performance data from Qlik Sense by region and time period."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The Starbucks region code (e.g., US_WEST, US_SOUTHEAST, EMEA)."
            - name: period
              in: body
              type: string
              description: "The reporting period (e.g., current_quarter, last_month)."
          call: "qlik.get-dashboard"
          with:
            app_id: "regional_sales"
            region_code: "{{region_code}}"
            period: "{{period}}"
          outputParameters:
            - name: total_revenue
              type: number
              mapping: "$.qLayout.qHyperCube.qDataPages[0].qMatrix[0][0].qNum"
            - name: transaction_count
              type: number
              mapping: "$.qLayout.qHyperCube.qDataPages[0].qMatrix[0][1].qNum"
            - name: avg_ticket
              type: number
              mapping: "$.qLayout.qHyperCube.qDataPages[0].qMatrix[0][2].qNum"
            - name: yoy_growth_pct
              type: number
              mapping: "$.qLayout.qHyperCube.qDataPages[0].qMatrix[0][3].qNum"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://starbucks.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_api_key"
      resources:
        - name: apps
          path: "/apps/{{app_id}}/objects/{{object_id}}/layout"
          inputParameters:
            - name: app_id
              in: path
            - name: object_id
              in: path
          operations:
            - name: get-dashboard
              method: GET

Orchestrates seasonal beverage launch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Seasonal Beverage Launch Pipeline"
  description: "Orchestrates seasonal beverage launch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - seasonal
    - starbucks
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: seasonal
      port: 8080
      tools:
        - name: seasonal-beverage-launch-pipeline
          description: "Orchestrates seasonal beverage launch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/seasonal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/seasonal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/seasonal"
          operations:
            - name: execute-3
              method: POST

During seasonal hiring surges, pulls open positions from Workday, cross-references applicant data from Indeed, schedules interviews in Microsoft Outlook, and notifies hiring managers in Microsoft Teams with candidate summaries.

naftiko: "0.5"
info:
  label: "Seasonal New Hire Staffing Pipeline"
  description: "During seasonal hiring surges, pulls open positions from Workday, cross-references applicant data from Indeed, schedules interviews in Microsoft Outlook, and notifies hiring managers in Microsoft Teams with candidate summaries."
  tags:
    - partner-management
    - hiring
    - workday
    - indeed
    - microsoft-outlook
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: seasonal-hiring
      port: 8080
      tools:
        - name: process-seasonal-applicant
          description: "Given a job requisition ID and applicant details, schedule an interview, and notify the hiring manager with the candidate summary."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
            - name: applicant_email
              in: body
              type: string
              description: "The applicant's email address."
            - name: applicant_name
              in: body
              type: string
              description: "The applicant's full name."
            - name: store_id
              in: body
              type: string
              description: "The store with the open position."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: get-store-manager
              type: call
              call: "workday.get-store-manager"
              with:
                store_id: "{{store_id}}"
            - name: schedule-interview
              type: call
              call: "outlook.create-event"
              with:
                organizer_upn: "{{get-store-manager.work_email}}"
                subject: "Interview: {{applicant_name}} — {{get-requisition.job_title}}"
                attendee_email: "{{applicant_email}}"
                duration_minutes: "30"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-store-manager.work_email}}"
                text: "New Applicant: {{applicant_name}} for {{get-requisition.job_title}} at Store {{store_id}}\nInterview Scheduled: {{schedule-interview.start_time}}\nCalendar invite sent to {{applicant_email}}."
  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: "/recruiting/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
        - name: store-managers
          path: "/supervisoryOrganizations?plant={{store_id}}"
          inputParameters:
            - name: store_id
              in: query
          operations:
            - name: get-store-manager
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/users/{{organizer_upn}}/events"
          inputParameters:
            - name: organizer_upn
              in: path
          operations:
            - name: create-event
              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

Launches a seasonal promotion by creating a Salesforce campaign, setting up Adobe Analytics tracking, scheduling MailChimp email blasts to loyalty members, and posting announcements to Instagram and Facebook via Meta Business API.

naftiko: "0.5"
info:
  label: "Seasonal Promotion Campaign Launcher"
  description: "Launches a seasonal promotion by creating a Salesforce campaign, setting up Adobe Analytics tracking, scheduling MailChimp email blasts to loyalty members, and posting announcements to Instagram and Facebook via Meta Business API."
  tags:
    - marketing
    - promotions
    - salesforce
    - adobe-analytics
    - mailchimp
    - meta
capability:
  exposes:
    - type: mcp
      namespace: campaign-launch
      port: 8080
      tools:
        - name: launch-seasonal-campaign
          description: "Given campaign details, create the Salesforce campaign, configure Adobe Analytics tracking, schedule MailChimp emails, and post to social media."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Name of the seasonal campaign (e.g., Pumpkin Spice Latte 2026)."
            - name: start_date
              in: body
              type: string
              description: "Campaign start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Campaign end date in YYYY-MM-DD format."
            - name: target_segment
              in: body
              type: string
              description: "The loyalty segment to target (e.g., gold_members, all_active)."
          steps:
            - name: create-sf-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "{{campaign_name}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
                status: "Planned"
            - name: schedule-email
              type: call
              call: "mailchimp.create-campaign"
              with:
                list_id: "{{target_segment}}"
                subject: "{{campaign_name}} is here!"
                send_time: "{{start_date}}T08:00:00-08:00"
            - name: post-social
              type: call
              call: "meta.create-post"
              with:
                page_id: "starbucks"
                message: "{{campaign_name}} is back! Order now on the Starbucks app. #Starbucks #{{campaign_name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_page_token"
      resources:
        - name: posts
          path: "/{{page_id}}/feed"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: create-post
              method: POST

Retrieves a ServiceNow incident for store equipment issues by ticket number, returning status, priority, assigned technician, and resolution notes.

naftiko: "0.5"
info:
  label: "ServiceNow Store Equipment Ticket"
  description: "Retrieves a ServiceNow incident for store equipment issues by ticket number, returning status, priority, assigned technician, and resolution notes."
  tags:
    - store-ops
    - equipment
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: store-equipment
      port: 8080
      tools:
        - name: get-equipment-ticket
          description: "Look up a store equipment incident by ticket number. Returns current status, priority, assigned technician, and any resolution notes."
          inputParameters:
            - name: ticket_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            ticket_number: "{{ticket_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
            - name: resolution_notes
              type: string
              mapping: "$.result.close_notes"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.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={{ticket_number}}"
          inputParameters:
            - name: ticket_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves a store operations document from SharePoint by file path, used for accessing SOPs, food safety checklists, and barista training guides.

naftiko: "0.5"
info:
  label: "SharePoint Store Operations Document"
  description: "Retrieves a store operations document from SharePoint by file path, used for accessing SOPs, food safety checklists, and barista training guides."
  tags:
    - store-ops
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: store-docs
      port: 8080
      tools:
        - name: get-operations-document
          description: "Retrieve a store operations document from SharePoint by site and file path."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID for store operations."
            - name: file_path
              in: body
              type: string
              description: "The file path within the document library."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
          outputParameters:
            - name: download_url
              type: string
              mapping: "$.@microsoft.graph.downloadUrl"
            - name: last_modified
              type: string
              mapping: "$.lastModifiedDateTime"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

Sends a formatted message to a Starbucks store manager's Slack channel, used for operational alerts, supply updates, and shift coverage requests.

naftiko: "0.5"
info:
  label: "Slack Store Manager Notification"
  description: "Sends a formatted message to a Starbucks store manager's Slack channel, used for operational alerts, supply updates, and shift coverage requests."
  tags:
    - communications
    - store-ops
    - slack
capability:
  exposes:
    - type: mcp
      namespace: store-notifications
      port: 8080
      tools:
        - name: send-store-alert
          description: "Send an operational alert message to a store manager's Slack channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Slack channel ID for the store manager channel."
            - name: message_text
              in: body
              type: string
              description: "The alert message text to send."
          call: "slack.post-message"
          with:
            channel_id: "{{channel_id}}"
            message_text: "{{message_text}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a specific transaction from Square POS by transaction ID, returning payment method, item details, tip amount, and discount applied for store-level auditing.

naftiko: "0.5"
info:
  label: "Square POS Transaction Lookup"
  description: "Retrieves a specific transaction from Square POS by transaction ID, returning payment method, item details, tip amount, and discount applied for store-level auditing."
  tags:
    - store-ops
    - payments
    - square
capability:
  exposes:
    - type: mcp
      namespace: pos-transactions
      port: 8080
      tools:
        - name: get-pos-transaction
          description: "Look up a Square POS transaction by transaction ID and location. Returns payment details, items, and totals."
          inputParameters:
            - name: location_id
              in: body
              type: string
              description: "The Square location ID for the Starbucks store."
            - name: transaction_id
              in: body
              type: string
              description: "The Square transaction ID."
          call: "square.get-transaction"
          with:
            location_id: "{{location_id}}"
            transaction_id: "{{transaction_id}}"
          outputParameters:
            - name: total_amount
              type: number
              mapping: "$.transaction.tenders[0].amount_money.amount"
            - name: payment_type
              type: string
              mapping: "$.transaction.tenders[0].type"
            - name: tip_amount
              type: number
              mapping: "$.transaction.tenders[0].tip_money.amount"
  consumes:
    - type: http
      namespace: square
      baseUri: "https://connect.squareup.com/v2"
      authentication:
        type: bearer
        token: "$secrets.square_access_token"
      resources:
        - name: transactions
          path: "/locations/{{location_id}}/transactions/{{transaction_id}}"
          inputParameters:
            - name: location_id
              in: path
            - name: transaction_id
              in: path
          operations:
            - name: get-transaction
              method: GET

Orchestrates store cleanliness audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Cleanliness Audit Pipeline"
  description: "Orchestrates store cleanliness audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - datadog
    - starbucks
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-cleanliness-audit-pipeline
          description: "Orchestrates store cleanliness audit pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "starbucks.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store community impact pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Community Impact Pipeline"
  description: "Orchestrates store community impact pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - oracle
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-community-impact-pipeline
          description: "Orchestrates store community impact pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "oracle.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Retrieves store customer count lookup data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Customer Count Lookup"
  description: "Retrieves store customer count lookup data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-customer-count-lookup
          description: "Retrieves store customer count lookup data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-customer-count-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/customer/count/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-customer-count-lookup
              method: GET

Orchestrates store design refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Design Refresh Pipeline"
  description: "Orchestrates store design refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - teams
    - sendgrid
    - workday
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-design-refresh-pipeline
          description: "Orchestrates store design refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store energy reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Energy Reduction Pipeline"
  description: "Orchestrates store energy reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-energy-reduction-pipeline
          description: "Orchestrates store energy reduction pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

When a Datadog alert fires for store equipment failure, creates a ServiceNow incident, looks up the store manager in Workday, and sends an urgent Slack notification with troubleshooting steps from SharePoint.

naftiko: "0.5"
info:
  label: "Store Equipment Failure Response"
  description: "When a Datadog alert fires for store equipment failure, creates a ServiceNow incident, looks up the store manager in Workday, and sends an urgent Slack notification with troubleshooting steps from SharePoint."
  tags:
    - store-ops
    - equipment
    - datadog
    - servicenow
    - workday
    - slack
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: equipment-response
      port: 8080
      tools:
        - name: handle-equipment-alert
          description: "Given a Datadog alert ID and store ID, create a ServiceNow ticket, resolve the store manager, retrieve the troubleshooting guide, and alert the manager via Slack."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The Datadog alert ID that triggered the workflow."
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number."
            - name: equipment_type
              in: body
              type: string
              description: "The type of equipment that failed (e.g., espresso_machine, grinder, pos_terminal)."
          steps:
            - name: get-alert-details
              type: call
              call: "datadog.get-alert"
              with:
                alert_id: "{{alert_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Equipment failure: {{equipment_type}} at Store {{store_id}}"
                category: "equipment"
                priority: "2"
                description: "Datadog alert {{alert_id}}: {{get-alert-details.title}}. Equipment: {{equipment_type}}. Store: {{store_id}}."
            - name: get-store-manager
              type: call
              call: "workday.get-store-manager"
              with:
                store_id: "{{store_id}}"
            - name: get-troubleshooting
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "store_operations"
                file_path: "Troubleshooting/{{equipment_type}}_guide.pdf"
            - name: alert-manager
              type: call
              call: "slack.post-message"
              with:
                channel_id: "store-{{store_id}}-ops"
                message_text: "URGENT: {{equipment_type}} failure at Store {{store_id}}. Incident: {{create-incident.number}}. Troubleshooting guide: {{get-troubleshooting.download_url}}. @{{get-store-manager.display_name}} please review immediately."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: alerts
          path: "/monitor/{{alert_id}}"
          inputParameters:
            - name: alert_id
              in: path
          operations:
            - name: get-alert
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.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: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: store-managers
          path: "/supervisoryOrganizations?plant={{store_id}}"
          inputParameters:
            - name: store_id
              in: query
          operations:
            - name: get-store-manager
              method: GET
    - 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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves store equipment maintenance schedule data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Equipment Maintenance Schedule"
  description: "Retrieves store equipment maintenance schedule data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - schedule
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-equipment-maintenance-schedule
          description: "Retrieves store equipment maintenance schedule data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-equipment-maintenance-schedule"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/equipment/maintenance/schedule/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-equipment-maintenance-schedule
              method: GET

Queries the SAP S/4HANA materials management module for current on-hand inventory at a specific Starbucks store location and returns item quantities, reorder points, and last delivery date.

naftiko: "0.5"
info:
  label: "Store Inventory Level Check"
  description: "Queries the SAP S/4HANA materials management module for current on-hand inventory at a specific Starbucks store location and returns item quantities, reorder points, and last delivery date."
  tags:
    - supply-chain
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: store-inventory
      port: 8080
      tools:
        - name: get-store-inventory
          description: "Look up current inventory levels for a given store and material number. Returns quantity on hand, reorder point, and last goods receipt date."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number (5-digit plant code)."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number for the inventory item."
          call: "sap.get-inventory"
          with:
            store_id: "{{store_id}}"
            material_number: "{{material_number}}"
          outputParameters:
            - name: quantity_on_hand
              type: number
              mapping: "$.d.UnrestrictedStock"
            - name: reorder_point
              type: number
              mapping: "$.d.ReorderPoint"
            - name: last_receipt_date
              type: string
              mapping: "$.d.LastGoodsReceiptDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Plant='{{store_id}}',Material='{{material_number}}')"
          inputParameters:
            - name: store_id
              in: path
            - name: material_number
              in: path
          operations:
            - name: get-inventory
              method: GET

Retrieves store labor forecast data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Labor Forecast"
  description: "Retrieves store labor forecast data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - forecast
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-labor-forecast
          description: "Retrieves store labor forecast data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-labor-forecast"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/labor/forecast/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-labor-forecast
              method: GET

Orchestrates store labor optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Labor Optimization Pipeline"
  description: "Orchestrates store labor optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - snowflake
    - slack
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-labor-optimization-pipeline
          description: "Orchestrates store labor optimization pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "oracle.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store maintenance dispatch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Maintenance Dispatch Pipeline"
  description: "Orchestrates store maintenance dispatch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - sendgrid
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-maintenance-dispatch-pipeline
          description: "Orchestrates store maintenance dispatch pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/starbucks/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Retrieves store menu item availability data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Menu Item Availability"
  description: "Retrieves store menu item availability data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - availability
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-menu-item-availability
          description: "Retrieves store menu item availability data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-menu-item-availability"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/menu/item/availability/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-menu-item-availability
              method: GET

Orchestrates store opening orchestration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Opening Orchestration Pipeline"
  description: "Orchestrates store opening orchestration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - starbucks
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-opening-orchestration-pipeline
          description: "Orchestrates store opening orchestration pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "starbucks.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: starbucks-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store real estate evaluation pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Real Estate Evaluation Pipeline"
  description: "Orchestrates store real estate evaluation pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-real-estate-evaluation-pipeline
          description: "Orchestrates store real estate evaluation pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Retrieves store remodel project status data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Remodel Project Status"
  description: "Retrieves store remodel project status data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - status
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-remodel-project-status
          description: "Retrieves store remodel project status data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-remodel-project-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/remodel/project/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-remodel-project-status
              method: GET

Retrieves store renovation project status from Microsoft Project, pulls the latest floor plan from SharePoint, checks budget actuals in SAP, and posts a weekly status update to the real estate team's Slack channel.

naftiko: "0.5"
info:
  label: "Store Renovation Project Tracker"
  description: "Retrieves store renovation project status from Microsoft Project, pulls the latest floor plan from SharePoint, checks budget actuals in SAP, and posts a weekly status update to the real estate team's Slack channel."
  tags:
    - store-ops
    - real-estate
    - microsoft-project
    - sharepoint
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: renovation-tracker
      port: 8080
      tools:
        - name: get-renovation-status
          description: "Given a project ID, compile renovation status from Microsoft Project, SharePoint, and SAP, then post the update to Slack."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The Microsoft Project project ID for the renovation."
            - name: store_id
              in: body
              type: string
              description: "The Starbucks store number being renovated."
          steps:
            - name: get-project-status
              type: call
              call: "msproject.get-project"
              with:
                project_id: "{{project_id}}"
            - name: get-floor-plan
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "store_design"
                file_path: "Renovations/Store_{{store_id}}/current_floorplan.pdf"
            - name: get-budget
              type: call
              call: "sap.get-project-budget"
              with:
                project_id: "{{project_id}}"
            - name: post-update
              type: call
              call: "slack.post-message"
              with:
                channel_id: "real-estate-ops"
                message_text: "Renovation Update — Store {{store_id}}\nPhase: {{get-project-status.current_phase}} | Completion: {{get-project-status.pct_complete}}%\nBudget: ${{get-budget.actual_spend}} / ${{get-budget.approved_budget}} ({{get-budget.variance_pct}}% variance)\nTarget Open: {{get-project-status.end_date}}\nFloor Plan: {{get-floor-plan.download_url}}"
  consumes:
    - type: http
      namespace: msproject
      baseUri: "https://graph.microsoft.com/v1.0/planner"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: projects
          path: "/plans/{{project_id}}"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-project
              method: GET
    - 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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_PROJECT_BUDGET_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: budgets
          path: "/A_ProjectBudget('{{project_id}}')"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-project-budget
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves store sales by daypart data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Sales By Daypart"
  description: "Retrieves store sales by daypart data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - daypart
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-sales-by-daypart
          description: "Retrieves store sales by daypart data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-sales-by-daypart"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/sales/by/daypart/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-sales-by-daypart
              method: GET

Orchestrates store technology refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Technology Refresh Pipeline"
  description: "Orchestrates store technology refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - starbucks
    - slack
    - oracle
    - teams
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-technology-refresh-pipeline
          description: "Orchestrates store technology refresh pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "oracle.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Retrieves store waste diversion metrics data from the Starbucks coffeehouse chain systems.

naftiko: "0.5"
info:
  label: "Store Waste Diversion Metrics"
  description: "Retrieves store waste diversion metrics data from the Starbucks coffeehouse chain systems."
  tags:
    - store
    - starbucks
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-waste-diversion-metrics
          description: "Retrieves store waste diversion metrics data from the Starbucks coffeehouse chain systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "starbucks.store-waste-diversion-metrics"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: starbucks
      baseUri: "https://api.starbucks.com/v2"
      authentication:
        type: bearer
        token: "$secrets.starbucks_api_token"
      resources:
        - name: resource
          path: "/store/waste/diversion/metrics/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-waste-diversion-metrics
              method: GET

Orchestrates supply chain coffee sourcing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Supply Chain Coffee Sourcing Pipeline"
  description: "Orchestrates supply chain coffee sourcing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - supply
    - starbucks
    - oracle
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: supply
      port: 8080
      tools:
        - name: supply-chain-coffee-sourcing-pipeline
          description: "Orchestrates supply chain coffee sourcing pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "oracle.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: oracle-resource
          path: "/api/supply"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/supply"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/supply"
          operations:
            - name: execute-3
              method: POST

When a coffee bean shipment is delayed in Oracle Cloud, notifies the supply chain team in Microsoft Teams, updates the SAP production plan, and opens a ServiceNow change request for roasting schedule adjustment.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Alerter"
  description: "When a coffee bean shipment is delayed in Oracle Cloud, notifies the supply chain team in Microsoft Teams, updates the SAP production plan, and opens a ServiceNow change request for roasting schedule adjustment."
  tags:
    - supply-chain
    - logistics
    - oracle-cloud
    - microsoft-teams
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-alert
      port: 8080
      tools:
        - name: handle-shipment-delay
          description: "Given a PO number and new ETA, update the production plan, notify the supply chain team, and open a change request for roasting schedule adjustment."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The Oracle Cloud purchase order number for the delayed shipment."
            - name: new_eta
              in: body
              type: string
              description: "The revised estimated arrival date in YYYY-MM-DD format."
            - name: delay_reason
              in: body
              type: string
              description: "Reason for the shipment delay."
          steps:
            - name: get-po-details
              type: call
              call: "oracle.get-po"
              with:
                po_number: "{{po_number}}"
            - name: update-production
              type: call
              call: "sap.update-production-order"
              with:
                material: "{{get-po-details.lines[0].MaterialNumber}}"
                new_start_date: "{{new_eta}}"
            - name: open-change-request
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Roasting schedule adjustment: PO {{po_number}} delayed to {{new_eta}}"
                description: "Supplier: {{get-po-details.Supplier}}. Origin: {{get-po-details.lines[0].OriginCountry}}. Delay reason: {{delay_reason}}. Original ETA: {{get-po-details.PromisedDeliveryDate}}."
                category: "supply_chain"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "supplychain-team@starbucks.com"
                text: "Supply Chain Alert: PO {{po_number}} from {{get-po-details.Supplier}} delayed to {{new_eta}}. Reason: {{delay_reason}}. Change request: {{open-change-request.number}}. Roasting schedule updated."
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: purchase-orders
          path: "/purchaseOrders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder"
          operations:
            - name: update-production-order
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates supply chain disruption pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Pipeline"
  description: "Orchestrates supply chain disruption pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
  tags:
    - supply
    - starbucks
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: supply
      port: 8080
      tools:
        - name: supply-chain-disruption-pipeline
          description: "Orchestrates supply chain disruption pipeline across coffeehouse chain systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/supply"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://starbucks.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/supply"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/supply"
          operations:
            - name: execute-3
              method: POST

Compiles quarterly sustainability data by pulling energy usage from SAP, waste diversion metrics from ServiceNow, ethical sourcing scores from Oracle Cloud, and cup recycling data from Salesforce, then publishes the report to SharePoint and announces in Slack.

naftiko: "0.5"
info:
  label: "Sustainability Report Compiler"
  description: "Compiles quarterly sustainability data by pulling energy usage from SAP, waste diversion metrics from ServiceNow, ethical sourcing scores from Oracle Cloud, and cup recycling data from Salesforce, then publishes the report to SharePoint and announces in Slack."
  tags:
    - sustainability
    - reporting
    - sap
    - servicenow
    - oracle-cloud
    - salesforce
    - sharepoint
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sustainability-report
      port: 8080
      tools:
        - name: compile-sustainability-report
          description: "Given a reporting quarter, gather sustainability metrics from multiple systems and publish the compiled report."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "The reporting quarter (e.g., 2026-Q1)."
            - name: region
              in: body
              type: string
              description: "The region to report on (e.g., US, GLOBAL)."
          steps:
            - name: get-energy
              type: call
              call: "sap.get-energy-usage"
              with:
                quarter: "{{quarter}}"
                region: "{{region}}"
            - name: get-waste
              type: call
              call: "servicenow.get-waste-metrics"
              with:
                quarter: "{{quarter}}"
                region: "{{region}}"
            - name: get-sourcing
              type: call
              call: "oracle.get-ethical-scores"
              with:
                quarter: "{{quarter}}"
            - name: get-recycling
              type: call
              call: "salesforce.get-recycling-data"
              with:
                quarter: "{{quarter}}"
                region: "{{region}}"
            - name: publish-report
              type: call
              call: "sharepoint.upload-report"
              with:
                site_id: "sustainability"
                file_path: "Reports/{{quarter}}_{{region}}_sustainability.pdf"
            - name: announce
              type: call
              call: "slack.post-message"
              with:
                channel_id: "sustainability-team"
                message_text: "Sustainability Report Published — {{quarter}} — {{region}}\nEnergy: {{get-energy.total_kwh}} kWh ({{get-energy.yoy_reduction_pct}}% reduction)\nWaste Diversion: {{get-waste.diversion_rate}}%\nEthical Sourcing Score: {{get-sourcing.avg_cafe_score}}/100\nCup Recycling: {{get-recycling.cups_recycled}} cups\nReport: {{publish-report.download_url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://starbucks-s4.sap.com/sap/opu/odata/sap/API_ENERGY_MGMT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: energy
          path: "/A_EnergyUsage?$filter=Quarter eq '{{quarter}}' and Region eq '{{region}}'"
          inputParameters:
            - name: quarter
              in: query
            - name: region
              in: query
          operations:
            - name: get-energy-usage
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://starbucks.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: waste
          path: "/table/waste_metric?quarter={{quarter}}&region={{region}}"
          inputParameters:
            - name: quarter
              in: query
            - name: region
              in: query
          operations:
            - name: get-waste-metrics
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://starbucks-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: ethical-scores
          path: "/suppliers/ethicalScoringSummary?quarter={{quarter}}"
          inputParameters:
            - name: quarter
              in: query
          operations:
            - name: get-ethical-scores
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: recycling
          path: "/sobjects/RecyclingMetric__c?quarter={{quarter}}&region={{region}}"
          inputParameters:
            - name: quarter
              in: query
            - name: region
              in: query
          operations:
            - name: get-recycling-data
              method: GET
    - 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:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-report
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Compiles weekly marketing metrics from Adobe Analytics, Google Analytics, and Salesforce campaign data, then distributes the dashboard summary via MailChimp to the marketing leadership team and posts to Slack.

naftiko: "0.5"
info:
  label: "Weekly Marketing Performance Dashboard"
  description: "Compiles weekly marketing metrics from Adobe Analytics, Google Analytics, and Salesforce campaign data, then distributes the dashboard summary via MailChimp to the marketing leadership team and posts to Slack."
  tags:
    - marketing
    - reporting
    - adobe-analytics
    - google-analytics
    - salesforce
    - mailchimp
    - slack
capability:
  exposes:
    - type: mcp
      namespace: marketing-dashboard
      port: 8080
      tools:
        - name: generate-marketing-dashboard
          description: "Given a week ending date, compile marketing metrics from multiple analytics platforms and distribute the summary."
          inputParameters:
            - name: week_ending
              in: body
              type: string
              description: "The Saturday ending the reporting week in YYYY-MM-DD format."
          steps:
            - name: get-adobe-metrics
              type: call
              call: "adobe.get-weekly-report"
              with:
                week_ending: "{{week_ending}}"
            - name: get-ga-metrics
              type: call
              call: "ga.get-weekly-report"
              with:
                week_ending: "{{week_ending}}"
            - name: get-campaign-results
              type: call
              call: "salesforce.get-active-campaigns"
              with:
                week_ending: "{{week_ending}}"
            - name: post-to-slack
              type: call
              call: "slack.post-message"
              with:
                channel_id: "marketing-leadership"
                message_text: "Weekly Marketing Dashboard — w/e {{week_ending}}\nDigital: {{get-adobe-metrics.total_visits}} visits | {{get-adobe-metrics.conversion_rate}}% conversion\nWeb: {{get-ga-metrics.sessions}} sessions | {{get-ga-metrics.mobile_pct}}% mobile\nCampaigns Active: {{get-campaign-results.active_count}} | Revenue Attributed: ${{get-campaign-results.total_attributed_revenue}}"
  consumes:
    - type: http
      namespace: adobe
      baseUri: "https://analytics.adobe.io/api/starbucks/reports"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: weekly
          path: "/ranked"
          operations:
            - name: get-weekly-report
              method: POST
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: weekly
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-weekly-report
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://starbucks.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign?status=Active&week={{week_ending}}"
          inputParameters:
            - name: week_ending
              in: query
          operations:
            - name: get-active-campaigns
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a Starbucks partner's current benefits enrollment from Workday, including health plan, 401k contribution rate, stock options vested, and Bean Stock grant status.

naftiko: "0.5"
info:
  label: "Workday Partner Benefits Summary"
  description: "Retrieves a Starbucks partner's current benefits enrollment from Workday, including health plan, 401k contribution rate, stock options vested, and Bean Stock grant status."
  tags:
    - partner-management
    - benefits
    - workday
capability:
  exposes:
    - type: mcp
      namespace: partner-benefits
      port: 8080
      tools:
        - name: get-partner-benefits
          description: "Look up a partner's benefits enrollment by employee ID. Returns health plan, 401k rate, stock options, and Bean Stock grant details."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID for the Starbucks partner."
          call: "workday.get-benefits"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: health_plan
              type: string
              mapping: "$.benefitPlans[0].planName"
            - name: retirement_contribution_pct
              type: number
              mapping: "$.retirementSavings.contributionPercent"
            - name: bean_stock_grants
              type: number
              mapping: "$.stockGrants.totalVested"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: benefits
          path: "/workers/{{employee_id}}/benefits"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-benefits
              method: GET

Schedules recurring Zoom meetings for district manager check-ins, pulling attendee lists from Workday and sending calendar invites via Microsoft Outlook with agenda documents from SharePoint.

naftiko: "0.5"
info:
  label: "Zoom District Manager Meeting Scheduler"
  description: "Schedules recurring Zoom meetings for district manager check-ins, pulling attendee lists from Workday and sending calendar invites via Microsoft Outlook with agenda documents from SharePoint."
  tags:
    - communications
    - meetings
    - zoom
    - workday
    - microsoft-outlook
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: district-meetings
      port: 8080
      tools:
        - name: schedule-district-meeting
          description: "Given a district ID and meeting details, resolve attendees from Workday, create a Zoom meeting, pull the agenda from SharePoint, and send invites via Outlook."
          inputParameters:
            - name: district_id
              in: body
              type: string
              description: "The Workday district organizational unit ID."
            - name: meeting_topic
              in: body
              type: string
              description: "The meeting topic/title."
            - name: scheduled_time
              in: body
              type: string
              description: "The meeting start time in ISO 8601 format."
            - name: duration_minutes
              in: body
              type: number
              description: "The meeting duration in minutes."
          steps:
            - name: get-district-managers
              type: call
              call: "workday.get-district-members"
              with:
                district_id: "{{district_id}}"
            - name: get-agenda
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "district_ops"
                file_path: "Agendas/{{district_id}}/current_agenda.docx"
            - name: create-zoom
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{meeting_topic}}"
                start_time: "{{scheduled_time}}"
                duration: "{{duration_minutes}}"
                type: "2"
            - name: send-invites
              type: call
              call: "outlook.create-event"
              with:
                subject: "{{meeting_topic}}"
                start_time: "{{scheduled_time}}"
                duration_minutes: "{{duration_minutes}}"
                body: "Zoom Link: {{create-zoom.join_url}}\nAgenda: {{get-agenda.download_url}}"
                attendees: "{{get-district-managers.email_list}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: districts
          path: "/supervisoryOrganizations/{{district_id}}/members"
          inputParameters:
            - name: district_id
              in: path
          operations:
            - name: get-district-members
              method: GET
    - 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:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_jwt_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/users/{{organizer_upn}}/events"
          inputParameters:
            - name: organizer_upn
              in: path
          operations:
            - name: create-event
              method: POST