Starbucks Capabilities
Naftiko 0.5 capability definitions for Starbucks - 100 capabilities showing integration workflows and service orchestrations.
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}}®ion={{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}}®ion={{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