Albertsons Capabilities
Naftiko 0.5 capability definitions for Albertsons - 100 capabilities showing integration workflows and service orchestrations.
Queries Entra ID group memberships and validates against Workday job roles to identify access requiring recertification. Creates Jira review tasks for the security team. Supports Albertsons quarterly access certification for privileged system access.
naftiko: "0.5"
info:
label: "Access Certification Review"
description: "Queries Entra ID group memberships and validates against Workday job roles to identify access requiring recertification. Creates Jira review tasks for the security team. Supports Albertsons quarterly access certification for privileged system access."
tags:
- security
- identity
- access-management
- workday
- microsoft-entra
- jira
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-access-certification
description: "Given an Entra ID group ID and division scope, retrieve group memberships, validate against Workday roles, and create Jira review tasks for access mismatches. Use for quarterly access certification campaigns."
inputParameters:
- name: group_id
in: body
type: string
description: "The Entra ID group ID to certify (e.g., grp-abs-sap-admin)."
- name: division
in: body
type: string
description: "The Albertsons division for the access review scope."
steps:
- name: get-group-members
type: call
call: "entra-access.get-group-members"
with:
group_id: "{{group_id}}"
- name: get-workday-roles
type: call
call: "workday-access.get-workers"
with:
division: "{{division}}"
- name: create-review-task
type: call
call: "jira-access.create-issue"
with:
project_key: "SEC"
summary: "Access certification: {{group_id}} — {{division}}"
description: "{{get-group-members.member_count}} members require recertification review in {{division}}."
issue_type: "Task"
consumes:
- type: http
namespace: entra-access
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: group-members
path: "/groups/{{group_id}}/members"
inputParameters:
- name: group_id
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: workday-access
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/albertsons/workers"
inputParameters:
- name: division
in: query
operations:
- name: get-workers
method: GET
- type: http
namespace: jira-access
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: description
in: body
- name: issue_type
in: body
operations:
- name: create-issue
method: POST
Fetches weekly promotion performance data from Snowflake and sends it to Anthropic Claude for natural language summarization, then posts the summary to the marketing Teams channel and a Confluence page. Accelerates promotion review for Albertsons marketing teams.
naftiko: "0.5"
info:
label: "AI-Assisted Grocery Promotion Performance Summarization"
description: "Fetches weekly promotion performance data from Snowflake and sends it to Anthropic Claude for natural language summarization, then posts the summary to the marketing Teams channel and a Confluence page. Accelerates promotion review for Albertsons marketing teams."
tags:
- ai
- marketing
- anthropic
- snowflake
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: promo-ai
port: 8080
tools:
- name: summarize-promotion-performance
description: "Given a promotion ID and reporting week, retrieve performance metrics from Snowflake, send to Anthropic Claude for natural language summarization, and publish to Confluence and Teams. Use for weekly promotion performance reviews."
inputParameters:
- name: promotion_id
in: body
type: string
description: "The Albertsons promotion ID (e.g., PROMO-2025-WK14-FRESH)."
- name: report_week
in: body
type: string
description: "The ISO week identifier for the report (e.g., 2025-W14)."
steps:
- name: get-promo-data
type: call
call: "snowflake-promo.query-promotion"
with:
promotion_id: "{{promotion_id}}"
week: "{{report_week}}"
- name: summarize-with-claude
type: call
call: "anthropic-promo.create-message"
with:
model: "claude-opus-4-5"
max_tokens: 512
messages: "[{\"role\":\"user\",\"content\":\"Summarize the following grocery promotion performance data for week {{report_week}}: {{get-promo-data.metrics}}\"}]"
- name: publish-confluence
type: call
call: "confluence-promo.create-page"
with:
space_key: "MKT"
title: "Promotion Summary: {{promotion_id}} — {{report_week}}"
body: "{{summarize-with-claude.content}}"
- name: notify-marketing-team
type: call
call: "msteams-promo.send-message"
with:
channel_id: "marketing-analytics"
message: "Promo summary for {{promotion_id}} ({{report_week}}) published. View: {{publish-confluence.url}}"
consumes:
- type: http
namespace: snowflake-promo
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: promotion
path: "/statements"
inputParameters:
- name: promotion_id
in: body
- name: week
in: body
operations:
- name: query-promotion
method: POST
- type: http
namespace: anthropic-promo
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: message
path: "/messages"
inputParameters:
- name: model
in: body
- name: max_tokens
in: body
- name: messages
in: body
operations:
- name: create-message
method: POST
- type: http
namespace: confluence-promo
baseUri: "https://albertsons.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: page
path: "/content"
inputParameters:
- name: space_key
in: body
- name: title
in: body
- name: body
in: body
operations:
- name: create-page
method: POST
- type: http
namespace: msteams-promo
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates app release pipeline for Albertsons across devops, github, datadog.
naftiko: "0.5"
info:
label: "App Release Pipeline"
description: "Orchestrates app release pipeline for Albertsons across devops, github, datadog."
tags:
- devops
- github
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: platform-ops
port: 8080
tools:
- name: app-release-pipeline
description: "Orchestrates app release pipeline for Albertsons across devops, github, datadog."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "App Release Pipeline — {{store_id}}"
category: "devops"
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: check-repo
type: call
call: github.get-repo
with:
repo: "albertsons/{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.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: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{repo}}"
inputParameters:
- name: repo
in: path
operations:
- name: get-repo
method: GET
Orchestrates associate onboarding flow for Albertsons across hr, workday, servicenow.
naftiko: "0.5"
info:
label: "Associate Onboarding Flow"
description: "Orchestrates associate onboarding flow for Albertsons across hr, workday, servicenow."
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: associate-onboarding-flow
description: "Orchestrates associate onboarding flow for Albertsons across hr, workday, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Associate Onboarding Flow — {{store_id}}"
category: "hr"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Associate Onboarding Flow done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Schedules bakery production for Albertsons by pulling Snowflake demand data, checking SAP ingredients, and notifying bakers via Teams.
naftiko: "0.5"
info:
label: "Bakery Production Schedule"
description: "Schedules bakery production for Albertsons by pulling Snowflake demand data, checking SAP ingredients, and notifying bakers via Teams."
tags:
- store-ops
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-ops
port: 8080
tools:
- name: bakery-production-schedule
description: "Schedules bakery production for Albertsons by pulling Snowflake demand and checking SAP ingredients."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: date
type: string
description: "Production date."
steps:
- name: get-demand
type: call
call: snowflake.run-query
with:
statement: "SELECT item, projected_qty FROM BAKERY_DEMAND WHERE store='{{store_id}}' AND date='{{date}}'"
- name: check-ingredients
type: call
call: sap.get-stock
with:
plant: "{{store_id}}"
category: "bakery"
- name: notify-bakers
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-bakery"
text: "Bakery production schedule for {{date}} is ready."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod"
operations:
- name: get-stock
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates benefits enrollment pipeline for Albertsons across hr, workday, servicenow.
naftiko: "0.5"
info:
label: "Benefits Enrollment Pipeline"
description: "Orchestrates benefits enrollment pipeline for Albertsons across hr, workday, servicenow."
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: benefits-enrollment-pipeline
description: "Orchestrates benefits enrollment pipeline for Albertsons across hr, workday, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Benefits Enrollment Pipeline — {{store_id}}"
category: "hr"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Benefits Enrollment Pipeline done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Orchestrates catalog sync pipeline for Albertsons across inventory, sap, snowflake.
naftiko: "0.5"
info:
label: "Catalog Sync Pipeline"
description: "Orchestrates catalog sync pipeline for Albertsons across inventory, sap, snowflake."
tags:
- inventory
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: merchandising
port: 8080
tools:
- name: catalog-sync-pipeline
description: "Orchestrates catalog sync pipeline for Albertsons across inventory, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM CATALOG_SYNC_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Catalog Sync Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates churn prevention pipeline for Albertsons across loyalty, snowflake, salesforce.
naftiko: "0.5"
info:
label: "Churn Prevention Pipeline"
description: "Orchestrates churn prevention pipeline for Albertsons across loyalty, snowflake, salesforce."
tags:
- loyalty
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: churn-prevention-pipeline
description: "Orchestrates churn prevention pipeline for Albertsons across loyalty, snowflake, salesforce."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM CHURN_PREVENTION_PIPELINE"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Churn Prevention Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
When a GitHub Actions pipeline fails on a critical retail or e-commerce repository, creates a Jira incident ticket, alerts the engineering team in Microsoft Teams, and logs the failure in Datadog. Supports Albertsons digital commerce platform reliability.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Failure Response"
description: "When a GitHub Actions pipeline fails on a critical retail or e-commerce repository, creates a Jira incident ticket, alerts the engineering team in Microsoft Teams, and logs the failure in Datadog. Supports Albertsons digital commerce platform reliability."
tags:
- devops
- cicd
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub repository name, workflow run ID, and branch, create a Jira incident, alert engineering in Teams, and log a Datadog event. Use when a CI/CD pipeline failure occurs on a critical branch for Albertsons digital systems."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository name (e.g., albertsons-ecommerce, pharmacy-api)."
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: branch
in: body
type: string
description: "The branch where the failure occurred (e.g., main, release/2025)."
steps:
- name: create-jira-issue
type: call
call: "jira-eng.create-issue"
with:
project_key: "ENG"
summary: "Pipeline failure: {{repo_name}} on {{branch}}"
issue_type: "Bug"
priority: "High"
- name: notify-engineering
type: call
call: "msteams-eng.send-message"
with:
channel_id: "engineering-alerts"
message: "CI/CD failure in {{repo_name}} ({{branch}}). Jira: {{create-jira-issue.key}}. Run: {{run_id}}"
- name: log-datadog
type: call
call: "datadog-cicd.create-event"
with:
title: "Pipeline failure: {{repo_name}}"
text: "Run {{run_id}} failed on {{branch}}"
tags: "repo:{{repo_name}},branch:{{branch}}"
consumes:
- type: http
namespace: jira-eng
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: issue_type
in: body
- name: priority
in: body
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-eng
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
- type: http
namespace: datadog-cicd
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: event
path: "/events"
inputParameters:
- name: title
in: body
- name: text
in: body
- name: tags
in: body
operations:
- name: create-event
method: POST
When Datadog detects an AWS cloud spend anomaly above threshold, creates a ServiceNow incident and alerts the FinOps team in Microsoft Teams. Enables rapid cost containment for Albertsons cloud-hosted retail and e-commerce platforms.
naftiko: "0.5"
info:
label: "Cloud FinOps Cost Anomaly Responder"
description: "When Datadog detects an AWS cloud spend anomaly above threshold, creates a ServiceNow incident and alerts the FinOps team in Microsoft Teams. Enables rapid cost containment for Albertsons cloud-hosted retail and e-commerce platforms."
tags:
- finops
- cloud
- datadog
- aws
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops-ops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given a Datadog alert ID and AWS account ID, retrieve alert context, open a ServiceNow incident, and notify the FinOps Teams channel. Use when AWS cloud spend exceeds expected thresholds."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Datadog monitor alert ID for the cost anomaly."
- name: aws_account_id
in: body
type: string
description: "The AWS account ID where the anomaly was detected."
- name: threshold_percent
in: body
type: number
description: "The percentage over budget that triggered the alert."
steps:
- name: get-datadog-alert
type: call
call: "datadog-finops.get-monitor"
with:
monitor_id: "{{alert_id}}"
- name: create-snow-incident
type: call
call: "servicenow-finops.create-incident"
with:
short_description: "AWS cost anomaly: {{threshold_percent}}% over budget on {{aws_account_id}}"
category: "Cloud"
urgency: "2"
- name: notify-finops
type: call
call: "msteams-finops.send-message"
with:
channel_id: "finops-alerts"
message: "Cost anomaly: {{threshold_percent}}% over budget. Account: {{aws_account_id}}. Incident: {{create-snow-incident.number}}"
consumes:
- type: http
namespace: datadog-finops
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitor
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow-finops
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_pass"
resources:
- name: incident
path: "/table/incident"
inputParameters:
- name: short_description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-finops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates compliance review pipeline for Albertsons across compliance, servicenow, snowflake.
naftiko: "0.5"
info:
label: "Compliance Review Pipeline"
description: "Orchestrates compliance review pipeline for Albertsons across compliance, servicenow, snowflake."
tags:
- compliance
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance-review-pipeline
description: "Orchestrates compliance review pipeline for Albertsons across compliance, servicenow, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM COMPLIANCE_REVIEW_PIPELINE"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Compliance Review Pipeline — {{store_id}}"
category: "compliance"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Compliance Review Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates contract renewal alerts for Albertsons across procurement, sap, servicenow.
naftiko: "0.5"
info:
label: "Contract Renewal Alerts"
description: "Orchestrates contract renewal alerts for Albertsons across procurement, sap, servicenow."
tags:
- procurement
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: contract-renewal-alerts
description: "Orchestrates contract renewal alerts for Albertsons across procurement, sap, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Contract Renewal Alerts — {{store_id}}"
category: "procurement"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Contract Renewal Alerts done."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates cost optimization pipeline for Albertsons across infrastructure, snowflake, servicenow.
naftiko: "0.5"
info:
label: "Cost Optimization Pipeline"
description: "Orchestrates cost optimization pipeline for Albertsons across infrastructure, snowflake, servicenow."
tags:
- infrastructure
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: cost-optimization-pipeline
description: "Orchestrates cost optimization pipeline for Albertsons across infrastructure, snowflake, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM COST_OPTIMIZATION_PIPELINE"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Cost Optimization Pipeline — {{store_id}}"
category: "infrastructure"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Cost Optimization Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Manages curbside pickup for Albertsons by checking Salesforce orders, verifying Snowflake inventory, and notifying associates via Teams.
naftiko: "0.5"
info:
label: "Curbside Pickup Workflow"
description: "Manages curbside pickup for Albertsons by checking Salesforce orders, verifying Snowflake inventory, and notifying associates via Teams."
tags:
- e-commerce
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecommerce-ops
port: 8080
tools:
- name: curbside-pickup-workflow
description: "Manages curbside pickup for Albertsons by checking orders and verifying inventory."
inputParameters:
- name: order_id
type: string
description: "Order identifier."
- name: store_id
type: string
description: "Pickup store."
steps:
- name: get-order
type: call
call: salesforce.get-order
with:
order_id: "{{order_id}}"
- name: verify-inventory
type: call
call: snowflake.run-query
with:
statement: "SELECT sku, available_qty FROM STORE_INVENTORY WHERE store='{{store_id}}' AND sku IN (SELECT sku FROM ORDER_ITEMS WHERE order_id='{{order_id}}')"
- name: notify-associate
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-curbside"
text: "Curbside order {{order_id}} ready for picking."
consumes:
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: orders
path: "/sobjects/Order/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates customer feedback analysis for Albertsons across customer-service, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Customer Feedback Analysis"
description: "Orchestrates customer feedback analysis for Albertsons across customer-service, salesforce, snowflake."
tags:
- customer-service
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: customer-feedback-analysis
description: "Orchestrates customer feedback analysis for Albertsons across customer-service, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM CUSTOMER_FEEDBACK_ANALYSIS"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Customer Feedback Analysis done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Enrolls customers in Albertsons loyalty program by creating Salesforce profiles, syncing Snowflake data, and sending confirmations via Teams.
naftiko: "0.5"
info:
label: "Customer Loyalty Enrollment"
description: "Enrolls customers in Albertsons loyalty program by creating Salesforce profiles, syncing Snowflake data, and sending confirmations via Teams."
tags:
- loyalty
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: customer-loyalty-enrollment
description: "Enrolls customers in Albertsons loyalty by creating Salesforce profiles and syncing Snowflake data."
inputParameters:
- name: customer_email
type: string
description: "Customer email."
- name: store_id
type: string
description: "Enrollment store."
steps:
- name: create-profile
type: call
call: salesforce.create-contact
with:
email: "{{customer_email}}"
store: "{{store_id}}"
- name: sync-data
type: call
call: snowflake.run-query
with:
statement: "INSERT INTO LOYALTY_ENROLLMENTS VALUES ('{{customer_email}}', '{{store_id}}', CURRENT_TIMESTAMP())"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "loyalty-ops"
text: "New loyalty enrollment: {{customer_email}} at Store {{store_id}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/sobjects/Contact"
operations:
- name: create-contact
method: POST
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates customer order resolution workflow for Albertsons across customer-service, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Customer Order Resolution Workflow"
description: "Orchestrates customer order resolution workflow for Albertsons across customer-service, salesforce, snowflake."
tags:
- customer-service
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-ops
port: 8080
tools:
- name: customer-order-resolution-workflow
description: "Orchestrates customer order resolution workflow for Albertsons across customer-service, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM CUSTOMER_ORDER_RESOLUTION_WORKFLOW"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Customer Order Resolution Workflow — {{store_id}}"
category: "customer-service"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Orchestrates cx survey pipeline for Albertsons across customer-service, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Cx Survey Pipeline"
description: "Orchestrates cx survey pipeline for Albertsons across customer-service, salesforce, snowflake."
tags:
- customer-service
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-ops
port: 8080
tools:
- name: cx-survey-pipeline
description: "Orchestrates cx survey pipeline for Albertsons across customer-service, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM CX_SURVEY_PIPELINE"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Cx Survey Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates daily ops report for Albertsons across store-ops, snowflake, datadog.
naftiko: "0.5"
info:
label: "Daily Ops Report"
description: "Orchestrates daily ops report for Albertsons across store-ops, snowflake, datadog."
tags:
- store-ops
- snowflake
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-ops
port: 8080
tools:
- name: daily-ops-report
description: "Orchestrates daily ops report for Albertsons across store-ops, snowflake, datadog."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM DAILY_OPS_REPORT"
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Daily Ops Report done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Retrieves SLO compliance history from Datadog for Albertsons customer-facing e-commerce and pharmacy applications, publishes the weekly report to Confluence, and refreshes the Power BI operations dashboard.
naftiko: "0.5"
info:
label: "Datadog Application SLO Report"
description: "Retrieves SLO compliance history from Datadog for Albertsons customer-facing e-commerce and pharmacy applications, publishes the weekly report to Confluence, and refreshes the Power BI operations dashboard."
tags:
- observability
- slo
- datadog
- confluence
- power-bi
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: "Given a Datadog SLO ID list and report week, retrieve SLO compliance data, publish to Confluence, and refresh Power BI. Use for weekly SLO reviews for Albertsons.com, pharmacy portal, and loyalty API."
inputParameters:
- name: slo_ids
in: body
type: string
description: "Comma-separated Datadog SLO IDs to include in the report."
- name: report_week
in: body
type: string
description: "The ISO week identifier for the report (e.g., 2025-W14)."
steps:
- name: get-slo-history
type: call
call: "datadog-slo.get-slo-history"
with:
slo_ids: "{{slo_ids}}"
- name: publish-confluence-page
type: call
call: "confluence-slo.create-page"
with:
space_key: "OPS"
title: "SLO Report — {{report_week}}"
body: "Weekly SLO compliance: {{get-slo-history.summary}}"
- name: refresh-powerbi
type: call
call: "powerbi-slo.trigger-refresh"
with:
dataset_id: "$secrets.powerbi_slo_dataset_id"
consumes:
- type: http
namespace: datadog-slo
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slo-history
path: "/slo/history"
inputParameters:
- name: slo_ids
in: query
operations:
- name: get-slo-history
method: GET
- type: http
namespace: confluence-slo
baseUri: "https://albertsons.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: page
path: "/content"
inputParameters:
- name: space_key
in: body
- name: title
in: body
- name: body
in: body
operations:
- name: create-page
method: POST
- type: http
namespace: powerbi-slo
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refresh
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Checks Datadog monitor status for Albertsons.
naftiko: "0.5"
info:
label: "Datadog Monitor Health"
description: "Checks Datadog monitor status for Albertsons."
tags:
- monitoring
- datadog
- infrastructure
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: check-monitor
description: "Check Datadog monitor."
inputParameters:
- name: monitor_id
type: string
description: "Monitor ID."
call: datadog.get-monitor
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: state
type: string
mapping: "$.overall_state"
- name: name
type: string
mapping: "$.name"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Checks synthetic test for Albertsons.
naftiko: "0.5"
info:
label: "Datadog Synthetic Test"
description: "Checks synthetic test for Albertsons."
tags:
- monitoring
- datadog
- e-commerce
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-synthetic
description: "Check synthetic."
inputParameters:
- name: test_id
type: string
description: "Test ID."
call: datadog.get-test
with:
test_id: "{{test_id}}"
outputParameters:
- name: status
type: string
mapping: "$.results[0].status"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: synthetics
path: "/synthetics/tests/{{test_id}}/results"
inputParameters:
- name: test_id
in: path
operations:
- name: get-test
method: GET
Plans deli production for Albertsons by pulling Snowflake demand forecasts, checking SAP ingredient inventory, and notifying deli teams via Teams.
naftiko: "0.5"
info:
label: "Deli Production Planning"
description: "Plans deli production for Albertsons by pulling Snowflake demand forecasts, checking SAP ingredient inventory, and notifying deli teams via Teams."
tags:
- store-ops
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-ops
port: 8080
tools:
- name: deli-production-planning
description: "Plans deli production for Albertsons by pulling Snowflake demand forecasts and SAP ingredient checks."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: date
type: string
description: "Production date."
steps:
- name: get-demand
type: call
call: snowflake.run-query
with:
statement: "SELECT item, projected_qty FROM DELI_DEMAND WHERE store='{{store_id}}' AND date='{{date}}'"
- name: check-ingredients
type: call
call: sap.get-stock
with:
plant: "{{store_id}}"
category: "deli_ingredients"
- name: notify-deli
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-deli"
text: "Deli production plan for {{date}} is ready."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod"
operations:
- name: get-stock
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates emergency notification pipeline for Albertsons across store-ops, workday, microsoft-teams.
naftiko: "0.5"
info:
label: "Emergency Notification Pipeline"
description: "Orchestrates emergency notification pipeline for Albertsons across store-ops, workday, microsoft-teams."
tags:
- store-ops
- workday
- microsoft-teams
- servicenow
capability:
exposes:
- type: mcp
namespace: emergency-ops
port: 8080
tools:
- name: emergency-notification-pipeline
description: "Orchestrates emergency notification pipeline for Albertsons across store-ops, workday, microsoft-teams."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Emergency Notification Pipeline — {{store_id}}"
category: "store-ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Emergency Notification Pipeline done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
When an employee departure is confirmed in Workday, deactivates the Microsoft Entra ID account and notifies the manager via Teams. Ensures complete offboarding for Albertsons store, pharmacy, and corporate employees.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestration"
description: "When an employee departure is confirmed in Workday, deactivates the Microsoft Entra ID account and notifies the manager via Teams. Ensures complete offboarding for Albertsons store, pharmacy, and corporate employees."
tags:
- hr
- offboarding
- workday
- microsoft-entra
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-employee-offboarding
description: "Given a Workday employee ID and last working day, disable the Entra ID account and notify the manager in Teams. Use when an employee departure is confirmed in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the departing employee."
- name: last_working_day
in: body
type: string
description: "The employee's last working day in ISO 8601 format (YYYY-MM-DD)."
steps:
- name: get-worker
type: call
call: "workday-off.get-worker"
with:
employee_id: "{{employee_id}}"
- name: disable-entra-account
type: call
call: "entra-id.disable-user"
with:
userPrincipalName: "{{get-worker.email}}"
accountEnabled: false
- name: notify-manager
type: call
call: "msteams-off.send-message"
with:
channel_id: "{{get-worker.manager_email}}"
message: "Offboarding complete for {{get-worker.display_name}}. Last day: {{last_working_day}}. Account deactivated."
consumes:
- type: http
namespace: workday-off
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: worker
path: "/albertsons/workers/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: entra-id
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: user
path: "/users/{{userPrincipalName}}"
inputParameters:
- name: userPrincipalName
in: path
- name: accountEnabled
in: body
operations:
- name: disable-user
method: PATCH
- type: http
namespace: msteams-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/users/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates employee promotion workflow for Albertsons across hr, workday, servicenow.
naftiko: "0.5"
info:
label: "Employee Promotion Workflow"
description: "Orchestrates employee promotion workflow for Albertsons across hr, workday, servicenow."
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: employee-promotion-workflow
description: "Orchestrates employee promotion workflow for Albertsons across hr, workday, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Employee Promotion Workflow — {{store_id}}"
category: "hr"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Employee Promotion Workflow done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
When a role change is approved in Workday for an Albertsons employee, updates their Entra ID group memberships and notifies the employee and new manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Role Change Provisioning"
description: "When a role change is approved in Workday for an Albertsons employee, updates their Entra ID group memberships and notifies the employee and new manager via Microsoft Teams."
tags:
- hr
- identity
- role-change
- workday
- microsoft-entra
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: provision-role-change
description: "Given a Workday employee ID, old group ID, and new group ID, update Entra ID group memberships and notify the employee and new manager in Teams. Use when an Albertsons employee role or department transfer is approved."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the employee changing roles."
- name: old_group_id
in: body
type: string
description: "The Entra ID group ID to remove the employee from."
- name: new_group_id
in: body
type: string
description: "The Entra ID group ID to add the employee to."
steps:
- name: get-worker-info
type: call
call: "workday-role.get-worker"
with:
employee_id: "{{employee_id}}"
- name: remove-old-group
type: call
call: "entra-role.remove-group-member"
with:
group_id: "{{old_group_id}}"
user_id: "{{get-worker-info.entra_object_id}}"
- name: add-new-group
type: call
call: "entra-role.add-group-member"
with:
group_id: "{{new_group_id}}"
user_id: "{{get-worker-info.entra_object_id}}"
- name: notify-employee
type: call
call: "msteams-role.send-message"
with:
channel_id: "{{get-worker-info.email}}"
message: "Your Albertsons role has been updated. New system access is now active."
consumes:
- type: http
namespace: workday-role
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: worker
path: "/albertsons/workers/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: entra-role
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: group-member
path: "/groups/{{group_id}}/members/{{user_id}}/$ref"
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: add-group-member
method: POST
- name: remove-group-member
method: DELETE
- type: http
namespace: msteams-role
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/users/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates energy monitoring pipeline for Albertsons across store-ops, snowflake, sap.
naftiko: "0.5"
info:
label: "Energy Monitoring Pipeline"
description: "Orchestrates energy monitoring pipeline for Albertsons across store-ops, snowflake, sap."
tags:
- store-ops
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: facilities
port: 8080
tools:
- name: energy-monitoring-pipeline
description: "Orchestrates energy monitoring pipeline for Albertsons across store-ops, snowflake, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM ENERGY_MONITORING_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Energy Monitoring Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates eod reconciliation for Albertsons across store-ops, snowflake, sap.
naftiko: "0.5"
info:
label: "Eod Reconciliation"
description: "Orchestrates eod reconciliation for Albertsons across store-ops, snowflake, sap."
tags:
- store-ops
- snowflake
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: eod-reconciliation
description: "Orchestrates eod reconciliation for Albertsons across store-ops, snowflake, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM EOD_RECONCILIATION"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Eod Reconciliation — {{store_id}}"
category: "store-ops"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Tracks fresh produce waste for Albertsons by logging Snowflake shrinkage data, creating SAP adjustments, and alerting managers via Teams.
naftiko: "0.5"
info:
label: "Fresh Produce Waste Tracking"
description: "Tracks fresh produce waste for Albertsons by logging Snowflake shrinkage data, creating SAP adjustments, and alerting managers via Teams."
tags:
- inventory
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-ops
port: 8080
tools:
- name: fresh-produce-waste-tracking
description: "Tracks fresh produce waste for Albertsons by logging Snowflake shrinkage data and SAP adjustments."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: get-waste-data
type: call
call: snowflake.run-query
with:
statement: "SELECT category, waste_qty, waste_value FROM PRODUCE_WASTE WHERE store='{{store_id}}' AND date='{{date}}'"
- name: post-adjustment
type: call
call: sap.post-adjustment
with:
plant: "{{store_id}}"
type: "produce_waste"
- name: alert-manager
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-ops"
text: "Produce waste report for {{date}} posted."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: adjustments
path: "/A_MaterialDocumentHeader"
operations:
- name: post-adjustment
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates gift card inquiry handler for Albertsons across e-commerce, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Gift Card Inquiry Handler"
description: "Orchestrates gift card inquiry handler for Albertsons across e-commerce, salesforce, snowflake."
tags:
- e-commerce
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-ops
port: 8080
tools:
- name: gift-card-inquiry-handler
description: "Orchestrates gift card inquiry handler for Albertsons across e-commerce, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM GIFT_CARD_INQUIRY_HANDLER"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Gift Card Inquiry Handler — {{store_id}}"
category: "e-commerce"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Creates a GitHub release tag for an Albertsons digital platform, publishes release notes to Confluence, and notifies the engineering Teams channel. Coordinates software release activities for Albertsons.com, pharmacy apps, and loyalty platforms.
naftiko: "0.5"
info:
label: "GitHub Deployment Release Coordination"
description: "Creates a GitHub release tag for an Albertsons digital platform, publishes release notes to Confluence, and notifies the engineering Teams channel. Coordinates software release activities for Albertsons.com, pharmacy apps, and loyalty platforms."
tags:
- devops
- release-management
- github
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-mgmt
port: 8080
tools:
- name: coordinate-release
description: "Given a GitHub repository, version tag, and release notes, create the GitHub release, publish to Confluence, and notify the engineering Teams channel. Use when releasing a new version of an Albertsons digital platform."
inputParameters:
- name: repo_owner
in: body
type: string
description: "The GitHub organization or owner name (e.g., albertsons-digital)."
- name: repo_name
in: body
type: string
description: "The GitHub repository name (e.g., albertsons-app, pharmacy-api, loyalty-service)."
- name: version_tag
in: body
type: string
description: "The semantic version tag (e.g., v4.2.0)."
- name: release_notes
in: body
type: string
description: "The release notes describing changes in this version."
steps:
- name: create-github-release
type: call
call: "github-release.create-release"
with:
owner: "{{repo_owner}}"
repo: "{{repo_name}}"
tag_name: "{{version_tag}}"
body: "{{release_notes}}"
- name: publish-confluence
type: call
call: "confluence-release.create-page"
with:
space_key: "ENG"
title: "Release: {{repo_name}} {{version_tag}}"
body: "{{release_notes}}"
- name: notify-engineering
type: call
call: "msteams-release.send-message"
with:
channel_id: "engineering-releases"
message: "Released {{version_tag}} for {{repo_name}}. Notes: {{publish-confluence.url}}"
consumes:
- type: http
namespace: github-release
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: release
path: "/repos/{{owner}}/{{repo}}/releases"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: tag_name
in: body
- name: body
in: body
operations:
- name: create-release
method: POST
- type: http
namespace: confluence-release
baseUri: "https://albertsons.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: page
path: "/content"
inputParameters:
- name: space_key
in: body
- name: title
in: body
- name: body
in: body
operations:
- name: create-page
method: POST
- type: http
namespace: msteams-release
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Retrieves GitHub repo info for Albertsons.
naftiko: "0.5"
info:
label: "GitHub Repository Info"
description: "Retrieves GitHub repo info for Albertsons."
tags:
- devops
- github
- infrastructure
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repo-info
description: "Get GitHub repo info."
inputParameters:
- name: repo
type: string
description: "Repository."
call: github.get-repo
with:
repo: "{{repo}}"
outputParameters:
- name: branch
type: string
mapping: "$.default_branch"
- name: issues
type: integer
mapping: "$.open_issues_count"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{repo}}"
inputParameters:
- name: repo
in: path
operations:
- name: get-repo
method: GET
Triggers GitHub Advanced Security code scanning on an Albertsons digital commerce or pharmacy repository, retrieves critical findings, and creates Jira security issues for remediation. Ensures PCI DSS compliance for cardholder data environments.
naftiko: "0.5"
info:
label: "GitHub Security Code Scan"
description: "Triggers GitHub Advanced Security code scanning on an Albertsons digital commerce or pharmacy repository, retrieves critical findings, and creates Jira security issues for remediation. Ensures PCI DSS compliance for cardholder data environments."
tags:
- devops
- security
- github
- jira
capability:
exposes:
- type: mcp
namespace: code-security
port: 8080
tools:
- name: scan-repository-security
description: "Given a GitHub repository name and branch, retrieve code scanning alerts for critical vulnerabilities and create Jira security issues. Use for pre-release PCI compliance validation of Albertsons payment and e-commerce repositories."
inputParameters:
- name: repo_owner
in: body
type: string
description: "The GitHub organization or owner name (e.g., albertsons-digital)."
- name: repo_name
in: body
type: string
description: "The repository name (e.g., checkout-api, pharmacy-portal)."
- name: branch
in: body
type: string
description: "The branch to scan (e.g., main, release/2025)."
steps:
- name: get-code-alerts
type: call
call: "github-sec.list-code-alerts"
with:
owner: "{{repo_owner}}"
repo: "{{repo_name}}"
ref: "{{branch}}"
severity: "critical"
- name: create-jira-security-issue
type: call
call: "jira-security.create-issue"
with:
project_key: "SEC"
summary: "Security findings: {{repo_name}} on {{branch}}"
description: "{{get-code-alerts.total_count}} critical findings detected. PCI remediation required."
issue_type: "Bug"
priority: "Critical"
consumes:
- type: http
namespace: github-sec
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: code-alerts
path: "/repos/{{owner}}/{{repo}}/code-scanning/alerts"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: ref
in: query
- name: severity
in: query
operations:
- name: list-code-alerts
method: GET
- type: http
namespace: jira-security
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: description
in: body
- name: issue_type
in: body
- name: priority
in: body
operations:
- name: create-issue
method: POST
Checks workflow for Albertsons.
naftiko: "0.5"
info:
label: "GitHub Workflow Status"
description: "Checks workflow for Albertsons."
tags:
- devops
- github
- infrastructure
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-wf
description: "Check workflow."
inputParameters:
- name: repo
type: string
description: "Repo."
- name: wf
type: string
description: "Workflow."
call: github.get-run
with:
repo: "{{repo}}"
wf: "{{wf}}"
outputParameters:
- name: conclusion
type: string
mapping: "$.workflow_runs[0].conclusion"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: runs
path: "/repos/{{repo}}/actions/workflows/{{wf}}/runs?per_page=1"
inputParameters:
- name: repo
in: path
- name: wf
in: path
operations:
- name: get-run
method: GET
Tracks grocery deliveries for Albertsons by checking SAP shipment status, updating Snowflake logistics, and notifying stores via Teams.
naftiko: "0.5"
info:
label: "Grocery Delivery Tracking"
description: "Tracks grocery deliveries for Albertsons by checking SAP shipment status, updating Snowflake logistics, and notifying stores via Teams."
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: grocery-delivery-tracking
description: "Tracks grocery deliveries for Albertsons by checking SAP shipment status and updating Snowflake logistics."
inputParameters:
- name: shipment_id
type: string
description: "Shipment identifier."
- name: store_id
type: string
description: "Destination store."
steps:
- name: check-shipment
type: call
call: sap.get-delivery
with:
shipment_id: "{{shipment_id}}"
- name: update-logistics
type: call
call: snowflake.run-query
with:
statement: "UPDATE DELIVERY_TRACKING SET status='{{check-shipment.status}}' WHERE shipment_id='{{shipment_id}}'"
- name: notify-store
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-receiving"
text: "Delivery {{shipment_id}} status: {{check-shipment.status}}."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV_V2"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/A_OutbDeliveryHeader('{{shipment_id}}')"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-delivery
method: GET
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates inventory audit pipeline for Albertsons across inventory, sap, snowflake.
naftiko: "0.5"
info:
label: "Inventory Audit Pipeline"
description: "Orchestrates inventory audit pipeline for Albertsons across inventory, sap, snowflake."
tags:
- inventory
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: inventory-ops
port: 8080
tools:
- name: inventory-audit-pipeline
description: "Orchestrates inventory audit pipeline for Albertsons across inventory, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM INVENTORY_AUDIT_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Inventory Audit Pipeline — {{store_id}}"
category: "inventory"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Orchestrates it incident escalation for Albertsons across infrastructure, datadog, servicenow.
naftiko: "0.5"
info:
label: "It Incident Escalation"
description: "Orchestrates it incident escalation for Albertsons across infrastructure, datadog, servicenow."
tags:
- infrastructure
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: it-incident-escalation
description: "Orchestrates it incident escalation for Albertsons across infrastructure, datadog, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "It Incident Escalation — {{store_id}}"
category: "infrastructure"
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "It Incident Escalation done."
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.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: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates labor schedule optimizer for Albertsons across store-ops, snowflake, workday.
naftiko: "0.5"
info:
label: "Labor Schedule Optimizer"
description: "Orchestrates labor schedule optimizer for Albertsons across store-ops, snowflake, workday."
tags:
- store-ops
- snowflake
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workforce
port: 8080
tools:
- name: labor-schedule-optimizer
description: "Orchestrates labor schedule optimizer for Albertsons across store-ops, snowflake, workday."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM LABOR_SCHEDULE_OPTIMIZER"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Labor Schedule Optimizer done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Queries LinkedIn Talent Solutions for candidates matching active Albertsons corporate and store operations requisitions, and creates Jira recruiting tasks for recruiter follow-up on qualified candidates.
naftiko: "0.5"
info:
label: "LinkedIn Grocery Retail Talent Pipeline Enrichment"
description: "Queries LinkedIn Talent Solutions for candidates matching active Albertsons corporate and store operations requisitions, and creates Jira recruiting tasks for recruiter follow-up on qualified candidates."
tags:
- hr
- recruiting
- linkedin
- jira
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: enrich-talent-pipeline
description: "Given a LinkedIn job posting ID and role discipline, retrieve matching candidate profiles and create a Jira recruiting task for follow-up. Use when sourcing candidates for Albertsons corporate or operations leadership roles."
inputParameters:
- name: job_posting_id
in: body
type: string
description: "The LinkedIn job posting ID for the active requisition."
- name: discipline
in: body
type: string
description: "The role discipline (e.g., Merchandising, Finance, Technology, Operations)."
steps:
- name: get-linkedin-candidates
type: call
call: "linkedin-talent.search-candidates"
with:
jobPostingId: "{{job_posting_id}}"
discipline: "{{discipline}}"
- name: create-recruiter-task
type: call
call: "jira-recruiting.create-issue"
with:
project_key: "RECRUIT"
summary: "Candidate pipeline: {{discipline}} — {{job_posting_id}}"
description: "{{get-linkedin-candidates.total_count}} candidates identified for {{discipline}} requisition."
issue_type: "Task"
consumes:
- type: http
namespace: linkedin-talent
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: candidates
path: "/talentSearch"
inputParameters:
- name: jobPostingId
in: query
- name: discipline
in: query
operations:
- name: search-candidates
method: GET
- type: http
namespace: jira-recruiting
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: description
in: body
- name: issue_type
in: body
operations:
- name: create-issue
method: POST
Retrieves a Just for U loyalty member's account details from Salesforce including rewards balance, tier status, and recent redemptions. Used by Albertsons customer service agents to resolve loyalty program inquiries.
naftiko: "0.5"
info:
label: "Loyalty Customer Account Lookup"
description: "Retrieves a Just for U loyalty member's account details from Salesforce including rewards balance, tier status, and recent redemptions. Used by Albertsons customer service agents to resolve loyalty program inquiries."
tags:
- crm
- loyalty
- salesforce
- customer-service
capability:
exposes:
- type: mcp
namespace: loyalty-crm
port: 8080
tools:
- name: get-loyalty-account
description: "Given a Just for U member ID or email, retrieve account details from Salesforce including rewards balance, tier status, and recent transactions. Use when a customer service agent needs to access a loyalty member account."
inputParameters:
- name: member_id
in: body
type: string
description: "The Albertsons Just for U loyalty member ID."
- name: email
in: body
type: string
description: "The member's email address (alternative lookup key)."
call: "salesforce-loyalty.search-contacts"
with:
q: "SELECT Id, Name, ABS_Loyalty_ID__c, ABS_Rewards_Balance__c, ABS_Tier__c FROM Contact WHERE ABS_Loyalty_ID__c = '{{member_id}}'"
outputParameters:
- name: member_name
type: string
mapping: "$.records[0].Name"
- name: rewards_balance
type: string
mapping: "$.records[0].ABS_Rewards_Balance__c"
- name: tier
type: string
mapping: "$.records[0].ABS_Tier__c"
consumes:
- type: http
namespace: salesforce-loyalty
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: search-contacts
method: GET
Orchestrates loyalty enrollment pipeline for Albertsons across loyalty, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Loyalty Enrollment Pipeline"
description: "Orchestrates loyalty enrollment pipeline for Albertsons across loyalty, salesforce, snowflake."
tags:
- loyalty
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: loyalty-enrollment-pipeline
description: "Orchestrates loyalty enrollment pipeline for Albertsons across loyalty, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM LOYALTY_ENROLLMENT_PIPELINE"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Loyalty Enrollment Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates loyalty points reconciliation for Albertsons across loyalty, salesforce, snowflake.
naftiko: "0.5"
info:
label: "Loyalty Points Reconciliation"
description: "Orchestrates loyalty points reconciliation for Albertsons across loyalty, salesforce, snowflake."
tags:
- loyalty
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: loyalty-points-reconciliation
description: "Orchestrates loyalty points reconciliation for Albertsons across loyalty, salesforce, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM LOYALTY_POINTS_RECONCILIATION"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Loyalty Points Reconciliation — {{store_id}}"
category: "loyalty"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Orchestrates maintenance request workflow for Albertsons across store-ops, servicenow, sap.
naftiko: "0.5"
info:
label: "Maintenance Request Workflow"
description: "Orchestrates maintenance request workflow for Albertsons across store-ops, servicenow, sap."
tags:
- store-ops
- servicenow
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: facilities
port: 8080
tools:
- name: maintenance-request-workflow
description: "Orchestrates maintenance request workflow for Albertsons across store-ops, servicenow, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Maintenance Request Workflow — {{store_id}}"
category: "store-ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Maintenance Request Workflow done."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates markdown optimization pipeline for Albertsons across e-commerce, snowflake, sap.
naftiko: "0.5"
info:
label: "Markdown Optimization Pipeline"
description: "Orchestrates markdown optimization pipeline for Albertsons across e-commerce, snowflake, sap."
tags:
- e-commerce
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: markdown-optimization-pipeline
description: "Orchestrates markdown optimization pipeline for Albertsons across e-commerce, snowflake, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM MARKDOWN_OPTIMIZATION_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Markdown Optimization Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates marketing roi tracker for Albertsons across marketing, snowflake, salesforce.
naftiko: "0.5"
info:
label: "Marketing Roi Tracker"
description: "Orchestrates marketing roi tracker for Albertsons across marketing, snowflake, salesforce."
tags:
- marketing
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-ops
port: 8080
tools:
- name: marketing-roi-tracker
description: "Orchestrates marketing roi tracker for Albertsons across marketing, snowflake, salesforce."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM MARKETING_ROI_TRACKER"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Marketing Roi Tracker done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Audits meat department compliance for Albertsons by pulling ServiceNow inspection data, checking Snowflake temperature logs, and notifying via Teams.
naftiko: "0.5"
info:
label: "Meat Department Compliance Audit"
description: "Audits meat department compliance for Albertsons by pulling ServiceNow inspection data, checking Snowflake temperature logs, and notifying via Teams."
tags:
- compliance
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: meat-department-compliance-audit
description: "Audits meat department compliance for Albertsons by pulling inspections and temperature logs."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: date
type: string
description: "Audit date."
steps:
- name: get-inspections
type: call
call: servicenow.get-tasks
with:
store: "{{store_id}}"
category: "meat_compliance"
- name: check-temps
type: call
call: snowflake.run-query
with:
statement: "SELECT zone, avg_temp, max_temp FROM MEAT_TEMP_LOGS WHERE store='{{store_id}}' AND date='{{date}}'"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "compliance-audits"
text: "Meat dept compliance audit for Store {{store_id}} on {{date}} complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: get-tasks
method: GET
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft Teams workspace, and sends a welcome notification to the hiring manager. Ensures day-one readiness for Albertsons store, pharmacy, and corporate staff.
naftiko: "0.5"
info:
label: "New Employee Onboarding Orchestration"
description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft Teams workspace, and sends a welcome notification to the hiring manager. Ensures day-one readiness for Albertsons store, pharmacy, and corporate staff."
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-employee-onboarding
description: "Given a Workday worker ID and start date, orchestrate the full onboarding sequence across ServiceNow for ticket creation and Microsoft Teams for welcome notification. Invoke when a new hire record is confirmed in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The new hire's start date in ISO 8601 format (YYYY-MM-DD)."
- name: department
in: body
type: string
description: "The department the employee is joining (e.g., Store Ops, Pharmacy, Corporate)."
steps:
- name: get-worker
type: call
call: "workday-onboard.get-worker"
with:
employee_id: "{{employee_id}}"
- name: create-onboarding-ticket
type: call
call: "servicenow-onboard.create-incident"
with:
short_description: "Onboarding: {{get-worker.display_name}}"
caller_id: "{{get-worker.manager_email}}"
assignment_group: "IT Onboarding"
- name: notify-manager
type: call
call: "msteams-hr.send-message"
with:
channel_id: "{{department}}-general"
message: "Welcome {{get-worker.display_name}} joining on {{start_date}}! Ticket: {{create-onboarding-ticket.number}}"
consumes:
- type: http
namespace: workday-onboard
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: worker
path: "/albertsons/workers/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-onboard
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_pass"
resources:
- name: incident
path: "/table/incident"
inputParameters:
- name: short_description
in: body
- name: caller_id
in: body
- name: assignment_group
in: body
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-hr
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates offboarding pipeline for Albertsons across hr, workday, servicenow.
naftiko: "0.5"
info:
label: "Offboarding Pipeline"
description: "Orchestrates offboarding pipeline for Albertsons across hr, workday, servicenow."
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: offboarding-pipeline
description: "Orchestrates offboarding pipeline for Albertsons across hr, workday, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Offboarding Pipeline — {{store_id}}"
category: "hr"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Offboarding Pipeline done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Orchestrates payment processing pipeline for Albertsons across procurement, sap, snowflake.
naftiko: "0.5"
info:
label: "Payment Processing Pipeline"
description: "Orchestrates payment processing pipeline for Albertsons across procurement, sap, snowflake."
tags:
- procurement
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: payment-processing-pipeline
description: "Orchestrates payment processing pipeline for Albertsons across procurement, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM PAYMENT_PROCESSING_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Payment Processing Pipeline — {{store_id}}"
category: "procurement"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Manages perishable markdowns for Albertsons by analyzing Snowflake expiration data, updating SAP prices, and notifying stores via Teams.
naftiko: "0.5"
info:
label: "Perishable Markdown Pipeline"
description: "Manages perishable markdowns for Albertsons by analyzing Snowflake expiration data, updating SAP prices, and notifying stores via Teams."
tags:
- e-commerce
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: perishable-markdown-pipeline
description: "Manages perishable markdowns for Albertsons by analyzing Snowflake expiration data and updating SAP."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: date
type: string
description: "Date."
steps:
- name: get-expiring
type: call
call: snowflake.run-query
with:
statement: "SELECT sku, expiry_date, current_price FROM PERISHABLE_INVENTORY WHERE store='{{store_id}}' AND expiry_date <= DATEADD(day, 2, '{{date}}')"
- name: update-prices
type: call
call: sap.update-pricing
with:
plant: "{{store_id}}"
markdown_type: "perishable"
- name: notify-store
type: call
call: msteams.send-message
with:
channel_id: "store-{{store_id}}-ops"
text: "Perishable markdowns applied for {{date}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pricing
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: update-pricing
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Replenishes pharmacy inventory for Albertsons by checking SAP stock levels, creating transfer orders, and notifying pharmacists via Teams.
naftiko: "0.5"
info:
label: "Pharmacy Inventory Replenishment"
description: "Replenishes pharmacy inventory for Albertsons by checking SAP stock levels, creating transfer orders, and notifying pharmacists via Teams."
tags:
- inventory
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-ops
port: 8080
tools:
- name: pharmacy-inventory-replenishment
description: "Replenishes pharmacy inventory for Albertsons by checking SAP stock and creating transfer orders."
inputParameters:
- name: store_id
type: string
description: "Store identifier."
- name: drug_category
type: string
description: "Drug category."
steps:
- name: check-stock
type: call
call: sap.get-stock
with:
category: "{{drug_category}}"
plant: "{{store_id}}"
- name: create-order
type: call
call: servicenow.create-task
with:
short_description: "Pharmacy replenishment: {{drug_category}} — Store {{store_id}}"
assignment_group: "Pharmacy_Ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "pharmacy-ops"
text: "Pharmacy replenishment initiated for Store {{store_id}}: {{drug_category}}."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod"
operations:
- name: get-stock
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Triggers Power BI refresh for Albertsons.
naftiko: "0.5"
info:
label: "Power BI Refresh"
description: "Triggers Power BI refresh for Albertsons."
tags:
- analytics
- power-bi
- store-ops
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: refresh-dataset
description: "Trigger refresh."
inputParameters:
- name: dataset_id
type: string
description: "Dataset ID."
call: powerbi.refresh
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh
method: POST
Triggers a Power BI dataset refresh for the Albertsons executive store sales dashboard and notifies the retail leadership team in Microsoft Teams. Ensures leadership has current same-store sales and division performance data.
naftiko: "0.5"
info:
label: "Power BI Store Sales Executive Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the Albertsons executive store sales dashboard and notifies the retail leadership team in Microsoft Teams. Ensures leadership has current same-store sales and division performance data."
tags:
- reporting
- power-bi
- microsoft-teams
- retail
capability:
exposes:
- type: mcp
namespace: store-reporting
port: 8080
tools:
- name: refresh-sales-dashboard
description: "Given a Power BI dataset ID and reporting date, trigger a refresh of the store sales executive dashboard and notify retail leadership in Teams. Use at the start of each business day or before executive sales reviews."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID for the store sales dashboard."
- name: report_date
in: body
type: string
description: "The reporting date in YYYY-MM-DD format."
steps:
- name: trigger-powerbi-refresh
type: call
call: "powerbi-store.trigger-refresh"
with:
dataset_id: "{{dataset_id}}"
- name: notify-retail-leadership
type: call
call: "msteams-store.send-message"
with:
channel_id: "retail-leadership"
message: "Store sales dashboard refreshed for {{report_date}}. Dataset: {{dataset_id}}"
consumes:
- type: http
namespace: powerbi-store
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refresh
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams-store
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates price change pipeline for Albertsons across e-commerce, sap, snowflake.
naftiko: "0.5"
info:
label: "Price Change Pipeline"
description: "Orchestrates price change pipeline for Albertsons across e-commerce, sap, snowflake."
tags:
- e-commerce
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: price-change-pipeline
description: "Orchestrates price change pipeline for Albertsons across e-commerce, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM PRICE_CHANGE_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Price Change Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates qbr report generator for Albertsons across analytics, snowflake, salesforce.
naftiko: "0.5"
info:
label: "Qbr Report Generator"
description: "Orchestrates qbr report generator for Albertsons across analytics, snowflake, salesforce."
tags:
- analytics
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: qbr-report-generator
description: "Orchestrates qbr report generator for Albertsons across analytics, snowflake, salesforce."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM QBR_REPORT_GENERATOR"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Qbr Report Generator done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates recall response pipeline for Albertsons across inventory, sap, snowflake.
naftiko: "0.5"
info:
label: "Recall Response Pipeline"
description: "Orchestrates recall response pipeline for Albertsons across inventory, sap, snowflake."
tags:
- inventory
- sap
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: product-safety
port: 8080
tools:
- name: recall-response-pipeline
description: "Orchestrates recall response pipeline for Albertsons across inventory, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM RECALL_RESPONSE_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: get-sf
type: call
call: salesforce.query
with:
q: "SELECT Id FROM Account"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
Orchestrates remodel coordination for Albertsons across store-ops, sap, servicenow.
naftiko: "0.5"
info:
label: "Remodel Coordination"
description: "Orchestrates remodel coordination for Albertsons across store-ops, sap, servicenow."
tags:
- store-ops
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: construction
port: 8080
tools:
- name: remodel-coordination
description: "Orchestrates remodel coordination for Albertsons across store-ops, sap, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Remodel Coordination — {{store_id}}"
category: "store-ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Remodel Coordination done."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Looks up a Salesforce case by ID for Albertsons.
naftiko: "0.5"
info:
label: "Salesforce Case Status Lookup"
description: "Looks up a Salesforce case by ID for Albertsons."
tags:
- crm
- salesforce
- customer-service
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-case-status
description: "Look up Salesforce case status."
inputParameters:
- name: case_id
type: string
description: "Salesforce case ID."
call: salesforce.get-case
with:
case_id: "{{case_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: priority
type: string
mapping: "$.Priority"
consumes:
- type: http
namespace: salesforce
baseUri: "https://albertsons.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
Searches contacts for Albertsons.
naftiko: "0.5"
info:
label: "Salesforce Contact Search"
description: "Searches contacts for Albertsons."
tags:
- crm
- salesforce
- customer-service
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: search-contacts
description: "Search contacts."
inputParameters:
- name: email
type: string
description: "Email."
call: salesforce.search
with:
email: "{{email}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
consumes:
- type: http
namespace: salesforce
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/parameterizedSearch/?q={{email}}&sobject=Contact"
inputParameters:
- name: email
in: query
operations:
- name: search
method: GET
Retrieves Net Promoter Score survey responses from Salesforce for Albertsons store shoppers, computes NPS by banner and region, and writes the results to Snowflake for the customer experience analytics team.
naftiko: "0.5"
info:
label: "Salesforce Customer NPS Survey Sync"
description: "Retrieves Net Promoter Score survey responses from Salesforce for Albertsons store shoppers, computes NPS by banner and region, and writes the results to Snowflake for the customer experience analytics team."
tags:
- crm
- customer-experience
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: cx-analytics
port: 8080
tools:
- name: sync-nps-survey-results
description: "Given a date range and store banner filter, retrieve NPS survey responses from Salesforce, and write aggregate results to Snowflake. Use for weekly CX reporting across Albertsons, Safeway, Vons, and other banners."
inputParameters:
- name: date_from
in: body
type: string
description: "Start date for NPS survey retrieval in YYYY-MM-DD format."
- name: date_to
in: body
type: string
description: "End date for NPS survey retrieval in YYYY-MM-DD format."
- name: banner
in: body
type: string
description: "The store banner to filter (e.g., ALBERTSONS, SAFEWAY, VONS, ALL)."
steps:
- name: get-nps-responses
type: call
call: "salesforce-nps.query-surveys"
with:
q: "SELECT Id, ABS_NPS_Score__c, ABS_Banner__c, ABS_Region__c, CreatedDate FROM ABS_Survey__c WHERE CreatedDate >= {{date_from}} AND CreatedDate <= {{date_to}} AND ABS_Banner__c = '{{banner}}'"
- name: write-snowflake-nps
type: call
call: "snowflake-nps.insert-rows"
with:
table: "CX.NPS_SURVEY_RESPONSES"
data: "{{get-nps-responses.records}}"
consumes:
- type: http
namespace: salesforce-nps
baseUri: "https://albertsons.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: surveys
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-surveys
method: GET
- type: http
namespace: snowflake-nps
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: rows
path: "/statements"
inputParameters:
- name: table
in: body
- name: data
in: body
operations:
- name: insert-rows
method: POST
When a vendor invoice is submitted in SAP Ariba, retrieves the matching SAP purchase order, validates line-item amounts, and triggers approval or routes an exception. Streamlines Albertsons accounts payable three-way matching for grocery and pharmacy suppliers.
naftiko: "0.5"
info:
label: "SAP Ariba Vendor Invoice Approval"
description: "When a vendor invoice is submitted in SAP Ariba, retrieves the matching SAP purchase order, validates line-item amounts, and triggers approval or routes an exception. Streamlines Albertsons accounts payable three-way matching for grocery and pharmacy suppliers."
tags:
- finance
- procurement
- sap-ariba
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: ap-approval
port: 8080
tools:
- name: process-vendor-invoice
description: "Given an Ariba invoice ID and SAP PO number, retrieve both records, validate amounts, and approve or flag an exception in Ariba. Use when a vendor invoice requires three-way match validation for Albertsons grocery or pharmacy suppliers."
inputParameters:
- name: invoice_id
in: body
type: string
description: "The SAP Ariba invoice ID to process."
- name: po_number
in: body
type: string
description: "The related SAP purchase order number."
steps:
- name: get-ariba-invoice
type: call
call: "sap-ariba-ap.get-invoice"
with:
invoiceId: "{{invoice_id}}"
- name: get-sap-po
type: call
call: "sap-s4-ap.get-purchase-order"
with:
PurchaseOrder: "{{po_number}}"
- name: approve-invoice
type: call
call: "sap-ariba-ap.approve-invoice"
with:
invoiceId: "{{invoice_id}}"
status: "Approved"
consumes:
- type: http
namespace: sap-ariba-ap
baseUri: "https://openapi.ariba.com/api/invoice/v1"
authentication:
type: apikey
key: "apiKey"
value: "$secrets.ariba_api_key"
placement: query
resources:
- name: invoice
path: "/invoices/{{invoiceId}}"
inputParameters:
- name: invoiceId
in: path
operations:
- name: get-invoice
method: GET
- name: approve-invoice
method: PATCH
- type: http
namespace: sap-s4-ap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_user"
password: "$secrets.sap_s4_pass"
resources:
- name: purchase-order
path: "/A_PurchaseOrder('{{PurchaseOrder}}')"
inputParameters:
- name: PurchaseOrder
in: path
operations:
- name: get-purchase-order
method: GET
Checks SAP material availability for Albertsons.
naftiko: "0.5"
info:
label: "SAP Material Availability"
description: "Checks SAP material availability for Albertsons."
tags:
- inventory
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: check-material
description: "Check material availability."
inputParameters:
- name: material
type: string
description: "Material."
- name: plant
type: string
description: "Plant."
call: sap.get-stock
with:
material: "{{material}}"
plant: "{{plant}}"
outputParameters:
- name: on_hand
type: number
mapping: "$.d.Quantity"
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod"
operations:
- name: get-stock
method: GET
Queries SAP S/4HANA for Albertsons financial period close status across legal entities, identifies open posting periods, and triggers a Power BI executive finance dashboard refresh. Supports month-end close for retail finance.
naftiko: "0.5"
info:
label: "SAP Period Close Status Check"
description: "Queries SAP S/4HANA for Albertsons financial period close status across legal entities, identifies open posting periods, and triggers a Power BI executive finance dashboard refresh. Supports month-end close for retail finance."
tags:
- finance
- period-close
- sap-s4hana
- power-bi
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: get-period-close-status
description: "Given a fiscal year and period number, retrieve SAP posting period status and trigger a Power BI finance refresh. Use during month-end close to monitor financial period status for Albertsons divisions."
inputParameters:
- name: fiscal_year
in: body
type: string
description: "The fiscal year to check (e.g., 2025)."
- name: period
in: body
type: string
description: "The fiscal period number (e.g., 01 for January)."
steps:
- name: get-posting-periods
type: call
call: "sap-s4-close.get-posting-periods"
with:
FiscalYear: "{{fiscal_year}}"
FiscalPeriod: "{{period}}"
- name: refresh-powerbi
type: call
call: "powerbi-finance.trigger-refresh"
with:
dataset_id: "$secrets.powerbi_period_close_dataset_id"
consumes:
- type: http
namespace: sap-s4-close
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_user"
password: "$secrets.sap_s4_pass"
resources:
- name: posting-periods
path: "/A_FinancialAccountingPeriod"
inputParameters:
- name: FiscalYear
in: query
- name: FiscalPeriod
in: query
operations:
- name: get-posting-periods
method: GET
- type: http
namespace: powerbi-finance
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refresh
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Gets PO items for Albertsons.
naftiko: "0.5"
info:
label: "SAP PO Items"
description: "Gets PO items for Albertsons."
tags:
- procurement
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-po-items
description: "Get PO items."
inputParameters:
- name: po
type: string
description: "PO."
call: sap.get-items
with:
po: "{{po}}"
outputParameters:
- name: items
type: array
mapping: "$.d.results"
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: items
path: "/A_PurchaseOrder('{{po}}')/to_PurchaseOrderItem"
inputParameters:
- name: po
in: path
operations:
- name: get-items
method: GET
Retrieves purchase order details from SAP S/4HANA given a PO number. Used by Albertsons procurement and finance teams to verify order status, vendor, and line-item details without accessing the ERP UI.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Retrieves purchase order details from SAP S/4HANA given a PO number. Used by Albertsons procurement and finance teams to verify order status, vendor, and line-item details without accessing the ERP UI."
tags:
- finance
- procurement
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Given a SAP purchase order number, retrieve full PO details including vendor, line items, delivery date, and status from SAP S/4HANA. Use when an agent or user needs to verify grocery or pharmacy procurement PO data."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number (e.g., 4500098765)."
call: "sap-s4.get-purchase-order"
with:
PurchaseOrder: "{{po_number}}"
outputParameters:
- name: vendor
type: string
mapping: "$.d.Supplier"
- name: status
type: string
mapping: "$.d.PurchaseOrderStatus"
- name: total_net_amount
type: string
mapping: "$.d.PurchaseOrderNetAmount"
consumes:
- type: http
namespace: sap-s4
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_user"
password: "$secrets.sap_s4_pass"
resources:
- name: purchase-order
path: "/A_PurchaseOrder('{{PurchaseOrder}}')"
inputParameters:
- name: PurchaseOrder
in: path
operations:
- name: get-purchase-order
method: GET
Looks up SAP vendor for Albertsons.
naftiko: "0.5"
info:
label: "SAP Vendor Lookup"
description: "Looks up SAP vendor for Albertsons."
tags:
- procurement
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-vendor
description: "Look up vendor."
inputParameters:
- name: vendor
type: string
description: "Vendor number."
call: sap.get-vendor
with:
vendor: "{{vendor}}"
outputParameters:
- name: name
type: string
mapping: "$.d.SupplierName"
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: suppliers
path: "/A_Supplier('{{vendor}}')"
inputParameters:
- name: vendor
in: path
operations:
- name: get-vendor
method: GET
Orchestrates seasonal promotion setup for Albertsons across e-commerce, sap, snowflake.
naftiko: "0.5"
info:
label: "Seasonal Promotion Setup"
description: "Orchestrates seasonal promotion setup for Albertsons across e-commerce, sap, snowflake."
tags:
- e-commerce
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: merchandising
port: 8080
tools:
- name: seasonal-promotion-setup
description: "Orchestrates seasonal promotion setup for Albertsons across e-commerce, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM SEASONAL_PROMOTION_SETUP"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Seasonal Promotion Setup done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
When a critical CVE is identified, queries Datadog security signals, creates a ServiceNow security incident, and notifies the CISO team in Microsoft Teams. Enables rapid vulnerability response for Albertsons PCI-compliant retail systems.
naftiko: "0.5"
info:
label: "Security CVE Vulnerability Triage"
description: "When a critical CVE is identified, queries Datadog security signals, creates a ServiceNow security incident, and notifies the CISO team in Microsoft Teams. Enables rapid vulnerability response for Albertsons PCI-compliant retail systems."
tags:
- security
- cve
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-cve
description: "Given a CVE identifier, affected system, and severity, retrieve Datadog security signals, create a ServiceNow security incident, and notify the security team in Teams. Use when a critical or high CVE requires triage in Albertsons PCI-scope systems."
inputParameters:
- name: cve_id
in: body
type: string
description: "The CVE identifier (e.g., CVE-2024-12345)."
- name: affected_system
in: body
type: string
description: "The name of the affected system (e.g., POS, e-commerce, loyalty-api)."
- name: severity
in: body
type: string
description: "The CVE severity level (critical, high, medium, low)."
steps:
- name: get-security-signals
type: call
call: "datadog-sec.list-signals"
with:
query: "cve:{{cve_id}}"
- name: create-security-incident
type: call
call: "servicenow-sec.create-incident"
with:
short_description: "CVE {{cve_id}} ({{severity}}) on {{affected_system}}"
category: "Security"
priority: "1"
- name: notify-security-team
type: call
call: "msteams-sec.send-message"
with:
channel_id: "security-alerts"
message: "CVE {{cve_id}} ({{severity}}) on {{affected_system}}. Incident: {{create-security-incident.number}}"
consumes:
- type: http
namespace: datadog-sec
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: signals
path: "/security_analytics/signals/search"
inputParameters:
- name: query
in: body
operations:
- name: list-signals
method: POST
- type: http
namespace: servicenow-sec
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_pass"
resources:
- name: incident
path: "/table/incident"
inputParameters:
- name: short_description
in: body
- name: category
in: body
- name: priority
in: body
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-sec
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates security incident handler for Albertsons across security, servicenow, datadog.
naftiko: "0.5"
info:
label: "Security Incident Handler"
description: "Orchestrates security incident handler for Albertsons across security, servicenow, datadog."
tags:
- security
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: security-incident-handler
description: "Orchestrates security incident handler for Albertsons across security, servicenow, datadog."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Security Incident Handler — {{store_id}}"
category: "security"
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Security Incident Handler done."
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.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: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Submits a change request in ServiceNow for planned infrastructure or application changes, and notifies change advisory board approvers in Microsoft Teams. Supports Albertsons ITIL-compliant change governance for retail and e-commerce systems.
naftiko: "0.5"
info:
label: "ServiceNow Change Management Approval"
description: "Submits a change request in ServiceNow for planned infrastructure or application changes, and notifies change advisory board approvers in Microsoft Teams. Supports Albertsons ITIL-compliant change governance for retail and e-commerce systems."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-change-request
description: "Given a change title, risk level, and planned start date, create a ServiceNow change request and notify the CAB approval group in Teams. Use when planned changes to Albertsons POS, loyalty, or e-commerce systems require formal approval."
inputParameters:
- name: change_title
in: body
type: string
description: "The change request title (e.g., SAP S/4HANA quarterly patch)."
- name: risk_level
in: body
type: string
description: "The change risk level (low, medium, high)."
- name: planned_start
in: body
type: string
description: "Planned start date and time in ISO 8601 format."
- name: assigned_group
in: body
type: string
description: "The ServiceNow assignment group responsible for the change."
steps:
- name: create-change-request
type: call
call: "servicenow-change.create-change"
with:
short_description: "{{change_title}}"
risk: "{{risk_level}}"
start_date: "{{planned_start}}"
assignment_group: "{{assigned_group}}"
- name: notify-cab
type: call
call: "msteams-change.send-message"
with:
channel_id: "cab-approvals"
message: "New change request: {{change_title}} ({{risk_level}} risk). CHG: {{create-change-request.number}}. Planned: {{planned_start}}"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_pass"
resources:
- name: change
path: "/table/change_request"
inputParameters:
- name: short_description
in: body
- name: risk
in: body
- name: start_date
in: body
- name: assignment_group
in: body
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-change
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Checks change request for Albertsons.
naftiko: "0.5"
info:
label: "ServiceNow Change Status"
description: "Checks change request for Albertsons."
tags:
- itsm
- servicenow
- infrastructure
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-change
description: "Look up change."
inputParameters:
- name: change
type: string
description: "Change number."
call: servicenow.get-change
with:
change: "{{change}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request?sysparm_query=number={{change}}"
inputParameters:
- name: change
in: query
operations:
- name: get-change
method: GET
Retrieves ServiceNow incident details for Albertsons.
naftiko: "0.5"
info:
label: "ServiceNow Incident Detail"
description: "Retrieves ServiceNow incident details for Albertsons."
tags:
- itsm
- servicenow
- store-ops
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-detail
description: "Look up ServiceNow incident."
inputParameters:
- name: incident_number
type: string
description: "Incident number."
call: servicenow.get-incident
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
Orchestrates shipment tracking pipeline for Albertsons across supply-chain, sap, snowflake.
naftiko: "0.5"
info:
label: "Shipment Tracking Pipeline"
description: "Orchestrates shipment tracking pipeline for Albertsons across supply-chain, sap, snowflake."
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: shipment-tracking-pipeline
description: "Orchestrates shipment tracking pipeline for Albertsons across supply-chain, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM SHIPMENT_TRACKING_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Shipment Tracking Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates shrinkage investigation for Albertsons across store-ops, snowflake, servicenow.
naftiko: "0.5"
info:
label: "Shrinkage Investigation"
description: "Orchestrates shrinkage investigation for Albertsons across store-ops, snowflake, servicenow."
tags:
- store-ops
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loss-prevention
port: 8080
tools:
- name: shrinkage-investigation
description: "Orchestrates shrinkage investigation for Albertsons across store-ops, snowflake, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM SHRINKAGE_INVESTIGATION"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Shrinkage Investigation — {{store_id}}"
category: "store-ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Shrinkage Investigation done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates site incident response for Albertsons across e-commerce, datadog, servicenow.
naftiko: "0.5"
info:
label: "Site Incident Response"
description: "Orchestrates site incident response for Albertsons across e-commerce, datadog, servicenow."
tags:
- e-commerce
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: platform-ops
port: 8080
tools:
- name: site-incident-response
description: "Orchestrates site incident response for Albertsons across e-commerce, datadog, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Site Incident Response — {{store_id}}"
category: "e-commerce"
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Site Incident Response done."
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.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: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Queries customer segments for Albertsons.
naftiko: "0.5"
info:
label: "Snowflake Customer Segments"
description: "Queries customer segments for Albertsons."
tags:
- analytics
- snowflake
- loyalty
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-segments
description: "Query segments."
inputParameters:
- name: segment
type: string
description: "Segment."
call: snowflake.run-query
with:
segment: "{{segment}}"
outputParameters:
- name: count
type: integer
mapping: "$.data[0].COUNT"
- name: spend
type: number
mapping: "$.data[0].AVG_SPEND"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries inventory for Albertsons.
naftiko: "0.5"
info:
label: "Snowflake Inventory Query"
description: "Queries inventory for Albertsons."
tags:
- inventory
- snowflake
- supply-chain
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: query-inv
description: "Query inventory."
inputParameters:
- name: loc
type: string
description: "Location."
call: snowflake.run-query
with:
loc: "{{loc}}"
outputParameters:
- name: units
type: integer
mapping: "$.data[0].UNITS"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries promo data for Albertsons.
naftiko: "0.5"
info:
label: "Snowflake Promo Performance"
description: "Queries promo data for Albertsons."
tags:
- analytics
- snowflake
- e-commerce
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-promo
description: "Query promos."
inputParameters:
- name: promo
type: string
description: "Promo ID."
call: snowflake.run-query
with:
promo: "{{promo}}"
outputParameters:
- name: redemptions
type: integer
mapping: "$.data[0].REDEMPTIONS"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for the execution status of retail data ingestion pipelines covering sales, inventory, and loyalty data feeds, identifies failures, and creates Jira tickets for data engineering remediation.
naftiko: "0.5"
info:
label: "Snowflake Retail Data Pipeline Health Check"
description: "Queries Snowflake for the execution status of retail data ingestion pipelines covering sales, inventory, and loyalty data feeds, identifies failures, and creates Jira tickets for data engineering remediation."
tags:
- data
- analytics
- snowflake
- jira
- retail
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-retail-pipeline-health
description: "Given a pipeline prefix and lookback window in hours, query Snowflake task history for failures and open Jira tickets for each failed pipeline. Use for daily retail data pipeline health reviews."
inputParameters:
- name: pipeline_prefix
in: body
type: string
description: "The Snowflake task name prefix (e.g., SALES_, INVENTORY_, LOYALTY_)."
- name: lookback_hours
in: body
type: integer
description: "Number of hours to look back for failed pipeline tasks."
steps:
- name: query-snowflake-tasks
type: call
call: "snowflake-data.query-tasks"
with:
prefix: "{{pipeline_prefix}}"
hours: "{{lookback_hours}}"
- name: create-jira-task
type: call
call: "jira-data.create-issue"
with:
project_key: "DATA"
summary: "Retail pipeline failures: {{pipeline_prefix}}"
description: "{{query-snowflake-tasks.failed_count}} tasks failed in the last {{lookback_hours}} hours."
issue_type: "Task"
consumes:
- type: http
namespace: snowflake-data
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: tasks
path: "/statements"
inputParameters:
- name: prefix
in: body
- name: hours
in: body
operations:
- name: query-tasks
method: POST
- type: http
namespace: jira-data
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: description
in: body
- name: issue_type
in: body
operations:
- name: create-issue
method: POST
Queries Snowflake sales data for Albertsons.
naftiko: "0.5"
info:
label: "Snowflake Sales Query"
description: "Queries Snowflake sales data for Albertsons."
tags:
- analytics
- snowflake
- store-ops
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: query-sales
description: "Query sales data."
inputParameters:
- name: store_id
type: string
description: "Store ID."
- name: period
type: string
description: "Period."
call: snowflake.run-query
with:
store_id: "{{store_id}}"
period: "{{period}}"
outputParameters:
- name: revenue
type: number
mapping: "$.data[0].REVENUE"
- name: count
type: integer
mapping: "$.data[0].TXN_COUNT"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Retrieves completed story points from Jira for the last sprint across Albertsons digital product teams, publishes the velocity report to Confluence, and posts a summary to the engineering Teams channel.
naftiko: "0.5"
info:
label: "Sprint Velocity Digest"
description: "Retrieves completed story points from Jira for the last sprint across Albertsons digital product teams, publishes the velocity report to Confluence, and posts a summary to the engineering Teams channel."
tags:
- devops
- reporting
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: digest-sprint-velocity
description: "Given a Jira project key and sprint ID, retrieve completed story points, publish a Confluence velocity page, and notify the engineering Teams channel. Use at the end of each sprint for Albertsons digital product teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key (e.g., ECOM, PHARMACY, LOYALTY)."
- name: sprint_id
in: body
type: string
description: "The Jira sprint ID to report on."
steps:
- name: get-sprint-data
type: call
call: "jira-agile.get-sprint-issues"
with:
project_key: "{{project_key}}"
sprint_id: "{{sprint_id}}"
- name: publish-confluence
type: call
call: "confluence-agile.create-page"
with:
space_key: "ENG"
title: "Sprint Velocity — {{project_key}} Sprint {{sprint_id}}"
body: "Completed: {{get-sprint-data.completed_points}} story points. Issues: {{get-sprint-data.completed_issues}}"
- name: notify-teams
type: call
call: "msteams-agile.send-message"
with:
channel_id: "engineering-metrics"
message: "Sprint {{sprint_id}} closed: {{get-sprint-data.completed_points}} story points for {{project_key}}. Report: {{publish-confluence.url}}"
consumes:
- type: http
namespace: jira-agile
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprint-issues
path: "/search"
inputParameters:
- name: project_key
in: query
- name: sprint_id
in: query
operations:
- name: get-sprint-issues
method: GET
- type: http
namespace: confluence-agile
baseUri: "https://albertsons.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: page
path: "/content"
inputParameters:
- name: space_key
in: body
- name: title
in: body
- name: body
in: body
operations:
- name: create-page
method: POST
- type: http
namespace: msteams-agile
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates staffing gap alerts for Albertsons across store-ops, workday, snowflake.
naftiko: "0.5"
info:
label: "Staffing Gap Alerts"
description: "Orchestrates staffing gap alerts for Albertsons across store-ops, workday, snowflake."
tags:
- store-ops
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workforce
port: 8080
tools:
- name: staffing-gap-alerts
description: "Orchestrates staffing gap alerts for Albertsons across store-ops, workday, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM STAFFING_GAP_ALERTS"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Staffing Gap Alerts done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Orchestrates store inventory replenishment pipeline for Albertsons across inventory, snowflake, sap.
naftiko: "0.5"
info:
label: "Store Inventory Replenishment Pipeline"
description: "Orchestrates store inventory replenishment pipeline for Albertsons across inventory, snowflake, sap."
tags:
- inventory
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-ops
port: 8080
tools:
- name: store-inventory-replenishment-pipeline
description: "Orchestrates store inventory replenishment pipeline for Albertsons across inventory, snowflake, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM STORE_INVENTORY_REPLENISHMENT_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Store Inventory Replenishment Pipeline done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
When a Priority-1 incident impacting store POS or pharmacy systems is created in ServiceNow, retrieves Datadog alert context, pages the on-call engineer via PagerDuty, and notifies the store operations Teams channel. Ensures rapid resolution of retail-impacting outages across Albertsons' 2,200+ stores.
naftiko: "0.5"
info:
label: "Store IT Priority-1 Incident Triage"
description: "When a Priority-1 incident impacting store POS or pharmacy systems is created in ServiceNow, retrieves Datadog alert context, pages the on-call engineer via PagerDuty, and notifies the store operations Teams channel. Ensures rapid resolution of retail-impacting outages across Albertsons' 2,200+ stores."
tags:
- itsm
- incident-response
- servicenow
- datadog
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: handle-store-p1-incident
description: "Given a ServiceNow incident number and Datadog monitor ID, retrieve alert context, page the on-call team via PagerDuty, and alert the store operations Teams channel. Use when a P1 incident affecting store POS, pharmacy, or loyalty systems is opened."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID for the triggering alert."
- name: affected_system
in: body
type: string
description: "The name of the affected system (e.g., POS, pharmacy-rx, loyalty-api)."
steps:
- name: get-snow-incident
type: call
call: "servicenow-it.get-incident"
with:
number: "{{incident_number}}"
- name: get-datadog-monitor
type: call
call: "datadog-it.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: page-oncall
type: call
call: "pagerduty-it.create-incident"
with:
title: "P1: {{get-snow-incident.short_description}} — {{affected_system}}"
service_id: "$secrets.pagerduty_store_service_id"
urgency: "high"
- name: notify-store-ops
type: call
call: "msteams-it.send-message"
with:
channel_id: "store-operations-alerts"
message: "P1 ACTIVE: {{affected_system}} — {{get-snow-incident.short_description}}. PD: {{page-oncall.incident_number}}"
consumes:
- type: http
namespace: servicenow-it
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_pass"
resources:
- name: incident
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: datadog-it
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitor
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: pagerduty-it
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incident
path: "/incidents"
inputParameters:
- name: title
in: body
- name: service_id
in: body
- name: urgency
in: body
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-it
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates store opening readiness check for Albertsons across store-ops, datadog, workday.
naftiko: "0.5"
info:
label: "Store Opening Readiness Check"
description: "Orchestrates store opening readiness check for Albertsons across store-ops, datadog, workday."
tags:
- store-ops
- datadog
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-ops
port: 8080
tools:
- name: store-opening-readiness-check
description: "Orchestrates store opening readiness check for Albertsons across store-ops, datadog, workday."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-health
type: call
call: datadog.get-monitor
with:
monitor_id: "store-{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Store Opening Readiness Check done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Orchestrates store safety audit pipeline for Albertsons across store-ops, servicenow, workday.
naftiko: "0.5"
info:
label: "Store Safety Audit Pipeline"
description: "Orchestrates store safety audit pipeline for Albertsons across store-ops, servicenow, workday."
tags:
- store-ops
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: safety-ops
port: 8080
tools:
- name: store-safety-audit-pipeline
description: "Orchestrates store safety audit pipeline for Albertsons across store-ops, servicenow, workday."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Store Safety Audit Pipeline — {{store_id}}"
category: "store-ops"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Store Safety Audit Pipeline done."
- name: get-hr
type: call
call: workday.get-workers
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
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: workers
path: "/albertsons/workers"
operations:
- name: get-workers
method: GET
Orchestrates supplier onboarding flow for Albertsons across supply-chain, sap, servicenow.
naftiko: "0.5"
info:
label: "Supplier Onboarding Flow"
description: "Orchestrates supplier onboarding flow for Albertsons across supply-chain, sap, servicenow."
tags:
- supply-chain
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: supplier-onboarding-flow
description: "Orchestrates supplier onboarding flow for Albertsons across supply-chain, sap, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Supplier Onboarding Flow — {{store_id}}"
category: "supply-chain"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Supplier Onboarding Flow done."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates supply chain delay handler for Albertsons across supply-chain, sap, servicenow.
naftiko: "0.5"
info:
label: "Supply Chain Delay Handler"
description: "Orchestrates supply chain delay handler for Albertsons across supply-chain, sap, servicenow."
tags:
- supply-chain
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: supply-chain-delay-handler
description: "Orchestrates supply chain delay handler for Albertsons across supply-chain, sap, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Supply Chain Delay Handler — {{store_id}}"
category: "supply-chain"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Supply Chain Delay Handler done."
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Sends Teams notification for Albertsons.
naftiko: "0.5"
info:
label: "Teams Notification"
description: "Sends Teams notification for Albertsons."
tags:
- communication
- microsoft-teams
- store-ops
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-notif
description: "Send notification."
inputParameters:
- name: channel
type: string
description: "Channel."
- name: text
type: string
description: "Message."
call: msteams.send
with:
channel: "{{channel}}"
text: "{{text}}"
outputParameters:
- name: id
type: string
mapping: "$.id"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel}}/messages"
operations:
- name: send
method: POST
Applies a Terraform Cloud workspace run to provision or update Albertsons AWS infrastructure, logs the outcome to Datadog, and notifies the platform engineering team. Automates infrastructure-as-code deployments for Albertsons digital retail platforms.
naftiko: "0.5"
info:
label: "Terraform Cloud Infrastructure Provisioning"
description: "Applies a Terraform Cloud workspace run to provision or update Albertsons AWS infrastructure, logs the outcome to Datadog, and notifies the platform engineering team. Automates infrastructure-as-code deployments for Albertsons digital retail platforms."
tags:
- cloud
- infrastructure
- terraform
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: "Given a Terraform Cloud workspace ID and environment, trigger a plan-and-apply run, log the outcome to Datadog, and notify the platform team in Teams. Use when infrastructure changes need to be applied for Albertsons cloud environments."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Terraform Cloud workspace ID (e.g., ws-abc123)."
- name: environment
in: body
type: string
description: "The target environment (prod, staging, dev)."
steps:
- name: create-terraform-run
type: call
call: "terraform-cloud.create-run"
with:
workspace_id: "{{workspace_id}}"
auto_apply: true
- name: log-datadog
type: call
call: "datadog-infra.create-event"
with:
title: "Terraform run: {{workspace_id}}"
text: "Run {{create-terraform-run.run_id}} started for {{environment}}"
tags: "env:{{environment}},workspace:{{workspace_id}}"
- name: notify-platform
type: call
call: "msteams-infra.send-message"
with:
channel_id: "platform-engineering"
message: "Terraform run started: workspace {{workspace_id}} ({{environment}}). Run ID: {{create-terraform-run.run_id}}"
consumes:
- type: http
namespace: terraform-cloud
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: run
path: "/runs"
inputParameters:
- name: workspace_id
in: body
- name: auto_apply
in: body
operations:
- name: create-run
method: POST
- type: http
namespace: datadog-infra
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: event
path: "/events"
inputParameters:
- name: title
in: body
- name: text
in: body
- name: tags
in: body
operations:
- name: create-event
method: POST
- type: http
namespace: msteams-infra
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: message
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Verifies vendor deliveries for Albertsons by matching SAP PO data, logging Snowflake receipts, and creating ServiceNow discrepancy tickets.
naftiko: "0.5"
info:
label: "Vendor Delivery Verification"
description: "Verifies vendor deliveries for Albertsons by matching SAP PO data, logging Snowflake receipts, and creating ServiceNow discrepancy tickets."
tags:
- supply-chain
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: vendor-delivery-verification
description: "Verifies vendor deliveries for Albertsons by matching SAP PO data and logging Snowflake receipts."
inputParameters:
- name: po_number
type: string
description: "Purchase order number."
- name: receipt_doc
type: string
description: "Receiving document number."
steps:
- name: get-po
type: call
call: sap.get-po
with:
po_number: "{{po_number}}"
- name: log-receipt
type: call
call: snowflake.run-query
with:
statement: "INSERT INTO DELIVERY_RECEIPTS VALUES ('{{po_number}}', '{{receipt_doc}}', CURRENT_TIMESTAMP())"
- name: flag-discrepancy
type: call
call: servicenow.create-incident
with:
short_description: "Delivery verification: PO {{po_number}}"
category: "supply-chain"
consumes:
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Orchestrates vendor invoice matching pipeline for Albertsons across procurement, sap, servicenow.
naftiko: "0.5"
info:
label: "Vendor Invoice Matching Pipeline"
description: "Orchestrates vendor invoice matching pipeline for Albertsons across procurement, sap, servicenow."
tags:
- procurement
- sap
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: vendor-invoice-matching-pipeline
description: "Orchestrates vendor invoice matching pipeline for Albertsons across procurement, sap, servicenow."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM VENDOR_INVOICE_MATCHING_PIPELINE"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: "Vendor Invoice Matching Pipeline — {{store_id}}"
category: "procurement"
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: servicenow
baseUri: "https://albertsons.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
Orchestrates vendor performance scorecard for Albertsons across supply-chain, sap, snowflake.
naftiko: "0.5"
info:
label: "Vendor Performance Scorecard"
description: "Orchestrates vendor performance scorecard for Albertsons across supply-chain, sap, snowflake."
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: vendor-performance-scorecard
description: "Orchestrates vendor performance scorecard for Albertsons across supply-chain, sap, snowflake."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM VENDOR_PERFORMANCE_SCORECARD"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Vendor Performance Scorecard done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Orchestrates warehouse capacity planner for Albertsons across supply-chain, snowflake, sap.
naftiko: "0.5"
info:
label: "Warehouse Capacity Planner"
description: "Orchestrates warehouse capacity planner for Albertsons across supply-chain, snowflake, sap."
tags:
- supply-chain
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: warehouse-capacity-planner
description: "Orchestrates warehouse capacity planner for Albertsons across supply-chain, snowflake, sap."
inputParameters:
- name: store_id
type: string
description: "Store or entity identifier."
- name: date
type: string
description: "Date in YYYY-MM-DD."
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
statement: "SELECT * FROM WAREHOUSE_CAPACITY_PLANNER"
- name: check-erp
type: call
call: sap.get-data
with:
entity: "{{store_id}}"
- name: notify
type: call
call: msteams.send-message
with:
channel_id: "ops-{{store_id}}"
text: "Warehouse Capacity Planner done."
consumes:
- type: http
namespace: snowflake
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://albertsons-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: entities
path: "/A_BusinessPartner"
operations:
- name: get-data
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: send-message
method: POST
Retrieves employee profile from Workday for Albertsons.
naftiko: "0.5"
info:
label: "Workday Employee Directory"
description: "Retrieves employee profile from Workday for Albertsons."
tags:
- hr
- workday
- store-ops
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee-dir
description: "Look up Workday employee."
inputParameters:
- name: worker_id
type: string
description: "Workday worker ID."
call: workday.get-worker
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: name
type: string
mapping: "$.worker.name.formatted"
- name: title
type: string
mapping: "$.worker.position.title"
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: "/albertsons/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Pulls headcount totals from Workday by division and publishes the snapshot to Snowflake and Power BI for HR and finance leadership. Supports monthly workforce planning for Albertsons' 285,000+ employees across stores, distribution, and corporate.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot Report"
description: "Pulls headcount totals from Workday by division and publishes the snapshot to Snowflake and Power BI for HR and finance leadership. Supports monthly workforce planning for Albertsons' 285,000+ employees across stores, distribution, and corporate."
tags:
- hr
- reporting
- workday
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: publish-headcount-snapshot
description: "Given a division code and reporting period, retrieve headcount from Workday, write the snapshot to Snowflake, and trigger a Power BI refresh. Use for monthly workforce headcount reporting."
inputParameters:
- name: division_code
in: body
type: string
description: "The Albertsons division code (e.g., SAFEWAY-WEST, VONS, JEWEL-OSCO)."
- name: reporting_period
in: body
type: string
description: "The reporting period in YYYY-MM format."
steps:
- name: get-headcount
type: call
call: "workday-hr.get-workers"
with:
division: "{{division_code}}"
- name: write-snowflake
type: call
call: "snowflake-hr.insert-rows"
with:
table: "HR.HEADCOUNT_SNAPSHOTS"
data: "{{get-headcount.workers}}"
- name: refresh-powerbi
type: call
call: "powerbi-hr.trigger-refresh"
with:
dataset_id: "$secrets.powerbi_headcount_dataset_id"
consumes:
- type: http
namespace: workday-hr
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/albertsons/workers"
inputParameters:
- name: division
in: query
operations:
- name: get-workers
method: GET
- type: http
namespace: snowflake-hr
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: rows
path: "/statements"
inputParameters:
- name: table
in: body
- name: data
in: body
operations:
- name: insert-rows
method: POST
- type: http
namespace: powerbi-hr
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refresh
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Gets headcount for Albertsons.
naftiko: "0.5"
info:
label: "Workday Headcount"
description: "Gets headcount for Albertsons."
tags:
- hr
- workday
- store-ops
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-hc
description: "Get headcount."
inputParameters:
- name: dept
type: string
description: "Department."
call: workday.get-hc
with:
dept: "{{dept}}"
outputParameters:
- name: total
type: integer
mapping: "$.headcount.total"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: hc
path: "/albertsons/headcount"
operations:
- name: get-hc
method: GET
Retrieves payroll results from Workday for a pay cycle, compares totals against the prior period stored in Snowflake, and creates a Jira variance review task if the delta exceeds threshold. Supports Albertsons payroll integrity across all divisions and employment types.
naftiko: "0.5"
info:
label: "Workday Payroll Reconciliation"
description: "Retrieves payroll results from Workday for a pay cycle, compares totals against the prior period stored in Snowflake, and creates a Jira variance review task if the delta exceeds threshold. Supports Albertsons payroll integrity across all divisions and employment types."
tags:
- hr
- payroll
- workday
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: payroll-ops
port: 8080
tools:
- name: reconcile-payroll
description: "Given a Workday pay group ID and variance threshold percentage, retrieve payroll totals, compare against prior period from Snowflake, and create a Jira review task if variance exceeds the threshold. Use for weekly or bi-weekly payroll reconciliation."
inputParameters:
- name: pay_group_id
in: body
type: string
description: "The Workday pay group ID (e.g., WEEKLY-STORE, BIWEEKLY-CORP)."
- name: variance_threshold_pct
in: body
type: number
description: "The percentage variance above which a Jira review task is created (e.g., 3.0 for 3%)."
steps:
- name: get-payroll-results
type: call
call: "workday-payroll.get-pay-run"
with:
pay_group_id: "{{pay_group_id}}"
- name: query-prior-period
type: call
call: "snowflake-payroll.query-prior"
with:
pay_group_id: "{{pay_group_id}}"
- name: create-variance-task
type: call
call: "jira-payroll.create-issue"
with:
project_key: "PAY"
summary: "Payroll variance: {{pay_group_id}}"
description: "Variance above {{variance_threshold_pct}}% detected versus prior period. Finance review required."
issue_type: "Task"
consumes:
- type: http
namespace: workday-payroll
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: pay-run
path: "/albertsons/payrollResults"
inputParameters:
- name: pay_group_id
in: query
operations:
- name: get-pay-run
method: GET
- type: http
namespace: snowflake-payroll
baseUri: "https://albertsons.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: prior
path: "/statements"
inputParameters:
- name: pay_group_id
in: body
operations:
- name: query-prior
method: POST
- type: http
namespace: jira-payroll
baseUri: "https://albertsons.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue
path: "/issue"
inputParameters:
- name: project_key
in: body
- name: summary
in: body
- name: description
in: body
- name: issue_type
in: body
operations:
- name: create-issue
method: POST
Retrieves PTO balance for Albertsons.
naftiko: "0.5"
info:
label: "Workday PTO Balance"
description: "Retrieves PTO balance for Albertsons."
tags:
- hr
- workday
- store-ops
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-pto
description: "Check PTO balance."
inputParameters:
- name: worker_id
type: string
description: "Worker ID."
call: workday.get-pto
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: available
type: number
mapping: "$.timeOff.available"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-off
path: "/albertsons/workers/{{worker_id}}/timeOff"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-pto
method: GET