Albertsons Capabilities

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

Sort
Expand

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