7-Eleven Capabilities

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

Sort
Expand

Sends store anomaly data from Datadog to the OpenAI API for intelligent root-cause analysis, then posts the AI-generated summary to the operations Teams channel.

naftiko: "0.5"
info:
  label: "AI-Assisted Store Anomaly Detection Summary"
  description: "Sends store anomaly data from Datadog to the OpenAI API for intelligent root-cause analysis, then posts the AI-generated summary to the operations Teams channel."
  tags:
    - ai
    - observability
    - datadog
    - openai
    - retail
capability:
  exposes:
    - type: mcp
      namespace: ai-ops
      port: 8080
      tools:
        - name: summarize-store-anomalies
          description: "Given a Datadog monitor ID and time window, retrieve anomaly data and send it to OpenAI for root-cause analysis. Post the AI-generated summary to the ops Teams channel. Use when an operator needs a plain-English explanation of complex store system anomalies."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Datadog monitor ID to retrieve anomaly data from."
            - name: lookback_minutes
              in: body
              type: integer
              description: "Number of minutes of anomaly history to analyze."
            - name: teams_channel_id
              in: body
              type: string
              description: "Ops Teams channel ID to post the summary to."
          steps:
            - name: get-anomaly-data
              type: call
              call: datadog-ai.get-monitor-history
              with:
                monitor_id: "{{monitor_id}}"
                minutes: "{{lookback_minutes}}"
            - name: generate-summary
              type: call
              call: openai.create-completion
              with:
                model: "gpt-4o"
                prompt: "Analyze these store system anomalies and provide a concise root-cause summary with recommended actions: {{get-anomaly-data.events}}"
            - name: post-summary
              type: call
              call: msteams-ai.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "AI Anomaly Summary for monitor {{monitor_id}}: {{generate-summary.choices[0].message.content}}"
  consumes:
    - type: http
      namespace: datadog-ai
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitor-history
          path: "/monitor/{{monitor_id}}/history"
          inputParameters:
            - name: monitor_id
              in: path
            - name: minutes
              in: query
          operations:
            - name: get-monitor-history
              method: GET
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: msteams-ai
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates app release pipeline for 7-Eleven across devops, github, datadog.

