7-Eleven Capabilities
Naftiko 0.5 capability definitions for 7-Eleven - 100 capabilities showing integration workflows and service orchestrations.
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