naftiko: "0.5"
info:
  label: "App Release Pipeline"
  description: "Orchestrates app release pipeline for 7-Eleven 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 7-Eleven 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: "7-eleven/{{store_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://7-eleven.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 7-Eleven across hr, workday, servicenow.

naftiko: "0.5"
info:
  label: "Associate Onboarding Flow"
  description: "Orchestrates associate onboarding flow for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Orchestrates benefits enrollment pipeline for 7-Eleven across hr, workday, servicenow.

naftiko: "0.5"
info:
  label: "Benefits Enrollment Pipeline"
  description: "Orchestrates benefits enrollment pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Orchestrates catalog sync pipeline for 7-Eleven across inventory, sap, snowflake.

naftiko: "0.5"
info:
  label: "Catalog Sync Pipeline"
  description: "Orchestrates catalog sync pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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

Submits a ServiceNow change request for planned store system maintenance, routes it for manager approval, and sends a Teams notification to the change advisory board.

naftiko: "0.5"
info:
  label: "Change Management Request Approval"
  description: "Submits a ServiceNow change request for planned store system maintenance, routes it for manager approval, and sends a Teams notification to the change advisory board."
  tags:
    - itsm
    - change-management
    - servicenow
    - approval
    - it-ops
capability:
  exposes:
    - type: mcp
      namespace: change-ops
      port: 8080
      tools:
        - name: submit-change-request
          description: "Given maintenance details and a planned maintenance window, create a ServiceNow change request and notify the change advisory board channel in Teams. Use when engineering teams need to schedule planned maintenance affecting store systems."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief description of the planned change."
            - name: description
              in: body
              type: string
              description: "Full details of the change, including systems affected and rollback plan."
            - name: planned_start
              in: body
              type: string
              description: "Planned maintenance start time in ISO 8601 format."
            - name: planned_end
              in: body
              type: string
              description: "Planned maintenance end time in ISO 8601 format."
            - name: teams_channel_id
              in: body
              type: string
              description: "Change advisory board Teams channel ID."
          steps:
            - name: create-change
              type: call
              call: servicenow-change.create-change-request
              with:
                short_description: "{{short_description}}"
                description: "{{description}}"
                start_date: "{{planned_start}}"
                end_date: "{{planned_end}}"
                type: "standard"
            - name: notify-cab
              type: call
              call: msteams-cab.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Change Request submitted: {{create-change.number}} | {{short_description}} | Window: {{planned_start}} to {{planned_end}} | Awaiting CAB approval."
  consumes:
    - type: http
      namespace: servicenow-change
      baseUri: "https://7eleven.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change-request
              method: POST
    - type: http
      namespace: msteams-cab
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates churn prevention pipeline for 7-Eleven across loyalty, snowflake, salesforce.

naftiko: "0.5"
info:
  label: "Churn Prevention Pipeline"
  description: "Orchestrates churn prevention pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 an AWS cost anomaly is detected, creates a Datadog event, opens a Jira ticket for the infrastructure team, and posts an alert to the cloud-finops Teams channel.

naftiko: "0.5"
info:
  label: "Cloud Infrastructure Cost Anomaly Response"
  description: "When an AWS cost anomaly is detected, creates a Datadog event, opens a Jira ticket for the infrastructure team, and posts an alert to the cloud-finops Teams channel."
  tags:
    - finops
    - cloud
    - aws
    - datadog
    - jira
capability:
  exposes:
    - type: mcp
      namespace: cloud-finops
      port: 8080
      tools:
        - name: handle-cloud-cost-anomaly
          description: "Given an AWS cost anomaly alert with service name and estimated overage, create a Datadog event, open a Jira ticket assigned to the cloud team, and notify the finops Teams channel. Use when AWS Cost Anomaly Detection triggers an alert above the configured threshold."
          inputParameters:
            - name: anomaly_id
              in: body
              type: string
              description: "AWS Cost Anomaly Detection anomaly ID."
            - name: service_name
              in: body
              type: string
              description: "AWS service name generating the cost anomaly."
            - name: estimated_overage_usd
              in: body
              type: number
              description: "Estimated cost overage in USD."
            - name: teams_channel_id
              in: body
              type: string
              description: "Teams channel ID for finops alerts."
          steps:
            - name: create-dd-event
              type: call
              call: datadog.create-event
              with:
                title: "AWS Cost Anomaly: {{service_name}}"
                text: "Anomaly {{anomaly_id}} — estimated overage ${{estimated_overage_usd}}"
                alert_type: "warning"
            - name: open-jira
              type: call
              call: jira.create-issue
              with:
                project_key: "INFRA"
                issuetype: "Task"
                summary: "Cloud cost anomaly — {{service_name}} +${{estimated_overage_usd}}"
                description: "AWS anomaly {{anomaly_id}}. Datadog event: {{create-dd-event.id}}. Investigate and reduce spend."
            - name: alert-finops
              type: call
              call: msteams-finops.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "AWS Cost Anomaly on {{service_name}}: +${{estimated_overage_usd}} | Jira: {{open-jira.key}} | Datadog: {{create-dd-event.url}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://7eleven.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams-finops
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates compliance review pipeline for 7-Eleven across compliance, servicenow, snowflake.

naftiko: "0.5"
info:
  label: "Compliance Review Pipeline"
  description: "Orchestrates compliance review pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 7-Eleven across procurement, sap, servicenow.

naftiko: "0.5"
info:
  label: "Contract Renewal Alerts"
  description: "Orchestrates contract renewal alerts for 7-Eleven 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 7-Eleven 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://7-eleven-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://7-eleven.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 7-Eleven across infrastructure, snowflake, servicenow.

naftiko: "0.5"
info:
  label: "Cost Optimization Pipeline"
  description: "Orchestrates cost optimization pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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

When a customer submits a complaint via the 7-Eleven app or website, creates a Salesforce case, sends an automated acknowledgment email, and assigns the case to the appropriate store manager.

naftiko: "0.5"
info:
  label: "Customer Complaint Case Management"
  description: "When a customer submits a complaint via the 7-Eleven app or website, creates a Salesforce case, sends an automated acknowledgment email, and assigns the case to the appropriate store manager."
  tags:
    - customer-service
    - salesforce
    - crm
    - complaint
    - retail
capability:
  exposes:
    - type: mcp
      namespace: cx-ops
      port: 8080
      tools:
        - name: create-customer-complaint-case
          description: "Given customer details, complaint description, and store ID, open a Salesforce case, send an acknowledgment email to the customer, and notify the store manager in Teams. Use when processing inbound customer complaints."
          inputParameters:
            - name: customer_name
              in: body
              type: string
              description: "Customer's full name."
            - name: customer_email
              in: body
              type: string
              description: "Customer's email address."
            - name: store_id
              in: body
              type: string
              description: "Store ID where the issue occurred."
            - name: complaint_description
              in: body
              type: string
              description: "Full description of the customer's complaint."
            - name: store_manager_upn
              in: body
              type: string
              description: "UPN of the store manager to notify."
          steps:
            - name: create-case
              type: call
              call: salesforce-cx.create-case
              with:
                subject: "Customer complaint — Store {{store_id}}"
                description: "{{complaint_description}}"
                origin: "Web"
                customer_email: "{{customer_email}}"
            - name: send-ack
              type: call
              call: msgraph-cx.send-email
              with:
                to: "{{customer_email}}"
                subject: "We received your feedback — Case {{create-case.case_number}}"
                body: "Dear {{customer_name}}, thank you for contacting 7-Eleven. Your case number is {{create-case.case_number}}. We will respond within 2 business days."
            - name: notify-manager
              type: call
              call: msteams-cx.send-message
              with:
                recipient_upn: "{{store_manager_upn}}"
                text: "New customer complaint for store {{store_id}}. Case: {{create-case.case_number}}. Description: {{complaint_description}}"
  consumes:
    - type: http
      namespace: salesforce-cx
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msgraph-cx
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/users/{{sender}}/sendMail"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: msteams-cx
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates customer feedback analysis for 7-Eleven across customer-service, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Customer Feedback Analysis"
  description: "Orchestrates customer feedback analysis for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 customer order resolution workflow for 7-Eleven across customer-service, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Customer Order Resolution Workflow"
  description: "Orchestrates customer order resolution workflow for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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://7-eleven.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 7-Eleven across customer-service, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Cx Survey Pipeline"
  description: "Orchestrates cx survey pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 7-Eleven across store-ops, snowflake, datadog.

naftiko: "0.5"
info:
  label: "Daily Ops Report"
  description: "Orchestrates daily ops report for 7-Eleven 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 7-Eleven 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://7-eleven.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

Aggregates prior-day sales data from the POS system across all stores, publishes a summary to Power BI, and posts a digest to the operations Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Daily Sales Report Digest"
  description: "Aggregates prior-day sales data from the POS system across all stores, publishes a summary to Power BI, and posts a digest to the operations Microsoft Teams channel."
  tags:
    - retail
    - reporting
    - analytics
    - power-bi
    - sales
capability:
  exposes:
    - type: mcp
      namespace: sales-reporting
      port: 8080
      tools:
        - name: digest-daily-sales
          description: "Given a report date, pull store sales totals from the POS analytics API, push a dataset refresh to Power BI, and post a summary to the ops Teams channel. Use each morning to distribute the prior-day performance summary."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "Date for which to pull sales data, in YYYY-MM-DD format."
            - name: teams_channel_id
              in: body
              type: string
              description: "Microsoft Teams channel ID for the ops channel."
          steps:
            - name: fetch-sales
              type: call
              call: pos-analytics.get-daily-sales
              with:
                date: "{{report_date}}"
            - name: refresh-pbi
              type: call
              call: powerbi.trigger-refresh
              with:
                dataset_id: "$secrets.pbi_sales_dataset_id"
            - name: post-digest
              type: call
              call: msteams-ops.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Daily Sales {{report_date}}: Total {{fetch-sales.total_revenue}} | Transactions {{fetch-sales.total_transactions}} | Top Store: {{fetch-sales.top_store_id}}. Power BI refreshed."
  consumes:
    - type: http
      namespace: pos-analytics
      baseUri: "https://api.7-eleven-analytics.com/v1"
      authentication:
        type: apikey
        key: "X-API-Key"
        value: "$secrets.pos_analytics_api_key"
        placement: header
      resources:
        - name: daily-sales
          path: "/sales/daily"
          inputParameters:
            - name: date
              in: query
          operations:
            - name: get-daily-sales
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams-ops
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks Datadog monitor status for 7-Eleven.

naftiko: "0.5"
info:
  label: "Datadog Monitor Health"
  description: "Checks Datadog monitor status for 7-Eleven."
  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

Retrieves Datadog synthetic monitor results for store POS endpoints, surfaces SLA compliance status, and generates a weekly uptime report in Power BI.

naftiko: "0.5"
info:
  label: "Datadog Synthetic Monitor Store Uptime Check"
  description: "Retrieves Datadog synthetic monitor results for store POS endpoints, surfaces SLA compliance status, and generates a weekly uptime report in Power BI."
  tags:
    - monitoring
    - datadog
    - observability
    - uptime
    - retail
capability:
  exposes:
    - type: mcp
      namespace: uptime-ops
      port: 8080
      tools:
        - name: get-store-uptime-report
          description: "Given a report period and Power BI dataset ID, fetch synthetic monitor results from Datadog for all store POS endpoints and trigger a Power BI refresh for the uptime dashboard. Use weekly for SLA reporting."
          inputParameters:
            - name: from_ts
              in: body
              type: integer
              description: "Unix timestamp for the start of the reporting period."
            - name: to_ts
              in: body
              type: integer
              description: "Unix timestamp for the end of the reporting period."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for the uptime dashboard."
          steps:
            - name: get-synthetics
              type: call
              call: datadog-synthetics.get-results
              with:
                from_ts: "{{from_ts}}"
                to_ts: "{{to_ts}}"
            - name: refresh-uptime-pbi
              type: call
              call: powerbi-uptime.trigger-refresh
              with:
                dataset_id: "{{pbi_dataset_id}}"
  consumes:
    - type: http
      namespace: datadog-synthetics
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: synthetics-results
          path: "/synthetics/tests/results/search"
          inputParameters:
            - name: from_ts
              in: query
            - name: to_ts
              in: query
          operations:
            - name: get-results
              method: GET
    - type: http
      namespace: powerbi-uptime
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Checks synthetic test for 7-Eleven.

naftiko: "0.5"
info:
  label: "Datadog Synthetic Test"
  description: "Checks synthetic test for 7-Eleven."
  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

Orchestrates emergency notification pipeline for 7-Eleven across store-ops, workday, microsoft-teams.

naftiko: "0.5"
info:
  label: "Emergency Notification Pipeline"
  description: "Orchestrates emergency notification pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

When an employee termination is processed in ADP, deactivates their Okta account, closes open ServiceNow access requests, and removes them from active Salesforce user licenses.

naftiko: "0.5"
info:
  label: "Employee Offboarding Deprovisioning"
  description: "When an employee termination is processed in ADP, deactivates their Okta account, closes open ServiceNow access requests, and removes them from active Salesforce user licenses."
  tags:
    - hr
    - offboarding
    - identity
    - okta
    - adp
capability:
  exposes:
    - type: mcp
      namespace: offboarding-ops
      port: 8080
      tools:
        - name: deprovision-terminated-user
          description: "Given a terminated employee's ADP worker ID and Okta user ID, deactivate their Okta account, close any open ServiceNow access requests for them, and deactivate their Salesforce user license. Use immediately upon processing a termination in ADP."
          inputParameters:
            - name: adp_worker_id
              in: body
              type: string
              description: "ADP worker ID of the terminated employee."
            - name: okta_user_id
              in: body
              type: string
              description: "Okta user ID to deactivate."
            - name: salesforce_user_id
              in: body
              type: string
              description: "Salesforce user ID to deactivate."
          steps:
            - name: deactivate-okta
              type: call
              call: okta-deprov.deactivate-user
              with:
                user_id: "{{okta_user_id}}"
            - name: close-access-requests
              type: call
              call: servicenow-offboard.close-user-requests
              with:
                adp_worker_id: "{{adp_worker_id}}"
                state: "closed_complete"
            - name: deactivate-sf-user
              type: call
              call: salesforce-users.update-user
              with:
                user_id: "{{salesforce_user_id}}"
                is_active: "false"
  consumes:
    - type: http
      namespace: okta-deprov
      baseUri: "https://7eleven.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: user-lifecycle
          path: "/users/{{user_id}}/lifecycle/deactivate"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: deactivate-user
              method: POST
    - type: http
      namespace: servicenow-offboard
      baseUri: "https://7eleven.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: requests
          path: "/table/sc_request"
          inputParameters:
            - name: adp_worker_id
              in: query
          operations:
            - name: close-user-requests
              method: PATCH
    - type: http
      namespace: salesforce-users
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: users
          path: "/sobjects/User/{{user_id}}"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: update-user
              method: PATCH

Retrieves current headcount and payroll summary by store and district from ADP, for use in labor cost reporting.

naftiko: "0.5"
info:
  label: "Employee Payroll Headcount Snapshot"
  description: "Retrieves current headcount and payroll summary by store and district from ADP, for use in labor cost reporting."
  tags:
    - hr
    - payroll
    - reporting
    - adp
    - headcount
capability:
  exposes:
    - type: mcp
      namespace: hr-reporting
      port: 8080
      tools:
        - name: get-payroll-headcount
          description: "Returns headcount and payroll cost grouped by store and district from ADP. Use for weekly labor cost review or headcount planning meetings."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period end date in YYYY-MM-DD format."
          call: adp.get-workers-export
          with:
            as_of_date: "{{pay_period}}"
          outputParameters:
            - name: total_headcount
              type: string
              mapping: "$.totalCount"
            - name: workers
              type: array
              mapping: "$.rows"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: workers
          path: "/hr/v2/workers"
          inputParameters:
            - name: as_of_date
              in: query
          operations:
            - name: get-workers-export
              method: GET

Orchestrates employee promotion workflow for 7-Eleven across hr, workday, servicenow.

naftiko: "0.5"
info:
  label: "Employee Promotion Workflow"
  description: "Orchestrates employee promotion workflow for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Orchestrates energy monitoring pipeline for 7-Eleven across store-ops, snowflake, sap.

naftiko: "0.5"
info:
  label: "Energy Monitoring Pipeline"
  description: "Orchestrates energy monitoring pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven across store-ops, snowflake, sap.

naftiko: "0.5"
info:
  label: "Eod Reconciliation"
  description: "Orchestrates eod reconciliation for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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://7-eleven.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

Alerts on fountain drink inventory for 7-Eleven by checking SAP stock, creating ServiceNow replenishment tasks, and notifying stores via Teams.

naftiko: "0.5"
info:
  label: "Fountain Drink Inventory Alert"
  description: "Alerts on fountain drink inventory for 7-Eleven by checking SAP stock, creating ServiceNow replenishment tasks, and notifying stores via Teams."
  tags:
    - inventory
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: inventory-ops
      port: 8080
      tools:
        - name: fountain-drink-inventory-alert
          description: "Alerts on fountain drink inventory for 7-Eleven by checking SAP stock and creating tasks."
          inputParameters:
            - name: store_id
              type: string
              description: "Store identifier."
          steps:
            - name: check-stock
              type: call
              call: sap.get-stock
              with:
                plant: "{{store_id}}"
                category: "fountain_syrup"
            - name: create-task
              type: call
              call: servicenow.create-task
              with:
                short_description: "Fountain drink restock: Store {{store_id}}"
                assignment_group: "Store_Ops"
            - name: notify
              type: call
              call: msteams.send-message
              with:
                channel_id: "store-{{store_id}}-ops"
                text: "Fountain drink inventory low at Store {{store_id}}. Restock task created."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://7-eleven-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://7-eleven.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

Checks franchise compliance for 7-Eleven by pulling ServiceNow audit data, analyzing Snowflake metrics, and notifying district managers via Teams.

naftiko: "0.5"
info:
  label: "Franchise Compliance Checker"
  description: "Checks franchise compliance for 7-Eleven by pulling ServiceNow audit data, analyzing Snowflake metrics, and notifying district managers via Teams."
  tags:
    - compliance
    - servicenow
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: franchise-compliance-checker
          description: "Checks franchise compliance for 7-Eleven using ServiceNow audits and Snowflake metrics."
          inputParameters:
            - name: franchise_id
              type: string
              description: "Franchise identifier."
            - name: period
              type: string
              description: "Review period."
          steps:
            - name: get-audits
              type: call
              call: servicenow.get-tasks
              with:
                franchise: "{{franchise_id}}"
                category: "compliance"
            - name: get-metrics
              type: call
              call: snowflake.run-query
              with:
                statement: "SELECT compliance_score, violations FROM FRANCHISE_COMPLIANCE WHERE franchise_id='{{franchise_id}}' AND period='{{period}}'"
            - name: notify-dm
              type: call
              call: msteams.send-message
              with:
                channel_id: "district-managers"
                text: "Franchise compliance report for {{franchise_id}} ({{period}}) is ready."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://7-eleven.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://7-eleven.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

Pulls monthly KPI data from the analytics platform for each franchisee, updates their Salesforce account record, and emails the scorecard via Microsoft 365.

naftiko: "0.5"
info:
  label: "Franchise Performance Scorecard Sync"
  description: "Pulls monthly KPI data from the analytics platform for each franchisee, updates their Salesforce account record, and emails the scorecard via Microsoft 365."
  tags:
    - franchise
    - reporting
    - salesforce
    - analytics
    - performance
capability:
  exposes:
    - type: mcp
      namespace: franchise-reporting
      port: 8080
      tools:
        - name: sync-franchise-scorecard
          description: "Given a franchisee's store ID and Salesforce account ID, retrieve monthly KPI metrics from the analytics API, update the Salesforce account with performance scores, and send the scorecard email to the franchisee. Use at month end for performance reporting."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "7-Eleven store identifier."
            - name: salesforce_account_id
              in: body
              type: string
              description: "Salesforce account ID for the franchisee."
            - name: franchisee_email
              in: body
              type: string
              description: "Franchisee email address for scorecard delivery."
            - name: report_month
              in: body
              type: string
              description: "Reporting month in YYYY-MM format."
          steps:
            - name: get-kpis
              type: call
              call: analytics-platform.get-store-kpis
              with:
                store_id: "{{store_id}}"
                month: "{{report_month}}"
            - name: update-sf-account
              type: call
              call: salesforce-franchise.update-account
              with:
                account_id: "{{salesforce_account_id}}"
                monthly_sales: "{{get-kpis.total_sales}}"
                transaction_count: "{{get-kpis.transaction_count}}"
                shrinkage_rate: "{{get-kpis.shrinkage_rate}}"
            - name: send-scorecard
              type: call
              call: msgraph-mail.send-email
              with:
                to: "{{franchisee_email}}"
                subject: "Your 7-Eleven Franchise Scorecard — {{report_month}}"
                body: "Store {{store_id}} | Sales: {{get-kpis.total_sales}} | Transactions: {{get-kpis.transaction_count}} | Shrinkage: {{get-kpis.shrinkage_rate}}"
  consumes:
    - type: http
      namespace: analytics-platform
      baseUri: "https://api.7-eleven-analytics.com/v1"
      authentication:
        type: apikey
        key: "X-API-Key"
        value: "$secrets.pos_analytics_api_key"
        placement: header
      resources:
        - name: store-kpis
          path: "/stores/{{store_id}}/kpis"
          inputParameters:
            - name: store_id
              in: path
            - name: month
              in: query
          operations:
            - name: get-store-kpis
              method: GET
    - type: http
      namespace: salesforce-franchise
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: msgraph-mail
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: send-mail
          path: "/users/{{sender}}/sendMail"
          operations:
            - name: send-email
              method: POST

When a new franchisee is approved, provisions their Workday profile, creates a ServiceNow onboarding ticket, and sends a welcome packet via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Franchisee Onboarding Workflow"
  description: "When a new franchisee is approved, provisions their Workday profile, creates a ServiceNow onboarding ticket, and sends a welcome packet via Microsoft Teams."
  tags:
    - hr
    - onboarding
    - franchise
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: franchise-hr
      port: 8080
      tools:
        - name: trigger-franchisee-onboarding
          description: "Given a new franchisee's personal details and assigned store ID, create their Workday worker profile, open a ServiceNow onboarding task, and send a Teams welcome message. Use when a franchise agreement is signed and approved."
          inputParameters:
            - name: first_name
              in: body
              type: string
              description: "Franchisee's first name."
            - name: last_name
              in: body
              type: string
              description: "Franchisee's last name."
            - name: email
              in: body
              type: string
              description: "Franchisee's business email address."
            - name: store_id
              in: body
              type: string
              description: "Assigned store ID for the franchise location."
            - name: start_date
              in: body
              type: string
              description: "Franchise agreement start date in YYYY-MM-DD format."
          steps:
            - name: create-worker
              type: call
              call: workday.create-worker
              with:
                first_name: "{{first_name}}"
                last_name: "{{last_name}}"
                email: "{{email}}"
                worker_type: "Franchisee"
                start_date: "{{start_date}}"
            - name: create-ticket
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Franchisee onboarding: {{first_name}} {{last_name}} — Store {{store_id}}"
                category: "franchise_onboarding"
                assigned_to: "Franchise_Operations"
            - name: send-welcome
              type: call
              call: msteams.send-message
              with:
                recipient_upn: "{{email}}"
                text: "Welcome to the 7-Eleven franchise family, {{first_name}}! Your onboarding ticket is {{create-ticket.number}}. Store: {{store_id}}, Start: {{start_date}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers"
          operations:
            - name: create-worker
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://7eleven.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.msteams_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Updates fuel prices for 7-Eleven by pulling Snowflake market data, updating SAP pricing, and notifying franchisees via Teams.

naftiko: "0.5"
info:
  label: "Fuel Price Update Pipeline"
  description: "Updates fuel prices for 7-Eleven by pulling Snowflake market data, updating SAP pricing, and notifying franchisees via Teams."
  tags:
    - store-ops
    - snowflake
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: pricing-ops
      port: 8080
      tools:
        - name: fuel-price-update-pipeline
          description: "Updates fuel prices for 7-Eleven by pulling Snowflake market data and updating SAP pricing."
          inputParameters:
            - name: region
              type: string
              description: "Geographic region."
            - name: date
              type: string
              description: "Effective date."
          steps:
            - name: get-market-prices
              type: call
              call: snowflake.run-query
              with:
                statement: "SELECT grade, market_price, recommended_price FROM FUEL_MARKET_DATA WHERE region='{{region}}' AND date='{{date}}'"
            - name: update-sap-pricing
              type: call
              call: sap.update-fuel-price
              with:
                region: "{{region}}"
                effective_date: "{{date}}"
            - name: notify-franchisees
              type: call
              call: msteams.send-message
              with:
                channel_id: "fuel-operations-{{region}}"
                text: "Fuel price update for {{region}} effective {{date}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://7-eleven.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://7-eleven-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-fuel-price
              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 7-Eleven across e-commerce, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Gift Card Inquiry Handler"
  description: "Orchestrates gift card inquiry handler for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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://7-eleven.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

When a GitHub Actions workflow fails on a protected branch, opens a Jira bug, posts a Datadog deployment marker, and alerts the engineering Teams channel.

naftiko: "0.5"
info:
  label: "GitHub CI/CD Pipeline Failure Handler"
  description: "When a GitHub Actions workflow fails on a protected branch, opens a Jira bug, posts a Datadog deployment marker, and alerts the engineering Teams channel."
  tags:
    - devops
    - cicd
    - github
    - jira
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: devops-ops
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions failure event with repo, branch, and commit details, open a Jira bug, create a Datadog deployment marker, and post an alert to the engineering Teams channel. Use when a protected-branch workflow run fails."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository name, e.g. '7-eleven/pos-service'."
            - name: branch
              in: body
              type: string
              description: "Branch name where the failure occurred."
            - name: commit_sha
              in: body
              type: string
              description: "Commit SHA of the failing build."
            - name: workflow_name
              in: body
              type: string
              description: "Name of the GitHub Actions workflow that failed."
            - name: run_url
              in: body
              type: string
              description: "URL to the failed GitHub Actions run."
            - name: teams_channel_id
              in: body
              type: string
              description: "Teams engineering channel ID."
          steps:
            - name: create-bug
              type: call
              call: jira-eng.create-issue
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}"
                description: "Commit: {{commit_sha}}\nRun: {{run_url}}"
            - name: create-marker
              type: call
              call: datadog-deploy.create-event
              with:
                title: "CI Failure: {{repo}} — {{branch}}"
                text: "Commit {{commit_sha}} failed workflow {{workflow_name}}"
                alert_type: "error"
            - name: post-alert
              type: call
              call: msteams-eng.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "CI Failure: {{repo}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-bug.key}} | Run: {{run_url}}"
  consumes:
    - type: http
      namespace: jira-eng
      baseUri: "https://7eleven.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: datadog-deploy
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams-eng
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves GitHub repo info for 7-Eleven.

naftiko: "0.5"
info:
  label: "GitHub Repository Info"
  description: "Retrieves GitHub repo info for 7-Eleven."
  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

When GitHub Advanced Security detects a critical vulnerability in a store-system repository, opens a Jira security ticket, alerts the security team in Teams, and logs an event in Datadog.

naftiko: "0.5"
info:
  label: "GitHub Repository Security Scan Alert"
  description: "When GitHub Advanced Security detects a critical vulnerability in a store-system repository, opens a Jira security ticket, alerts the security team in Teams, and logs an event in Datadog."
  tags:
    - security
    - github
    - devops
    - jira
    - vulnerability
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: handle-security-alert
          description: "Given a GitHub security alert for a critical vulnerability, create a Jira security ticket with high priority, post an alert to the security Teams channel, and log the event in Datadog. Use when GitHub Advanced Security emits a critical alert on a store-system repo."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository where the vulnerability was found."
            - name: cve_id
              in: body
              type: string
              description: "CVE identifier for the vulnerability."
            - name: severity
              in: body
              type: string
              description: "Severity level: critical, high, medium, or low."
            - name: package_name
              in: body
              type: string
              description: "Affected package or library name."
            - name: teams_channel_id
              in: body
              type: string
              description: "Security team Teams channel ID."
          steps:
            - name: create-sec-ticket
              type: call
              call: jira-security.create-issue
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "[Security] {{severity}} vulnerability in {{repo}} — {{cve_id}}"
                description: "Package: {{package_name}} | CVE: {{cve_id}} | Severity: {{severity}}"
                priority: "Highest"
            - name: log-event
              type: call
              call: datadog-sec.create-event
              with:
                title: "Security alert: {{cve_id}} in {{repo}}"
                text: "Package {{package_name}} | Severity: {{severity}} | Jira: {{create-sec-ticket.key}}"
                alert_type: "error"
            - name: alert-security-team
              type: call
              call: msteams-sec.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "SECURITY ALERT: {{severity}} vulnerability {{cve_id}} in {{repo}} / {{package_name}} | Jira: {{create-sec-ticket.key}} | Datadog: {{log-event.url}}"
  consumes:
    - type: http
      namespace: jira-security
      baseUri: "https://7eleven.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - 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: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams-sec
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks workflow for 7-Eleven.

naftiko: "0.5"
info:
  label: "GitHub Workflow Status"
  description: "Checks workflow for 7-Eleven."
  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

Schedules hot food production for 7-Eleven by pulling Snowflake demand forecasts, checking SAP ingredient supply, and notifying stores via Teams.

naftiko: "0.5"
info:
  label: "Hot Food Production Scheduler"
  description: "Schedules hot food production for 7-Eleven by pulling Snowflake demand forecasts, checking SAP ingredient supply, and notifying stores via Teams."
  tags:
    - store-ops
    - snowflake
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-ops
      port: 8080
      tools:
        - name: hot-food-production-scheduler
          description: "Schedules hot food production for 7-Eleven using Snowflake demand forecasts and SAP inventory."
          inputParameters:
            - name: store_id
              type: string
              description: "Store identifier."
            - name: date
              type: string
              description: "Production date."
          steps:
            - name: get-forecast
              type: call
              call: snowflake.run-query
              with:
                statement: "SELECT item, projected_qty FROM HOT_FOOD_DEMAND WHERE store='{{store_id}}' AND date='{{date}}'"
            - name: check-supplies
              type: call
              call: sap.get-stock
              with:
                plant: "{{store_id}}"
                category: "hot_food"
            - name: notify-store
              type: call
              call: msteams.send-message
              with:
                channel_id: "store-{{store_id}}-food"
                text: "Hot food production schedule for {{date}} is ready."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://7-eleven.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://7-eleven-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 inventory audit pipeline for 7-Eleven across inventory, sap, snowflake.

naftiko: "0.5"
info:
  label: "Inventory Audit Pipeline"
  description: "Orchestrates inventory audit pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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://7-eleven.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 7-Eleven across infrastructure, datadog, servicenow.

naftiko: "0.5"
info:
  label: "It Incident Escalation"
  description: "Orchestrates it incident escalation for 7-Eleven 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 7-Eleven 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://7-eleven.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

When a POS system outage alert fires in Datadog, opens a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts to the IT war-room Teams channel.

naftiko: "0.5"
info:
  label: "IT Incident Response Triage"
  description: "When a POS system outage alert fires in Datadog, opens a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts to the IT war-room Teams channel."
  tags:
    - itsm
    - incident-response
    - datadog
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: it-ops
      port: 8080
      tools:
        - name: handle-pos-outage
          description: "Given a Datadog alert for a POS outage, open a P1 ServiceNow incident, trigger a PagerDuty page to the on-call engineer, and post an alert to the IT Teams war-room channel. Use when automated monitoring detects a store POS system going offline."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "Datadog monitor alert ID."
            - name: store_id
              in: body
              type: string
              description: "Affected store identifier."
            - name: alert_message
              in: body
              type: string
              description: "Human-readable description of the alert condition."
            - name: teams_channel_id
              in: body
              type: string
              description: "Teams war-room channel ID for IT incident coordination."
          steps:
            - name: create-incident
              type: call
              call: servicenow-it.create-incident
              with:
                short_description: "POS outage — Store {{store_id}}"
                description: "Datadog alert {{alert_id}}: {{alert_message}}"
                priority: "1"
                category: "POS_System"
            - name: page-oncall
              type: call
              call: pagerduty.trigger-incident
              with:
                title: "P1 POS Outage — Store {{store_id}}"
                severity: "critical"
                details: "ServiceNow INC: {{create-incident.number}} | Alert: {{alert_id}}"
            - name: post-warroom
              type: call
              call: msteams-it.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "P1 INCIDENT: POS outage at store {{store_id}} | INC: {{create-incident.number}} | PagerDuty: {{page-oncall.incident_key}} | Alert: {{alert_message}}"
  consumes:
    - type: http
      namespace: servicenow-it
      baseUri: "https://7eleven.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: pagerduty
      baseUri: "https://events.pagerduty.com/v2"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: enqueue
          path: "/enqueue"
          operations:
            - name: trigger-incident
              method: POST
    - type: http
      namespace: msteams-it
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

At the end of each sprint, fetches velocity metrics from Jira, publishes a summary to Power BI, and posts a sprint retrospective digest to the engineering Teams channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "At the end of each sprint, fetches velocity metrics from Jira, publishes a summary to Power BI, and posts a sprint retrospective digest to the engineering Teams channel."
  tags:
    - devops
    - jira
    - agile
    - reporting
    - engineering
capability:
  exposes:
    - type: mcp
      namespace: agile-reporting
      port: 8080
      tools:
        - name: publish-sprint-velocity
          description: "Given a Jira board ID and sprint ID, retrieve completed story points and velocity metrics, push a refresh to the Power BI agile dashboard, and post a sprint summary to the engineering Teams channel. Use at sprint close."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "Jira software board ID."
            - name: sprint_id
              in: body
              type: string
              description: "Completed sprint ID."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for the agile velocity dashboard."
            - name: teams_channel_id
              in: body
              type: string
              description: "Engineering Teams channel ID."
          steps:
            - name: get-sprint-metrics
              type: call
              call: jira-agile.get-sprint-report
              with:
                board_id: "{{board_id}}"
                sprint_id: "{{sprint_id}}"
            - name: refresh-pbi-agile
              type: call
              call: powerbi-agile.trigger-refresh
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: post-sprint-summary
              type: call
              call: msteams-agile.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Sprint {{sprint_id}} closed. Velocity: {{get-sprint-metrics.completed_points}} pts | Completion rate: {{get-sprint-metrics.completion_rate}}% | Dashboard refreshed."
  consumes:
    - type: http
      namespace: jira-agile
      baseUri: "https://7eleven.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: sprint-report
          path: "/board/{{board_id}}/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-report
              method: GET
    - type: http
      namespace: powerbi-agile
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams-agile
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates labor schedule optimizer for 7-Eleven across store-ops, snowflake, workday.

naftiko: "0.5"
info:
  label: "Labor Schedule Optimizer"
  description: "Orchestrates labor schedule optimizer for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Monitors lottery terminal health for 7-Eleven by checking Datadog device status, creating ServiceNow tickets, and notifying store ops via Teams.

naftiko: "0.5"
info:
  label: "Lottery Terminal Health Monitor"
  description: "Monitors lottery terminal health for 7-Eleven by checking Datadog device status, creating ServiceNow tickets, and notifying store ops via Teams."
  tags:
    - store-ops
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-ops
      port: 8080
      tools:
        - name: lottery-terminal-health-monitor
          description: "Monitors lottery terminal health for 7-Eleven using Datadog device monitoring."
          inputParameters:
            - name: store_id
              type: string
              description: "Store identifier."
          steps:
            - name: check-terminal
              type: call
              call: datadog.get-monitor
              with:
                monitor_id: "lottery-terminal-{{store_id}}"
            - name: create-ticket
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Lottery terminal issue: Store {{store_id}}"
                category: "store-ops"
                assignment_group: "Store_IT"
            - name: notify-ops
              type: call
              call: msteams.send-message
              with:
                channel_id: "store-{{store_id}}-ops"
                text: "Lottery terminal at Store {{store_id}}: {{check-terminal.overall_state}}. Ticket: {{create-ticket.number}}"
  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: servicenow
      baseUri: "https://7-eleven.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 loyalty enrollment pipeline for 7-Eleven across loyalty, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Loyalty Enrollment Pipeline"
  description: "Orchestrates loyalty enrollment pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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

Processes a customer-requested loyalty points correction in Salesforce, logs the adjustment in the audit trail, and confirms via email to the customer.

naftiko: "0.5"
info:
  label: "Loyalty Points Adjustment"
  description: "Processes a customer-requested loyalty points correction in Salesforce, logs the adjustment in the audit trail, and confirms via email to the customer."
  tags:
    - loyalty
    - customer-service
    - salesforce
    - crm
    - retail
capability:
  exposes:
    - type: mcp
      namespace: loyalty-ops
      port: 8080
      tools:
        - name: adjust-loyalty-points
          description: "Given a member ID, adjustment amount, and reason, update the Salesforce loyalty record with the corrected points balance and send a confirmation email to the customer. Use when customer service agents process a points correction request."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "7-Eleven Rewards member ID."
            - name: adjustment_points
              in: body
              type: integer
              description: "Points to add (positive) or deduct (negative)."
            - name: reason
              in: body
              type: string
              description: "Reason for the adjustment, e.g. 'missed transaction credit'."
            - name: customer_email
              in: body
              type: string
              description: "Customer email for confirmation."
          steps:
            - name: update-points
              type: call
              call: salesforce-loyalty.update-record
              with:
                member_id: "{{member_id}}"
                adjustment: "{{adjustment_points}}"
                reason: "{{reason}}"
            - name: send-confirmation
              type: call
              call: msgraph-loyalty.send-email
              with:
                to: "{{customer_email}}"
                subject: "7-Eleven Rewards — Points Adjustment Confirmation"
                body: "Your account has been updated with {{adjustment_points}} points. New balance: {{update-points.new_balance}}. Reason: {{reason}}"
  consumes:
    - type: http
      namespace: salesforce-loyalty
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: loyalty-records
          path: "/sobjects/Loyalty_Member__c/{{member_id}}"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: update-record
              method: PATCH
    - type: http
      namespace: msgraph-loyalty
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/users/{{sender}}/sendMail"
          operations:
            - name: send-email
              method: POST

Orchestrates loyalty points reconciliation for 7-Eleven across loyalty, salesforce, snowflake.

naftiko: "0.5"
info:
  label: "Loyalty Points Reconciliation"
  description: "Orchestrates loyalty points reconciliation for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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://7-eleven.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

Looks up a 7-Eleven Rewards member profile by phone number or member ID, returning points balance, tier status, and recent transactions.

naftiko: "0.5"
info:
  label: "Loyalty Program Member Lookup"
  description: "Looks up a 7-Eleven Rewards member profile by phone number or member ID, returning points balance, tier status, and recent transactions."
  tags:
    - retail
    - loyalty
    - crm
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-loyalty-member
          description: "Given a phone number or member ID, retrieve the 7-Eleven Rewards member profile including points balance, tier, and last 5 transactions. Use when a customer contacts support about their rewards account."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The 7-Eleven Rewards member ID or registered phone number."
          call: salesforce.get-contact
          with:
            external_id: "{{member_id}}"
          outputParameters:
            - name: member_name
              type: string
              mapping: "$.records[0].Name"
            - name: points_balance
              type: string
              mapping: "$.records[0].Loyalty_Points__c"
            - name: tier
              type: string
              mapping: "$.records[0].Loyalty_Tier__c"
            - name: email
              type: string
              mapping: "$.records[0].Email"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/query"
          inputParameters:
            - name: external_id
              in: query
          operations:
            - name: get-contact
              method: GET

Orchestrates maintenance request workflow for 7-Eleven across store-ops, servicenow, sap.

naftiko: "0.5"
info:
  label: "Maintenance Request Workflow"
  description: "Orchestrates maintenance request workflow for 7-Eleven 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 7-Eleven 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://7-eleven-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://7-eleven.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 7-Eleven across e-commerce, snowflake, sap.

naftiko: "0.5"
info:
  label: "Markdown Optimization Pipeline"
  description: "Orchestrates markdown optimization pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven across marketing, snowflake, salesforce.

naftiko: "0.5"
info:
  label: "Marketing Roi Tracker"
  description: "Orchestrates marketing roi tracker for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 new product is introduced, creates promotional pricing in the SAP pricing engine, sets up a campaign in Salesforce Marketing Cloud, and publishes a social post via the content scheduler.

naftiko: "0.5"
info:
  label: "New Product Launch Promotion Setup"
  description: "When a new product is introduced, creates promotional pricing in the SAP pricing engine, sets up a campaign in Salesforce Marketing Cloud, and publishes a social post via the content scheduler."
  tags:
    - marketing
    - retail
    - promotion
    - salesforce
    - campaign
capability:
  exposes:
    - type: mcp
      namespace: marketing-ops
      port: 8080
      tools:
        - name: setup-product-launch
          description: "Given a new product SKU, promotional price, and campaign details, configure pricing in SAP, create a Salesforce Marketing Cloud campaign, and schedule a social media post. Use when the merchandising team launches a new product promotion."
          inputParameters:
            - name: sku
              in: body
              type: string
              description: "Product SKU for the new launch."
            - name: promo_price
              in: body
              type: string
              description: "Promotional price in USD, e.g. '2.49'."
            - name: campaign_name
              in: body
              type: string
              description: "Name of the marketing campaign."
            - name: launch_date
              in: body
              type: string
              description: "Campaign launch date in YYYY-MM-DD format."
            - name: social_copy
              in: body
              type: string
              description: "Copy text for the social media post."
          steps:
            - name: set-pricing
              type: call
              call: sap-pricing.create-condition
              with:
                material: "{{sku}}"
                price: "{{promo_price}}"
                valid_from: "{{launch_date}}"
            - name: create-campaign
              type: call
              call: sfmc.create-campaign
              with:
                name: "{{campaign_name}}"
                start_date: "{{launch_date}}"
                sku_tag: "{{sku}}"
            - name: schedule-social
              type: call
              call: sprinklr.schedule-post
              with:
                text: "{{social_copy}}"
                publish_date: "{{launch_date}}"
                campaign_id: "{{create-campaign.id}}"
  consumes:
    - type: http
      namespace: sap-pricing
      baseUri: "https://7eleven-s4.sap.com/sap/opu/odata/sap/SD_SLS_CONDITIONRECORD_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: conditions
          path: "/A_SlsPricingConditionRecord"
          operations:
            - name: create-condition
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://api.salesforce.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: sprinklr
      baseUri: "https://api2.sprinklr.com/api/v2"
      authentication:
        type: apikey
        key: "key"
        value: "$secrets.sprinklr_api_key"
        placement: query
      resources:
        - name: posts
          path: "/publishing/post"
          operations:
            - name: schedule-post
              method: POST

Orchestrates offboarding pipeline for 7-Eleven across hr, workday, servicenow.

naftiko: "0.5"
info:
  label: "Offboarding Pipeline"
  description: "Orchestrates offboarding pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Retrieves Okta group membership for a privileged access group, generates an access review report in Power BI, and sends the review to the security team for certification.

naftiko: "0.5"
info:
  label: "Okta Group Access Review"
  description: "Retrieves Okta group membership for a privileged access group, generates an access review report in Power BI, and sends the review to the security team for certification."
  tags:
    - identity
    - security
    - okta
    - access-review
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: access-review
      port: 8080
      tools:
        - name: run-group-access-review
          description: "Given an Okta group ID, retrieve the current membership list, trigger a Power BI report refresh, and email the access review to the security team for certification. Use quarterly for privileged access reviews."
          inputParameters:
            - name: okta_group_id
              in: body
              type: string
              description: "Okta group ID to review."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for access review reports."
            - name: security_team_email
              in: body
              type: string
              description: "Security team email distribution list."
          steps:
            - name: get-group-members
              type: call
              call: okta-review.get-group-members
              with:
                group_id: "{{okta_group_id}}"
            - name: refresh-access-pbi
              type: call
              call: powerbi-access.trigger-refresh
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: send-review-email
              type: call
              call: msgraph-review.send-email
              with:
                to: "{{security_team_email}}"
                subject: "Quarterly Access Review — Okta Group {{okta_group_id}}"
                body: "Group {{okta_group_id}} has {{get-group-members.total_count}} members. Review in Power BI and certify or revoke as needed."
  consumes:
    - type: http
      namespace: okta-review
      baseUri: "https://7eleven.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: group-members
          path: "/groups/{{group_id}}/users"
          inputParameters:
            - name: group_id
              in: path
          operations:
            - name: get-group-members
              method: GET
    - type: http
      namespace: powerbi-access
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msgraph-review
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/users/{{sender}}/sendMail"
          operations:
            - name: send-email
              method: POST

When a new store employee is created in ADP, provisions their Okta account, assigns the POS application, and sends login credentials via email.

naftiko: "0.5"
info:
  label: "Okta User Provisioning for New Store Staff"
  description: "When a new store employee is created in ADP, provisions their Okta account, assigns the POS application, and sends login credentials via email."
  tags:
    - identity
    - hr
    - okta
    - adp
    - provisioning
capability:
  exposes:
    - type: mcp
      namespace: identity-ops
      port: 8080
      tools:
        - name: provision-store-user
          description: "Given a new employee's ADP worker ID, create their Okta user account, assign the POS and store management applications, and send a welcome email with login instructions. Use when new store staff are added in ADP."
          inputParameters:
            - name: adp_worker_id
              in: body
              type: string
              description: "ADP worker ID for the new employee."
            - name: store_id
              in: body
              type: string
              description: "Store ID the employee is assigned to."
          steps:
            - name: get-worker
              type: call
              call: adp-hr.get-worker
              with:
                worker_id: "{{adp_worker_id}}"
            - name: create-okta-user
              type: call
              call: okta.create-user
              with:
                firstName: "{{get-worker.firstName}}"
                lastName: "{{get-worker.lastName}}"
                email: "{{get-worker.businessEmail}}"
                login: "{{get-worker.businessEmail}}"
            - name: assign-pos-app
              type: call
              call: okta-apps.assign-user-to-app
              with:
                app_id: "$secrets.okta_pos_app_id"
                user_id: "{{create-okta-user.id}}"
  consumes:
    - type: http
      namespace: adp-hr
      baseUri: "https://api.adp.com"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: workers
          path: "/hr/v2/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta
      baseUri: "https://7eleven.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: okta-apps
      baseUri: "https://7eleven.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: app-users
          path: "/apps/{{app_id}}/users"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: assign-user-to-app
              method: POST

Orchestrates payment processing pipeline for 7-Eleven across procurement, sap, snowflake.

naftiko: "0.5"
info:
  label: "Payment Processing Pipeline"
  description: "Orchestrates payment processing pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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://7-eleven.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

Triggers Power BI refresh for 7-Eleven.

naftiko: "0.5"
info:
  label: "Power BI Refresh"
  description: "Triggers Power BI refresh for 7-Eleven."
  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 store sales dashboard and posts a notification to the analytics Teams channel when complete.

naftiko: "0.5"
info:
  label: "Power BI Sales Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for the store sales dashboard and posts a notification to the analytics Teams channel when complete."
  tags:
    - analytics
    - power-bi
    - reporting
    - retail
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-sales-dashboard
          description: "Trigger a Power BI dataset refresh for the store sales dashboard and notify the analytics team in Teams when the refresh completes. Use each morning or after a major data load to ensure dashboards reflect current data."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for the sales dashboard."
            - name: teams_channel_id
              in: body
              type: string
              description: "Teams analytics channel ID for completion notification."
          steps:
            - name: trigger-refresh
              type: call
              call: powerbi-dash.trigger-refresh
              with:
                dataset_id: "{{dataset_id}}"
            - name: notify-team
              type: call
              call: msteams-analytics.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Power BI sales dashboard refresh triggered for dataset {{dataset_id}}. Refresh ID: {{trigger-refresh.refreshId}}"
  consumes:
    - type: http
      namespace: powerbi-dash
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams-analytics
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates price change pipeline for 7-Eleven across e-commerce, sap, snowflake.

naftiko: "0.5"
info:
  label: "Price Change Pipeline"
  description: "Orchestrates price change pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven across analytics, snowflake, salesforce.

naftiko: "0.5"
info:
  label: "Qbr Report Generator"
  description: "Orchestrates qbr report generator for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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 7-Eleven across inventory, sap, snowflake.

naftiko: "0.5"
info:
  label: "Recall Response Pipeline"
  description: "Orchestrates recall response pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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://7-eleven.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 7-Eleven across store-ops, sap, servicenow.

naftiko: "0.5"
info:
  label: "Remodel Coordination"
  description: "Orchestrates remodel coordination for 7-Eleven 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 7-Eleven 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://7-eleven-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://7-eleven.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 7-Eleven.

naftiko: "0.5"
info:
  label: "Salesforce Case Status Lookup"
  description: "Looks up a Salesforce case by ID for 7-Eleven."
  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://7-eleven.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 7-Eleven.

naftiko: "0.5"
info:
  label: "Salesforce Contact Search"
  description: "Searches contacts for 7-Eleven."
  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://7-eleven.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

Checks SAP material availability for 7-Eleven.

naftiko: "0.5"
info:
  label: "SAP Material Availability"
  description: "Checks SAP material availability for 7-Eleven."
  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://7-eleven-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

Triggers the month-end financial period close sequence in SAP, validates journal postings, and notifies the finance team upon successful close.

naftiko: "0.5"
info:
  label: "SAP Period Close Checklist Automation"
  description: "Triggers the month-end financial period close sequence in SAP, validates journal postings, and notifies the finance team upon successful close."
  tags:
    - finance
    - erp
    - period-close
    - sap
    - accounting
capability:
  exposes:
    - type: mcp
      namespace: finance-close
      port: 8080
      tools:
        - name: trigger-period-close
          description: "Given a fiscal period and company code, trigger the SAP period close sequence and validate that all required journal entries are posted. Send a completion notification to the finance Teams channel. Use at month end to kick off the financial close process."
          inputParameters:
            - name: fiscal_period
              in: body
              type: string
              description: "Fiscal period in YYYYPP format, e.g. '202603'."
            - name: company_code
              in: body
              type: string
              description: "SAP company code, e.g. '7ELV'."
            - name: teams_channel_id
              in: body
              type: string
              description: "Finance Teams channel ID for close notification."
          steps:
            - name: close-period
              type: call
              call: sap-fi.close-period
              with:
                fiscal_period: "{{fiscal_period}}"
                company_code: "{{company_code}}"
            - name: validate-postings
              type: call
              call: sap-fi-validate.check-journal-completeness
              with:
                fiscal_period: "{{fiscal_period}}"
                company_code: "{{company_code}}"
            - name: notify-finance
              type: call
              call: msteams-finance.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Period {{fiscal_period}} close complete for company {{company_code}}. Journal validation status: {{validate-postings.status}}. Outstanding items: {{validate-postings.open_items}}"
  consumes:
    - type: http
      namespace: sap-fi
      baseUri: "https://7eleven-s4.sap.com/sap/opu/odata/sap/FAR_PERIOD_CLOSE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: period-close
          path: "/PeriodClose"
          operations:
            - name: close-period
              method: POST
    - type: http
      namespace: sap-fi-validate
      baseUri: "https://7eleven-s4.sap.com/sap/opu/odata/sap/FAR_JOURNAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: journal-validation
          path: "/JournalEntryCompleteness"
          inputParameters:
            - name: fiscal_period
              in: query
            - name: company_code
              in: query
          operations:
            - name: check-journal-completeness
              method: GET
    - type: http
      namespace: msteams-finance
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Gets PO items for 7-Eleven.

naftiko: "0.5"
info:
  label: "SAP PO Items"
  description: "Gets PO items for 7-Eleven."
  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://7-eleven-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

Looks up SAP vendor for 7-Eleven.

naftiko: "0.5"
info:
  label: "SAP Vendor Lookup"
  description: "Looks up SAP vendor for 7-Eleven."
  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://7-eleven-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 7-Eleven across e-commerce, sap, snowflake.

naftiko: "0.5"
info:
  label: "Seasonal Promotion Setup"
  description: "Orchestrates seasonal promotion setup for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 security incident handler for 7-Eleven across security, servicenow, datadog.

naftiko: "0.5"
info:
  label: "Security Incident Handler"
  description: "Orchestrates security incident handler for 7-Eleven 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 7-Eleven 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://7-eleven.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

Checks change request for 7-Eleven.

naftiko: "0.5"
info:
  label: "ServiceNow Change Status"
  description: "Checks change request for 7-Eleven."
  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://7-eleven.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 7-Eleven.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Detail"
  description: "Retrieves ServiceNow incident details for 7-Eleven."
  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://7-eleven.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 7-Eleven across supply-chain, sap, snowflake.

naftiko: "0.5"
info:
  label: "Shipment Tracking Pipeline"
  description: "Orchestrates shipment tracking pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven across store-ops, snowflake, servicenow.

naftiko: "0.5"
info:
  label: "Shrinkage Investigation"
  description: "Orchestrates shrinkage investigation for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven.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

When store staff report a loss event, records the incident in ServiceNow, updates the store's Salesforce loss prevention account field, and notifies the LP team.

naftiko: "0.5"
info:
  label: "Shrinkage Loss Event Recording"
  description: "When store staff report a loss event, records the incident in ServiceNow, updates the store's Salesforce loss prevention account field, and notifies the LP team."
  tags:
    - loss-prevention
    - retail
    - servicenow
    - salesforce
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: loss-prevention
      port: 8080
      tools:
        - name: record-loss-event
          description: "Given a store ID, loss amount, and event description, log the loss incident in ServiceNow, update the Salesforce account shrinkage YTD field, and send a Teams notification to the regional LP manager. Use when store staff report a theft, damage, or shrinkage event."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "Store identifier where the loss event occurred."
            - name: loss_amount_usd
              in: body
              type: number
              description: "Estimated dollar value of the loss."
            - name: event_description
              in: body
              type: string
              description: "Description of the loss event."
            - name: salesforce_account_id
              in: body
              type: string
              description: "Salesforce account ID for the store."
            - name: lp_manager_upn
              in: body
              type: string
              description: "UPN of the regional loss prevention manager."
          steps:
            - name: log-incident
              type: call
              call: servicenow-lp.create-incident
              with:
                short_description: "Loss event — Store {{store_id}} — ${{loss_amount_usd}}"
                description: "{{event_description}}"
                category: "Loss_Prevention"
            - name: update-sf-lp
              type: call
              call: salesforce-lp.update-account
              with:
                account_id: "{{salesforce_account_id}}"
                loss_event_ytd_delta: "{{loss_amount_usd}}"
                last_loss_incident: "{{log-incident.number}}"
            - name: notify-lp-manager
              type: call
              call: msteams-lp.send-message
              with:
                recipient_upn: "{{lp_manager_upn}}"
                text: "Loss event at store {{store_id}}: ${{loss_amount_usd}}. INC: {{log-incident.number}}. Description: {{event_description}}"
  consumes:
    - type: http
      namespace: servicenow-lp
      baseUri: "https://7eleven.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: salesforce-lp
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: msteams-lp
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates site incident response for 7-Eleven across e-commerce, datadog, servicenow.

naftiko: "0.5"
info:
  label: "Site Incident Response"
  description: "Orchestrates site incident response for 7-Eleven 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 7-Eleven 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://7-eleven.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 the loyalty platform for Slurpee promotion redemption rates by region, refreshes the Power BI marketing dashboard, and emails a summary to the marketing team.

naftiko: "0.5"
info:
  label: "Slurpee Promotion Redemption Analytics"
  description: "Queries the loyalty platform for Slurpee promotion redemption rates by region, refreshes the Power BI marketing dashboard, and emails a summary to the marketing team."
  tags:
    - marketing
    - analytics
    - loyalty
    - power-bi
    - retail
capability:
  exposes:
    - type: mcp
      namespace: promo-analytics
      port: 8080
      tools:
        - name: digest-promotion-redemptions
          description: "Given a promotion ID and date range, fetch redemption counts by region from the loyalty analytics API, trigger a Power BI dashboard refresh, and email a summary to the marketing team. Use to evaluate promotion performance."
          inputParameters:
            - name: promotion_id
              in: body
              type: string
              description: "Promotion identifier in the loyalty platform."
            - name: start_date
              in: body
              type: string
              description: "Start date for the redemption window in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date for the redemption window in YYYY-MM-DD format."
            - name: marketing_email
              in: body
              type: string
              description: "Marketing team distribution list email."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for the marketing dashboard."
          steps:
            - name: get-redemptions
              type: call
              call: loyalty-analytics.get-redemptions
              with:
                promotion_id: "{{promotion_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: refresh-pbi-mkt
              type: call
              call: powerbi-mkt.trigger-refresh
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: send-summary
              type: call
              call: msgraph-mkt.send-email
              with:
                to: "{{marketing_email}}"
                subject: "Promotion {{promotion_id}} Redemption Summary {{start_date}} to {{end_date}}"
                body: "Total redemptions: {{get-redemptions.total_count}} | Top region: {{get-redemptions.top_region}} | Dashboard refreshed."
  consumes:
    - type: http
      namespace: loyalty-analytics
      baseUri: "https://api.7-eleven-analytics.com/v1"
      authentication:
        type: apikey
        key: "X-API-Key"
        value: "$secrets.pos_analytics_api_key"
        placement: header
      resources:
        - name: redemptions
          path: "/promotions/{{promotion_id}}/redemptions"
          inputParameters:
            - name: promotion_id
              in: path
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-redemptions
              method: GET
    - type: http
      namespace: powerbi-mkt
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msgraph-mkt
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/users/{{sender}}/sendMail"
          operations:
            - name: send-email
              method: POST

Queries customer segments for 7-Eleven.

naftiko: "0.5"
info:
  label: "Snowflake Customer Segments"
  description: "Queries customer segments for 7-Eleven."
  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://7-eleven.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Checks the status of Snowflake data pipelines, reports any failed tasks to Datadog, and creates a Jira ticket if a pipeline has been failing for more than one cycle.

naftiko: "0.5"
info:
  label: "Snowflake Data Pipeline Health Check"
  description: "Checks the status of Snowflake data pipelines, reports any failed tasks to Datadog, and creates a Jira ticket if a pipeline has been failing for more than one cycle."
  tags:
    - data
    - snowflake
    - datadog
    - monitoring
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-ops
      port: 8080
      tools:
        - name: check-pipeline-health
          description: "Query Snowflake task history for failed runs, log each failure as a Datadog event, and open a Jira ticket if any pipeline has failed more than once consecutively. Use for daily data pipeline health monitoring."
          inputParameters:
            - name: lookback_hours
              in: body
              type: integer
              description: "Number of hours of task history to examine."
            - name: jira_project_key
              in: body
              type: string
              description: "Jira project key for data engineering tickets."
          steps:
            - name: get-failed-tasks
              type: call
              call: snowflake.query-task-history
              with:
                lookback_hours: "{{lookback_hours}}"
                state: "FAILED"
            - name: log-failures
              type: call
              call: datadog-data.create-event
              with:
                title: "Snowflake pipeline failures detected"
                text: "Failed tasks: {{get-failed-tasks.task_names}}"
                alert_type: "error"
            - name: create-jira-ticket
              type: call
              call: jira-data.create-issue
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Bug"
                summary: "Snowflake pipeline failures — {{get-failed-tasks.task_count}} tasks"
                description: "Failed tasks: {{get-failed-tasks.task_names}} | Datadog: {{log-failures.url}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://7eleven.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: task-history
          path: "/databases/ANALYTICS/schemas/PUBLIC/tasks/history"
          inputParameters:
            - name: lookback_hours
              in: query
            - name: state
              in: query
          operations:
            - name: query-task-history
              method: GET
    - type: http
      namespace: datadog-data
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira-data
      baseUri: "https://7eleven.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Queries inventory for 7-Eleven.

naftiko: "0.5"
info:
  label: "Snowflake Inventory Query"
  description: "Queries inventory for 7-Eleven."
  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://7-eleven.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 7-Eleven.

naftiko: "0.5"
info:
  label: "Snowflake Promo Performance"
  description: "Queries promo data for 7-Eleven."
  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://7-eleven.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake sales data for 7-Eleven.

naftiko: "0.5"
info:
  label: "Snowflake Sales Query"
  description: "Queries Snowflake sales data for 7-Eleven."
  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://7-eleven.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Orchestrates staffing gap alerts for 7-Eleven across store-ops, workday, snowflake.

naftiko: "0.5"
info:
  label: "Staffing Gap Alerts"
  description: "Orchestrates staffing gap alerts for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

When a compliance audit is completed for a store, records results in ServiceNow, updates the store's Salesforce account record, and notifies the regional director via Teams.

naftiko: "0.5"
info:
  label: "Store Compliance Audit Tracker"
  description: "When a compliance audit is completed for a store, records results in ServiceNow, updates the store's Salesforce account record, and notifies the regional director via Teams."
  tags:
    - compliance
    - retail
    - servicenow
    - salesforce
    - audit
capability:
  exposes:
    - type: mcp
      namespace: compliance-ops
      port: 8080
      tools:
        - name: record-audit-results
          description: "Given a store ID, audit score, and findings summary, log the audit results in ServiceNow, update the store's Salesforce account with the new compliance score, and send a summary to the regional director in Teams. Use after completing a store compliance inspection."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "7-Eleven store identifier."
            - name: audit_score
              in: body
              type: number
              description: "Compliance audit score from 0–100."
            - name: findings
              in: body
              type: string
              description: "Summary of audit findings."
            - name: salesforce_account_id
              in: body
              type: string
              description: "Salesforce account ID for the store."
            - name: director_upn
              in: body
              type: string
              description: "UPN of the regional director to notify."
          steps:
            - name: log-audit
              type: call
              call: servicenow-compliance.create-record
              with:
                table: "u_store_audit"
                store_id: "{{store_id}}"
                score: "{{audit_score}}"
                findings: "{{findings}}"
            - name: update-account
              type: call
              call: salesforce-stores.update-account
              with:
                account_id: "{{salesforce_account_id}}"
                compliance_score: "{{audit_score}}"
                last_audit_findings: "{{findings}}"
            - name: notify-director
              type: call
              call: msteams-compliance.send-message
              with:
                recipient_upn: "{{director_upn}}"
                text: "Audit complete for store {{store_id}}. Score: {{audit_score}}/100. Findings: {{findings}}. ServiceNow record: {{log-audit.sys_id}}"
  consumes:
    - type: http
      namespace: servicenow-compliance
      baseUri: "https://7eleven.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: custom-records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: salesforce-stores
      baseUri: "https://7eleven.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: msteams-compliance
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Syncs approved labor schedules from the workforce management system to ADP for payroll processing and posts the schedule summary to the store manager in Teams.

naftiko: "0.5"
info:
  label: "Store Headcount Labor Scheduling Sync"
  description: "Syncs approved labor schedules from the workforce management system to ADP for payroll processing and posts the schedule summary to the store manager in Teams."
  tags:
    - hr
    - workforce-management
    - adp
    - scheduling
    - retail
capability:
  exposes:
    - type: mcp
      namespace: workforce-ops
      port: 8080
      tools:
        - name: sync-labor-schedule
          description: "Given a store ID and schedule week, retrieve the approved labor schedule from the WFM system and push it to ADP for payroll alignment. Notify the store manager in Teams upon successful sync. Use weekly before payroll cutoff."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "Store identifier."
            - name: week_start
              in: body
              type: string
              description: "Week start date in YYYY-MM-DD format."
            - name: manager_upn
              in: body
              type: string
              description: "Store manager Teams UPN for notification."
          steps:
            - name: get-schedule
              type: call
              call: wfm.get-approved-schedule
              with:
                store_id: "{{store_id}}"
                week_start: "{{week_start}}"
            - name: push-to-adp
              type: call
              call: adp-scheduling.submit-schedule
              with:
                store_id: "{{store_id}}"
                schedule_data: "{{get-schedule.schedule_json}}"
            - name: notify-manager
              type: call
              call: msteams-wfm.send-message
              with:
                recipient_upn: "{{manager_upn}}"
                text: "Labor schedule for store {{store_id}} week of {{week_start}} synced to ADP. Total hours: {{get-schedule.total_hours}}"
  consumes:
    - type: http
      namespace: wfm
      baseUri: "https://api.7-eleven-wfm.com/v1"
      authentication:
        type: bearer
        token: "$secrets.wfm_token"
      resources:
        - name: schedules
          path: "/stores/{{store_id}}/schedules"
          inputParameters:
            - name: store_id
              in: path
            - name: week_start
              in: query
          operations:
            - name: get-approved-schedule
              method: GET
    - type: http
      namespace: adp-scheduling
      baseUri: "https://api.adp.com"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: schedules
          path: "/time/v2/workers/schedule"
          operations:
            - name: submit-schedule
              method: POST
    - type: http
      namespace: msteams-wfm
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When a store's inventory falls below threshold, creates a replenishment purchase order in the ERP system and notifies the district manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Inventory Replenishment Order"
  description: "When a store's inventory falls below threshold, creates a replenishment purchase order in the ERP system and notifies the district manager via Microsoft Teams."
  tags:
    - retail
    - supply-chain
    - erp
    - inventory
    - replenishment
capability:
  exposes:
    - type: mcp
      namespace: store-ops
      port: 8080
      tools:
        - name: trigger-replenishment-order
          description: "Given a store ID and a list of low-stock SKUs, create a replenishment purchase order in SAP and notify the district manager in Microsoft Teams. Use when automated inventory sensors report stock below minimum threshold."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The 7-Eleven store identifier, e.g. '34521'."
            - name: skus
              in: body
              type: string
              description: "Comma-separated list of SKU codes that need replenishment."
            - name: district_manager_upn
              in: body
              type: string
              description: "UPN of the district manager to notify in Microsoft Teams."
          steps:
            - name: create-po
              type: call
              call: sap-erp.create-purchase-order
              with:
                store_id: "{{store_id}}"
                items: "{{skus}}"
                order_type: "REPLEN"
            - name: notify-dm
              type: call
              call: msteams-notify.send-message
              with:
                recipient_upn: "{{district_manager_upn}}"
                text: "Replenishment PO {{create-po.po_number}} created for store {{store_id}}. SKUs: {{skus}}"
  consumes:
    - type: http
      namespace: sap-erp
      baseUri: "https://7eleven-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"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: msteams-notify
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: chat-messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates store inventory replenishment pipeline for 7-Eleven across inventory, snowflake, sap.

naftiko: "0.5"
info:
  label: "Store Inventory Replenishment Pipeline"
  description: "Orchestrates store inventory replenishment pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 store opening readiness check for 7-Eleven across store-ops, datadog, workday.

naftiko: "0.5"
info:
  label: "Store Opening Readiness Check"
  description: "Orchestrates store opening readiness check for 7-Eleven 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 7-Eleven 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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Orchestrates store safety audit pipeline for 7-Eleven across store-ops, servicenow, workday.

naftiko: "0.5"
info:
  label: "Store Safety Audit Pipeline"
  description: "Orchestrates store safety audit pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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: "/7-eleven/workers"
          operations:
            - name: get-workers
              method: GET

Scans SAP Ariba contracts expiring within 60 days, creates Jira renewal tasks for the procurement team, and emails contract owners via Microsoft 365.

naftiko: "0.5"
info:
  label: "Supplier Contract Renewal Alert"
  description: "Scans SAP Ariba contracts expiring within 60 days, creates Jira renewal tasks for the procurement team, and emails contract owners via Microsoft 365."
  tags:
    - procurement
    - contract-management
    - sap-ariba
    - jira
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement-ops
      port: 8080
      tools:
        - name: alert-expiring-contracts
          description: "Given a look-ahead window in days, fetch contracts expiring within that window from SAP Ariba, create a Jira renewal task for each, and email the contract owner. Use for proactive contract renewal management."
          inputParameters:
            - name: days_ahead
              in: body
              type: integer
              description: "Number of days ahead to scan for expiring contracts."
            - name: jira_project_key
              in: body
              type: string
              description: "Jira project key for procurement renewal tasks."
          steps:
            - name: get-expiring
              type: call
              call: ariba-contracts.get-expiring-contracts
              with:
                days_ahead: "{{days_ahead}}"
            - name: create-renewal-task
              type: call
              call: jira-procurement.create-issue
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Task"
                summary: "Contract renewal required within {{days_ahead}} days"
                description: "Contracts expiring: {{get-expiring.contract_ids}}"
  consumes:
    - type: http
      namespace: ariba-contracts
      baseUri: "https://openapi.ariba.com/api/contract/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: contracts
          path: "/contracts"
          inputParameters:
            - name: days_ahead
              in: query
          operations:
            - name: get-expiring-contracts
              method: GET
    - type: http
      namespace: jira-procurement
      baseUri: "https://7eleven.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Orchestrates supplier onboarding flow for 7-Eleven across supply-chain, sap, servicenow.

naftiko: "0.5"
info:
  label: "Supplier Onboarding Flow"
  description: "Orchestrates supplier onboarding flow for 7-Eleven 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 7-Eleven 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://7-eleven-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://7-eleven.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 7-Eleven across supply-chain, sap, servicenow.

naftiko: "0.5"
info:
  label: "Supply Chain Delay Handler"
  description: "Orchestrates supply chain delay handler for 7-Eleven 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 7-Eleven 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://7-eleven-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://7-eleven.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 7-Eleven.

naftiko: "0.5"
info:
  label: "Teams Notification"
  description: "Sends Teams notification for 7-Eleven."
  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

Triggers a Terraform Cloud workspace run to provision new store infrastructure, monitors completion, and posts the result to the DevOps Teams channel.

naftiko: "0.5"
info:
  label: "Terraform Cloud Infrastructure Provisioning"
  description: "Triggers a Terraform Cloud workspace run to provision new store infrastructure, monitors completion, and posts the result to the DevOps Teams channel."
  tags:
    - devops
    - terraform
    - cloud
    - infrastructure
    - provisioning
capability:
  exposes:
    - type: mcp
      namespace: infra-ops
      port: 8080
      tools:
        - name: provision-store-infrastructure
          description: "Given a Terraform Cloud workspace ID and store configuration variables, trigger a plan-and-apply run to provision store infrastructure. Post run status to the DevOps Teams channel when complete. Use when setting up cloud resources for a new store location."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Terraform Cloud workspace ID for the target store environment."
            - name: store_id
              in: body
              type: string
              description: "Store ID to provision infrastructure for."
            - name: teams_channel_id
              in: body
              type: string
              description: "DevOps Teams channel ID for status notifications."
          steps:
            - name: trigger-run
              type: call
              call: terraform.create-run
              with:
                workspace_id: "{{workspace_id}}"
                message: "Provisioning infrastructure for store {{store_id}}"
                auto_apply: "true"
            - name: post-status
              type: call
              call: msteams-devops.post-channel-message
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Terraform run triggered for store {{store_id}} in workspace {{workspace_id}}. Run ID: {{trigger-run.data.id}}"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: msteams-devops
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Orchestrates vendor invoice matching pipeline for 7-Eleven across procurement, sap, servicenow.

naftiko: "0.5"
info:
  label: "Vendor Invoice Matching Pipeline"
  description: "Orchestrates vendor invoice matching pipeline for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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://7-eleven.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

When a vendor invoice arrives via SAP Ariba, validates it against the open purchase order in SAP ERP and routes it for approval in ServiceNow.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing"
  description: "When a vendor invoice arrives via SAP Ariba, validates it against the open purchase order in SAP ERP and routes it for approval in ServiceNow."
  tags:
    - finance
    - procurement
    - accounts-payable
    - sap-ariba
    - erp
capability:
  exposes:
    - type: mcp
      namespace: ap-ops
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Given an invoice ID from SAP Ariba, look up the corresponding PO in SAP ERP, validate line-item amounts, and create an approval task in ServiceNow. Use when AP team needs to match and route incoming invoices."
          inputParameters:
            - name: invoice_id
              in: body
              type: string
              description: "SAP Ariba invoice document ID."
            - name: po_number
              in: body
              type: string
              description: "Related SAP purchase order number for three-way match."
          steps:
            - name: get-invoice
              type: call
              call: sap-ariba.get-invoice
              with:
                invoice_id: "{{invoice_id}}"
            - name: get-po
              type: call
              call: sap-erp-finance.get-purchase-order
              with:
                po_number: "{{po_number}}"
            - name: create-approval
              type: call
              call: servicenow-ap.create-task
              with:
                short_description: "Invoice approval: {{invoice_id}} vs PO {{po_number}}"
                description: "Invoice total: {{get-invoice.total_amount}} | PO total: {{get-po.total_amount}} | Vendor: {{get-invoice.vendor_name}}"
                assigned_group: "AP_Approvers"
  consumes:
    - type: http
      namespace: sap-ariba
      baseUri: "https://openapi.ariba.com/api/invoice/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: invoices
          path: "/invoices/{{invoice_id}}"
          inputParameters:
            - name: invoice_id
              in: path
          operations:
            - name: get-invoice
              method: GET
    - type: http
      namespace: sap-erp-finance
      baseUri: "https://7eleven-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-purchase-order
              method: GET
    - type: http
      namespace: servicenow-ap
      baseUri: "https://7eleven.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

Orchestrates vendor performance scorecard for 7-Eleven across supply-chain, sap, snowflake.

naftiko: "0.5"
info:
  label: "Vendor Performance Scorecard"
  description: "Orchestrates vendor performance scorecard for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven across supply-chain, snowflake, sap.

naftiko: "0.5"
info:
  label: "Warehouse Capacity Planner"
  description: "Orchestrates warehouse capacity planner for 7-Eleven 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 7-Eleven 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://7-eleven.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://7-eleven-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 7-Eleven.

naftiko: "0.5"
info:
  label: "Workday Employee Directory"
  description: "Retrieves employee profile from Workday for 7-Eleven."
  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: "/7-eleven/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Gets headcount for 7-Eleven.

naftiko: "0.5"
info:
  label: "Workday Headcount"
  description: "Gets headcount for 7-Eleven."
  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: "/7-eleven/headcount"
          operations:
            - name: get-hc
              method: GET

Retrieves PTO balance for 7-Eleven.

naftiko: "0.5"
info:
  label: "Workday PTO Balance"
  description: "Retrieves PTO balance for 7-Eleven."
  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: "/7-eleven/workers/{{worker_id}}/timeOff"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-pto
              method: GET