Subway Capabilities
Naftiko 0.5 capability definitions for Subway - 100 capabilities showing integration workflows and service orchestrations.
Retrieves payroll summary reports from ADP for corporate employee payroll management.
naftiko: "0.5"
info:
label: "ADP Payroll Report Lookup"
description: "Retrieves payroll summary reports from ADP for corporate employee payroll management."
tags:
- hr
- adp
- payroll
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll-report
description: "Get a payroll summary report from ADP."
inputParameters:
- name: pay_period
in: body
type: string
description: "The pay period in YYYY-MM-DD format."
call: "adp.get-payroll"
with:
period: "{{pay_period}}"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/payroll/v1"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll
path: "/pay-statements?period={{period}}"
inputParameters:
- name: period
in: query
operations:
- name: get-payroll
method: GET
Retrieves or uploads franchise operations documents from Box cloud storage.
naftiko: "0.5"
info:
label: "Box Operations Document Manager"
description: "Retrieves or uploads franchise operations documents from Box cloud storage."
tags:
- documents
- box
- franchise
capability:
exposes:
- type: mcp
namespace: doc-mgmt
port: 8080
tools:
- name: search-box-documents
description: "Search for franchise operations documents in Box."
inputParameters:
- name: search_query
in: body
type: string
description: "The search query."
call: "box.search-files"
with:
query: "{{search_query}}"
consumes:
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: search
path: "/search?query={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Fulfills catering orders by routing to the nearest store and sending confirmation to customers.
naftiko: "0.5"
info:
label: "Catering Fulfillment Pipeline"
description: "Fulfills catering orders by routing to the nearest store and sending confirmation to customers."
tags:
- operations
- whatsapp
- logistics
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-catering-fulfillment-pipeline
description: "Fulfills catering orders by routing to the nearest store and sending confirmation to customers."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Catering Fulfillment Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Processes a catering order by validating the menu selections, creating the order in the catering system, and sending confirmation via MailChimp.
naftiko: "0.5"
info:
label: "Catering Order Manager"
description: "Processes a catering order by validating the menu selections, creating the order in the catering system, and sending confirmation via MailChimp."
tags:
- ordering
- catering
- mailchimp
capability:
exposes:
- type: mcp
namespace: catering
port: 8080
tools:
- name: place-catering-order
description: "Process a catering order from menu validation through payment and confirmation."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: customer_name
in: body
type: string
description: "The catering customer name."
- name: customer_email
in: body
type: string
description: "The customer email."
- name: order_items
in: body
type: array
description: "List of catering items."
- name: delivery_date
in: body
type: string
description: "The delivery date in YYYY-MM-DD format."
steps:
- name: create-catering-order
type: call
call: "ordering-api.create-catering-order"
with:
store_id: "{{store_id}}"
customer_name: "{{customer_name}}"
items: "{{order_items}}"
delivery_date: "{{delivery_date}}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template_name: "catering_confirmation"
to_email: "{{customer_email}}"
merge_vars:
customer_name: "{{customer_name}}"
order_number: "{{create-catering-order.order_id}}"
delivery_date: "{{delivery_date}}"
total: "{{create-catering-order.total}}"
consumes:
- type: http
namespace: ordering-api
baseUri: "https://api.subway.com/ordering/v1"
authentication:
type: bearer
token: "$secrets.subway_ordering_token"
resources:
- name: catering
path: "/catering/orders"
operations:
- name: create-catering-order
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Purges the Cloudflare CDN cache for specified URL patterns on the Subway ordering website.
naftiko: "0.5"
info:
label: "Cloudflare CDN Cache Purge"
description: "Purges the Cloudflare CDN cache for specified URL patterns on the Subway ordering website."
tags:
- infrastructure
- cloudflare
- cdn
capability:
exposes:
- type: mcp
namespace: cdn-ops
port: 8080
tools:
- name: purge-cdn-cache
description: "Purge the Cloudflare CDN cache for Subway web properties."
inputParameters:
- name: url_patterns
in: body
type: array
description: "List of URL patterns to purge."
call: "cloudflare.purge-cache"
with:
zone_id: "$secrets.cloudflare_zone_id"
files: "{{url_patterns}}"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: cache
path: "/zones/{{zone_id}}/purge_cache"
inputParameters:
- name: zone_id
in: path
operations:
- name: purge-cache
method: POST
Searches the Confluence knowledge base for franchise operations guides, training materials, and best practices.
naftiko: "0.5"
info:
label: "Confluence Franchise Knowledge Base"
description: "Searches the Confluence knowledge base for franchise operations guides, training materials, and best practices."
tags:
- knowledge-management
- confluence
- franchise
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: search-knowledge-base
description: "Search the franchise knowledge base in Confluence."
inputParameters:
- name: query
in: body
type: string
description: "The search query."
call: "confluence.search"
with:
cql: "type=page AND text~\"{{query}}\""
consumes:
- type: http
namespace: confluence
baseUri: "https://subway.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/search?cql={{cql}}"
inputParameters:
- name: cql
in: query
operations:
- name: search
method: GET
When a customer complaint is received via the mobile app, creates a Salesforce case, opens a ServiceNow ticket if store equipment is involved, and notifies the store manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Customer Complaint Handler Orchestrator"
description: "When a customer complaint is received via the mobile app, creates a Salesforce case, opens a ServiceNow ticket if store equipment is involved, and notifies the store manager via Microsoft Teams."
tags:
- customer-service
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-complaints
port: 8080
tools:
- name: handle-customer-complaint
description: "Process a customer complaint through case creation and team notification."
inputParameters:
- name: customer_name
in: body
type: string
description: "The customer name."
- name: customer_email
in: body
type: string
description: "The customer email."
- name: store_id
in: body
type: string
description: "The store identifier."
- name: complaint_type
in: body
type: string
description: "The complaint type (food_quality, service, cleanliness, equipment)."
- name: description
in: body
type: string
description: "The complaint description."
steps:
- name: create-case
type: call
call: "salesforce.create-case"
with:
contact_name: "{{customer_name}}"
contact_email: "{{customer_email}}"
store_id: "{{store_id}}"
type: "{{complaint_type}}"
description: "{{description}}"
- name: get-store
type: call
call: "franchise-api.get-store"
with:
store_id: "{{store_id}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-store.manager_email}}"
text: "Customer complaint at {{get-store.store_name}}: {{complaint_type}}. Case: {{create-case.case_number}}. {{description}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://subway.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: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: stores
path: "/stores/{{store_id}}"
inputParameters:
- name: store_id
in: path
operations:
- name: get-store
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Analyzes customer feedback by aggregating reviews and performing sentiment analysis.
naftiko: "0.5"
info:
label: "Customer Feedback Analysis Orchestrator"
description: "Analyzes customer feedback by aggregating reviews and performing sentiment analysis."
tags:
- customer-experience
- salesforce
- analytics
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-feedback-analysis-orchestrator
description: "Analyzes customer feedback by aggregating reviews and performing sentiment analysis."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Feedback Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Subway Rewards member's current points balance, tier status, and recent earning history.
naftiko: "0.5"
info:
label: "Customer Loyalty Points Lookup"
description: "Retrieves a Subway Rewards member's current points balance, tier status, and recent earning history."
tags:
- loyalty
- customer-service
- rewards
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-rewards-balance
description: "Look up a Subway Rewards member's current points and tier status."
inputParameters:
- name: member_id
in: body
type: string
description: "The Subway Rewards member ID."
call: "loyalty-api.get-member"
with:
id: "{{member_id}}"
consumes:
- type: http
namespace: loyalty-api
baseUri: "https://api.subway.com/loyalty/v1"
authentication:
type: bearer
token: "$secrets.subway_loyalty_token"
resources:
- name: members
path: "/members/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-member
method: GET
Retrieves health status and alerts from Datadog for Subway POS and ordering systems.
naftiko: "0.5"
info:
label: "Datadog POS System Monitor"
description: "Retrieves health status and alerts from Datadog for Subway POS and ordering systems."
tags:
- monitoring
- datadog
- infrastructure
capability:
exposes:
- type: mcp
namespace: system-monitoring
port: 8080
tools:
- name: get-pos-system-health
description: "Get health status for POS systems from Datadog."
inputParameters:
- name: service_name
in: body
type: string
description: "The service name."
call: "datadog.get-service-status"
with:
service: "{{service_name}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: services
path: "/service_summary?service={{service}}"
inputParameters:
- name: service
in: query
operations:
- name: get-service-status
method: GET
Tracks the status of a delivery order including preparation, pickup, and estimated delivery time.
naftiko: "0.5"
info:
label: "Delivery Order Tracker"
description: "Tracks the status of a delivery order including preparation, pickup, and estimated delivery time."
tags:
- ordering
- delivery
- tracking
capability:
exposes:
- type: mcp
namespace: delivery-tracking
port: 8080
tools:
- name: track-delivery
description: "Track the current status of a delivery order."
inputParameters:
- name: order_id
in: body
type: string
description: "The delivery order ID."
call: "ordering-api.get-order-status"
with:
id: "{{order_id}}"
consumes:
- type: http
namespace: ordering-api
baseUri: "https://api.subway.com/ordering/v1"
authentication:
type: bearer
token: "$secrets.subway_ordering_token"
resources:
- name: orders
path: "/orders/{{id}}/status"
inputParameters:
- name: id
in: path
operations:
- name: get-order-status
method: GET
Evaluates delivery partner performance by pulling metrics from DoorDash and Uber Eats, generating scorecards.
naftiko: "0.5"
info:
label: "Delivery Partner Performance Orchestrator"
description: "Evaluates delivery partner performance by pulling metrics from DoorDash and Uber Eats, generating scorecards."
tags:
- delivery
- doordash
- uber-eats
- power-bi
capability:
exposes:
- type: mcp
namespace: delivery
port: 8080
tools:
- name: run-delivery-partner-performance-orchestrator
description: "Evaluates delivery partner performance by pulling metrics from DoorDash and Uber Eats, generating scorecards."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Delivery Partner Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Updates digital menu boards across stores by pulling pricing and pushing to signage systems.
naftiko: "0.5"
info:
label: "Digital Menu Board Update Pipeline"
description: "Updates digital menu boards across stores by pulling pricing and pushing to signage systems."
tags:
- operations
- product-management
- digital
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-digital-menu-board-update-pipeline
description: "Updates digital menu boards across stores by pulling pricing and pushing to signage systems."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Menu Board Update Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Optimizes digital ordering by analyzing app usage via Google Analytics and reporting improvements.
naftiko: "0.5"
info:
label: "Digital Ordering Optimization Pipeline"
description: "Optimizes digital ordering by analyzing app usage via Google Analytics and reporting improvements."
tags:
- digital
- google-analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: run-digital-ordering-optimization-pipeline
description: "Optimizes digital ordering by analyzing app usage via Google Analytics and reporting improvements."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Ordering Optimization Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the delivery status of a DoorDash order.
naftiko: "0.5"
info:
label: "DoorDash Order Status"
description: "Retrieves the delivery status of a DoorDash order."
tags:
- delivery
- doordash
capability:
exposes:
- type: mcp
namespace: delivery
port: 8080
tools:
- name: get-doordash
description: "Retrieves the delivery status of a DoorDash order."
inputParameters:
- name: entity_id
in: body
type: string
description: "The doordash order status identifier."
call: "delivery-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://api.subway.com/delivery/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: doordash
path: "/doordash/order/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-doordash
method: GET
Optimizes drive-through performance by analyzing wait times and adjusting staffing schedules.
naftiko: "0.5"
info:
label: "Drive Through Optimization Orchestrator"
description: "Optimizes drive-through performance by analyzing wait times and adjusting staffing schedules."
tags:
- operations
- workday
- power-bi
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-drive-through-optimization-orchestrator
description: "Optimizes drive-through performance by analyzing wait times and adjusting staffing schedules."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Drive Through Optimization Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Queries Dynatrace for active performance problems affecting Subway store and ordering systems.
naftiko: "0.5"
info:
label: "Dynatrace System Performance Monitor"
description: "Queries Dynatrace for active performance problems affecting Subway store and ordering systems."
tags:
- monitoring
- dynatrace
- performance
capability:
exposes:
- type: mcp
namespace: dynatrace-monitoring
port: 8080
tools:
- name: get-active-problems
description: "Get active Dynatrace problems affecting Subway systems."
inputParameters:
- name: severity
in: body
type: string
description: "Minimum severity level."
call: "dynatrace.get-problems"
with:
severity: "{{severity}}"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://subway.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: problems
path: "/problems?problemSelector=status(\"OPEN\")&severityLevel={{severity}}"
inputParameters:
- name: severity
in: query
operations:
- name: get-problems
method: GET
On new hire creation in ADP, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "On new hire creation in ADP, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- adp
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Orchestrate the full onboarding sequence for a new Subway corporate employee."
inputParameters:
- name: employee_id
in: body
type: string
description: "The ADP employee ID."
- name: start_date
in: body
type: string
description: "The start date in YYYY-MM-DD format."
- name: department
in: body
type: string
description: "The department the new hire is joining."
steps:
- name: get-employee
type: call
call: "adp.get-worker"
with:
worker_id: "{{employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding_site"
folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Subway, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}."
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://subway.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Processes employee referrals by creating candidates in Workday and tracking bonuses.
naftiko: "0.5"
info:
label: "Employee Referral Pipeline"
description: "Processes employee referrals by creating candidates in Workday and tracking bonuses."
tags:
- hr
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-referral-pipeline
description: "Processes employee referrals by creating candidates in Workday and tracking bonuses."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Referral Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Tracks the maintenance status of franchise store equipment including ovens, refrigerators, and POS terminals.
naftiko: "0.5"
info:
label: "Equipment Maintenance Tracker"
description: "Tracks the maintenance status of franchise store equipment including ovens, refrigerators, and POS terminals."
tags:
- franchise
- maintenance
- equipment
capability:
exposes:
- type: mcp
namespace: equipment
port: 8080
tools:
- name: get-equipment-status
description: "Check the maintenance status of equipment at a franchise store."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "maintenance-api.get-store-equipment"
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: maintenance-api
baseUri: "https://api.subway.com/maintenance/v1"
authentication:
type: bearer
token: "$secrets.subway_maintenance_token"
resources:
- name: equipment
path: "/stores/{{store}}/equipment"
inputParameters:
- name: store
in: path
operations:
- name: get-store-equipment
method: GET
Optimizes food costs by analyzing ingredient usage from POS data, comparing supplier pricing in SAP, and recommending adjustments.
naftiko: "0.5"
info:
label: "Food Cost Optimization Pipeline"
description: "Optimizes food costs by analyzing ingredient usage from POS data, comparing supplier pricing in SAP, and recommending adjustments."
tags:
- supply-chain
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: run-food-cost-optimization-pipeline
description: "Optimizes food costs by analyzing ingredient usage from POS data, comparing supplier pricing in SAP, and recommending adjustments."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Food Cost Optimization Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages food safety incidents by documenting in the compliance system, notifying health authorities, and communicating with stores.
naftiko: "0.5"
info:
label: "Food Safety Incident Orchestrator"
description: "Manages food safety incidents by documenting in the compliance system, notifying health authorities, and communicating with stores."
tags:
- compliance
- food-safety
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-food-safety-incident-orchestrator
description: "Manages food safety incidents by documenting in the compliance system, notifying health authorities, and communicating with stores."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Food Safety Incident Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Records a food safety inspection by creating a quality event in the food safety system, updating the store record in Salesforce, and notifying the area manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Food Safety Inspection Report Orchestrator"
description: "Records a food safety inspection by creating a quality event in the food safety system, updating the store record in Salesforce, and notifying the area manager via Microsoft Teams."
tags:
- food-safety
- quality
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food-safety
port: 8080
tools:
- name: record-inspection
description: "Record a food safety inspection and notify relevant parties."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: inspector_name
in: body
type: string
description: "The inspector's name."
- name: score
in: body
type: integer
description: "The inspection score (0-100)."
- name: findings
in: body
type: string
description: "Summary of inspection findings."
- name: critical_violations
in: body
type: integer
description: "Number of critical violations found."
steps:
- name: create-inspection-record
type: call
call: "food-safety-api.create-inspection"
with:
store_id: "{{store_id}}"
inspector: "{{inspector_name}}"
score: "{{score}}"
findings: "{{findings}}"
critical_count: "{{critical_violations}}"
- name: update-salesforce
type: call
call: "salesforce.update-account"
with:
store_id: "{{store_id}}"
last_inspection_score: "{{score}}"
last_inspection_date: "{{create-inspection-record.inspection_date}}"
- name: notify-area-manager
type: call
call: "msteams.send-channel-message"
with:
team_id: "operations"
channel_id: "food_safety"
text: "Inspection completed at Store {{store_id}}: Score {{score}}/100. Critical violations: {{critical_violations}}. {{findings}}"
consumes:
- type: http
namespace: food-safety-api
baseUri: "https://api.subway.com/food-safety/v1"
authentication:
type: bearer
token: "$secrets.subway_food_safety_token"
resources:
- name: inspections
path: "/inspections"
operations:
- name: create-inspection
method: POST
- type: http
namespace: salesforce
baseUri: "https://subway.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{store_id}}"
inputParameters:
- name: store_id
in: path
operations:
- name: update-account
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Reduces food waste by analyzing expiration data and adjusting order quantities.
naftiko: "0.5"
info:
label: "Food Waste Reduction Orchestrator"
description: "Reduces food waste by analyzing expiration data and adjusting order quantities."
tags:
- sustainability
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-food-waste-reduction-orchestrator
description: "Reduces food waste by analyzing expiration data and adjusting order quantities."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Food Waste Reduction Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves franchise agreement details for a store including contract terms, royalty rates, and renewal dates.
naftiko: "0.5"
info:
label: "Franchise Agreement Lookup"
description: "Retrieves franchise agreement details for a store including contract terms, royalty rates, and renewal dates."
tags:
- franchise
- legal
- agreements
capability:
exposes:
- type: mcp
namespace: franchise-mgmt
port: 8080
tools:
- name: get-franchise-agreement
description: "Look up the franchise agreement for a store."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "franchise-api.get-agreement"
with:
store_id: "{{store_id}}"
consumes:
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: agreements
path: "/stores/{{store_id}}/agreement"
inputParameters:
- name: store_id
in: path
operations:
- name: get-agreement
method: GET
Schedules and records a franchise compliance audit by creating the audit in the system, assigning tasks in Jira, and notifying the area manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Franchise Compliance Audit Orchestrator"
description: "Schedules and records a franchise compliance audit by creating the audit in the system, assigning tasks in Jira, and notifying the area manager via Microsoft Teams."
tags:
- franchise
- compliance
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-audit
port: 8080
tools:
- name: schedule-compliance-audit
description: "Schedule and set up a franchise compliance audit."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: audit_date
in: body
type: string
description: "The audit date in YYYY-MM-DD format."
- name: auditor_name
in: body
type: string
description: "The assigned auditor name."
steps:
- name: get-store
type: call
call: "franchise-api.get-store"
with:
store_id: "{{store_id}}"
- name: create-audit-task
type: call
call: "jira.create-issue"
with:
project: "AUDIT"
summary: "Compliance Audit: {{get-store.store_name}} on {{audit_date}}"
description: "Store: {{get-store.store_name}} ({{store_id}}). Auditor: {{auditor_name}}. Date: {{audit_date}}."
issuetype: "Task"
- name: notify-area-manager
type: call
call: "msteams.send-channel-message"
with:
team_id: "operations"
channel_id: "audits"
text: "Compliance audit scheduled: {{get-store.store_name}} on {{audit_date}}. Auditor: {{auditor_name}}. Jira: {{create-audit-task.key}}."
consumes:
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: stores
path: "/stores/{{store_id}}"
inputParameters:
- name: store_id
in: path
operations:
- name: get-store
method: GET
- type: http
namespace: jira
baseUri: "https://subway.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Generates franchise compliance reports by pulling audit data and distributing via SharePoint.
naftiko: "0.5"
info:
label: "Franchise Compliance Report Pipeline"
description: "Generates franchise compliance reports by pulling audit data and distributing via SharePoint."
tags:
- compliance
- servicenow
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-franchise-compliance-report-pipeline
description: "Generates franchise compliance reports by pulling audit data and distributing via SharePoint."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Compliance Report Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles franchise disputes by creating cases and scheduling mediation.
naftiko: "0.5"
info:
label: "Franchise Dispute Resolution Pipeline"
description: "Handles franchise disputes by creating cases and scheduling mediation."
tags:
- franchise
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-franchise-dispute-resolution-pipeline
description: "Handles franchise disputes by creating cases and scheduling mediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Dispute Resolution Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Conducts franchise financial audits by pulling transaction data and comparing with reported figures.
naftiko: "0.5"
info:
label: "Franchise Financial Audit Orchestrator"
description: "Conducts franchise financial audits by pulling transaction data and comparing with reported figures."
tags:
- finance
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-franchise-financial-audit-orchestrator
description: "Conducts franchise financial audits by pulling transaction data and comparing with reported figures."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Financial Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Nurtures franchise development leads by segmenting in Salesforce and sending drip campaigns.
naftiko: "0.5"
info:
label: "Franchise Lead Nurture Orchestrator"
description: "Nurtures franchise development leads by segmenting in Salesforce and sending drip campaigns."
tags:
- franchise
- salesforce
- hubspot
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-franchise-lead-nurture-orchestrator
description: "Nurtures franchise development leads by segmenting in Salesforce and sending drip campaigns."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Lead Nurture Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates a new franchise store opening by creating the store record, setting up the POS system, configuring the supply chain account, and notifying regional management via Microsoft Teams.
naftiko: "0.5"
info:
label: "Franchise New Store Opening Orchestrator"
description: "Orchestrates a new franchise store opening by creating the store record, setting up the POS system, configuring the supply chain account, and notifying regional management via Microsoft Teams."
tags:
- franchise
- operations
- microsoft-teams
- onboarding
capability:
exposes:
- type: mcp
namespace: store-opening
port: 8080
tools:
- name: open-new-store
description: "Set up all systems for a new franchise store opening."
inputParameters:
- name: franchise_owner_id
in: body
type: string
description: "The franchise owner's ID."
- name: store_address
in: body
type: string
description: "The new store address."
- name: store_name
in: body
type: string
description: "The store name."
- name: opening_date
in: body
type: string
description: "The planned opening date in YYYY-MM-DD format."
steps:
- name: create-store-record
type: call
call: "franchise-api.create-store"
with:
owner_id: "{{franchise_owner_id}}"
address: "{{store_address}}"
name: "{{store_name}}"
opening_date: "{{opening_date}}"
- name: setup-pos
type: call
call: "pos-api.provision-store"
with:
store_id: "{{create-store-record.store_id}}"
store_name: "{{store_name}}"
- name: setup-supply
type: call
call: "supply-api.create-account"
with:
store_id: "{{create-store-record.store_id}}"
delivery_address: "{{store_address}}"
- name: notify-region
type: call
call: "msteams.send-channel-message"
with:
team_id: "regional_operations"
channel_id: "new_stores"
text: "New store opening: {{store_name}} at {{store_address}}. Store ID: {{create-store-record.store_id}}. Opening: {{opening_date}}."
consumes:
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: stores
path: "/stores"
operations:
- name: create-store
method: POST
- type: http
namespace: pos-api
baseUri: "https://api.subway.com/pos/v1"
authentication:
type: bearer
token: "$secrets.subway_pos_token"
resources:
- name: provisioning
path: "/stores/provision"
operations:
- name: provision-store
method: POST
- type: http
namespace: supply-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_supply_token"
resources:
- name: accounts
path: "/accounts"
operations:
- name: create-account
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves daily sales and operational metrics for a franchise location from the POS system.
naftiko: "0.5"
info:
label: "Franchise Performance Dashboard"
description: "Retrieves daily sales and operational metrics for a franchise location from the POS system."
tags:
- franchise
- analytics
- sales
capability:
exposes:
- type: mcp
namespace: franchise-analytics
port: 8080
tools:
- name: get-store-performance
description: "Get daily sales and operational metrics for a Subway franchise location."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: report_date
in: body
type: string
description: "The report date in YYYY-MM-DD format."
call: "pos-api.get-daily-summary"
with:
store: "{{store_id}}"
date: "{{report_date}}"
consumes:
- type: http
namespace: pos-api
baseUri: "https://api.subway.com/pos/v1"
authentication:
type: bearer
token: "$secrets.subway_pos_token"
resources:
- name: summaries
path: "/stores/{{store}}/daily-summary?date={{date}}"
inputParameters:
- name: store
in: path
- name: date
in: query
operations:
- name: get-daily-summary
method: GET
Manages franchise agreement renewals by pulling performance data from Snowflake, generating renewal offers, and sending via DocuSign.
naftiko: "0.5"
info:
label: "Franchise Renewal Orchestrator"
description: "Manages franchise agreement renewals by pulling performance data from Snowflake, generating renewal offers, and sending via DocuSign."
tags:
- franchise
- snowflake
- docusign
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-franchise-renewal-orchestrator
description: "Manages franchise agreement renewals by pulling performance data from Snowflake, generating renewal offers, and sending via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Renewal Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Distributes franchisee satisfaction surveys and generates insight reports.
naftiko: "0.5"
info:
label: "Franchise Satisfaction Survey Orchestrator"
description: "Distributes franchisee satisfaction surveys and generates insight reports."
tags:
- franchise
- mailchimp
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-franchise-satisfaction-survey-orchestrator
description: "Distributes franchisee satisfaction surveys and generates insight reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Satisfaction Survey Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Searches for Subway franchise locations by geographic coordinates or city name using the Google Maps API.
naftiko: "0.5"
info:
label: "Franchise Store Locator"
description: "Searches for Subway franchise locations by geographic coordinates or city name using the Google Maps API."
tags:
- franchise
- google-maps
- locations
capability:
exposes:
- type: mcp
namespace: store-locator
port: 8080
tools:
- name: find-stores
description: "Find Subway franchise locations near a specified address or coordinates."
inputParameters:
- name: location
in: body
type: string
description: "The address, city, or coordinates to search near."
- name: radius_miles
in: body
type: integer
description: "The search radius in miles."
call: "gmaps.search-places"
with:
query: "Subway restaurant near {{location}}"
radius: "{{radius_miles}}"
consumes:
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apiKey
key: "$secrets.google_maps_key"
resources:
- name: places
path: "/place/textsearch/json?query={{query}}&radius={{radius}}"
inputParameters:
- name: query
in: query
- name: radius
in: query
operations:
- name: search-places
method: GET
Tracks franchise training completion by monitoring progress and updating Salesforce records.
naftiko: "0.5"
info:
label: "Franchise Training Completion Orchestrator"
description: "Tracks franchise training completion by monitoring progress and updating Salesforce records."
tags:
- training
- pluralsight
- salesforce
- mailchimp
capability:
exposes:
- type: mcp
namespace: training
port: 8080
tools:
- name: run-franchise-training-completion-orchestrator
description: "Tracks franchise training completion by monitoring progress and updating Salesforce records."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Franchise Training Completion Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves training completion progress for franchise employees from the Pluralsight learning platform.
naftiko: "0.5"
info:
label: "Franchise Training Platform Progress"
description: "Retrieves training completion progress for franchise employees from the Pluralsight learning platform."
tags:
- training
- franchise
- pluralsight
capability:
exposes:
- type: mcp
namespace: training
port: 8080
tools:
- name: get-training-progress
description: "Get training completion progress for franchise employees."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "pluralsight.get-team-progress"
with:
team: "{{store_id}}"
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: teams
path: "/teams/{{team}}/progress"
inputParameters:
- name: team
in: path
operations:
- name: get-team-progress
method: GET
Calculates monthly royalty payments for a franchisee by pulling sales data from the POS system and franchise agreement terms.
naftiko: "0.5"
info:
label: "Franchisee Royalty Calculator"
description: "Calculates monthly royalty payments for a franchisee by pulling sales data from the POS system and franchise agreement terms."
tags:
- franchise
- finance
- royalties
capability:
exposes:
- type: mcp
namespace: royalty-calculation
port: 8080
tools:
- name: calculate-royalties
description: "Calculate monthly royalty payments for a franchisee."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: month
in: body
type: string
description: "The month in YYYY-MM format."
steps:
- name: get-sales
type: call
call: "pos-api.get-monthly-sales"
with:
store: "{{store_id}}"
month: "{{month}}"
- name: get-agreement
type: call
call: "franchise-api.get-agreement"
with:
store_id: "{{store_id}}"
consumes:
- type: http
namespace: pos-api
baseUri: "https://api.subway.com/pos/v1"
authentication:
type: bearer
token: "$secrets.subway_pos_token"
resources:
- name: monthly-sales
path: "/stores/{{store}}/sales?month={{month}}"
inputParameters:
- name: store
in: path
- name: month
in: query
operations:
- name: get-monthly-sales
method: GET
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: agreements
path: "/stores/{{store_id}}/agreement"
inputParameters:
- name: store_id
in: path
operations:
- name: get-agreement
method: GET
Reconciles gift card transactions by matching POS data with financial records.
naftiko: "0.5"
info:
label: "Gift Card Reconciliation Pipeline"
description: "Reconciles gift card transactions by matching POS data with financial records."
tags:
- finance
- sap
- pos
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-gift-card-reconciliation-pipeline
description: "Reconciles gift card transactions by matching POS data with financial records."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Gift Card Reconciliation Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves Google Ads campaign performance metrics for Subway digital advertising campaigns.
naftiko: "0.5"
info:
label: "Google Ads Campaign Performance"
description: "Retrieves Google Ads campaign performance metrics for Subway digital advertising campaigns."
tags:
- marketing
- google-ads
- advertising
capability:
exposes:
- type: mcp
namespace: ad-analytics
port: 8080
tools:
- name: get-google-ads-performance
description: "Get performance metrics for a Google Ads campaign."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The Google Ads campaign ID."
- name: date_range
in: body
type: string
description: "The date range (e.g., LAST_7_DAYS, LAST_30_DAYS)."
call: "google-ads.get-campaign-stats"
with:
campaign: "{{campaign_id}}"
range: "{{date_range}}"
consumes:
- type: http
namespace: google-ads
baseUri: "https://googleads.googleapis.com/v14"
authentication:
type: bearer
token: "$secrets.google_ads_token"
resources:
- name: campaigns
path: "/customers/{{customer_id}}/googleAds:searchStream"
operations:
- name: get-campaign-stats
method: POST
Retrieves digital marketing performance metrics from Google Analytics for Subway campaigns.
naftiko: "0.5"
info:
label: "Google Analytics Digital Marketing Report"
description: "Retrieves digital marketing performance metrics from Google Analytics for Subway campaigns."
tags:
- marketing
- google-analytics
- campaigns
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: get-campaign-metrics
description: "Get marketing campaign performance metrics from Google Analytics."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name or UTM parameter."
- name: date_range
in: body
type: string
description: "The date range (e.g., last_7_days, last_30_days)."
call: "ga.get-report"
with:
campaign: "{{campaign_name}}"
range: "{{date_range}}"
consumes:
- type: http
namespace: ga
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
operations:
- name: get-report
method: POST
Retrieves driving directions to a Subway store via Google Maps.
naftiko: "0.5"
info:
label: "Google Maps Store Directions"
description: "Retrieves driving directions to a Subway store via Google Maps."
tags:
- customer-experience
- google-maps
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: get-google
description: "Retrieves driving directions to a Subway store via Google Maps."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google maps store directions identifier."
call: "customer-experience-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: customer-experience-api
baseUri: "https://api.subway.com/customer-experience/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: google
path: "/google/maps/store/directions/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Retrieves the latest published container version from Google Tag Manager for the Subway website.
naftiko: "0.5"
info:
label: "Google Tag Manager Container Version"
description: "Retrieves the latest published container version from Google Tag Manager for the Subway website."
tags:
- marketing
- google-tag-manager
- analytics
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: get-container-version
description: "Get the latest published GTM container version."
inputParameters:
- name: container_id
in: body
type: string
description: "The GTM container ID."
call: "gtm.get-latest-version"
with:
container: "{{container_id}}"
consumes:
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.google_tagmanager_token"
resources:
- name: versions
path: "/accounts/{{account_id}}/containers/{{container}}/versions"
inputParameters:
- name: container
in: path
operations:
- name: get-latest-version
method: GET
Retrieves the status of a GrubHub delivery order.
naftiko: "0.5"
info:
label: "GrubHub Order Status"
description: "Retrieves the status of a GrubHub delivery order."
tags:
- delivery
- grubhub
capability:
exposes:
- type: mcp
namespace: delivery
port: 8080
tools:
- name: get-grubhub
description: "Retrieves the status of a GrubHub delivery order."
inputParameters:
- name: entity_id
in: body
type: string
description: "The grubhub order status identifier."
call: "delivery-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://api.subway.com/delivery/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: grubhub
path: "/grubhub/order/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-grubhub
method: GET
Prepares stores for health inspections by distributing checklists and verifying compliance.
naftiko: "0.5"
info:
label: "Health Inspection Prep Orchestrator"
description: "Prepares stores for health inspections by distributing checklists and verifying compliance."
tags:
- compliance
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-health-inspection-prep-orchestrator
description: "Prepares stores for health inspections by distributing checklists and verifying compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Health Inspection Prep Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Syncs Subway Rewards member segments from the loyalty system to HubSpot for targeted marketing campaigns.
naftiko: "0.5"
info:
label: "HubSpot Loyalty Segment Sync"
description: "Syncs Subway Rewards member segments from the loyalty system to HubSpot for targeted marketing campaigns."
tags:
- marketing
- hubspot
- loyalty
capability:
exposes:
- type: mcp
namespace: loyalty-sync
port: 8080
tools:
- name: sync-loyalty-segment
description: "Sync a loyalty member segment to HubSpot for marketing."
inputParameters:
- name: segment_name
in: body
type: string
description: "The loyalty segment name (e.g., gold_members, lapsed_30_days)."
steps:
- name: get-segment
type: call
call: "loyalty-api.get-segment-members"
with:
segment: "{{segment_name}}"
- name: sync-to-hubspot
type: call
call: "hubspot.batch-upsert"
with:
contacts: "{{get-segment.members}}"
consumes:
- type: http
namespace: loyalty-api
baseUri: "https://api.subway.com/loyalty/v1"
authentication:
type: bearer
token: "$secrets.subway_loyalty_token"
resources:
- name: segments
path: "/segments/{{segment}}/members"
inputParameters:
- name: segment
in: path
operations:
- name: get-segment-members
method: GET
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/objects/contacts/batch/upsert"
operations:
- name: batch-upsert
method: POST
Checks the current inventory levels for key ingredients at a franchise store.
naftiko: "0.5"
info:
label: "Inventory Level Checker"
description: "Checks the current inventory levels for key ingredients at a franchise store."
tags:
- supply-chain
- inventory
- stores
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-store-inventory
description: "Check current inventory levels at a franchise store."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "supply-api.get-inventory"
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: supply-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_supply_token"
resources:
- name: inventory
path: "/stores/{{store}}/inventory"
inputParameters:
- name: store
in: path
operations:
- name: get-inventory
method: GET
Retrieves open issues from Jira for franchise operations projects.
naftiko: "0.5"
info:
label: "Jira Franchise Operations Issue Tracker"
description: "Retrieves open issues from Jira for franchise operations projects."
tags:
- project-management
- jira
- franchise
capability:
exposes:
- type: mcp
namespace: project-mgmt
port: 8080
tools:
- name: get-open-issues
description: "Get open issues for a Jira franchise operations project."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key."
call: "jira.search-issues"
with:
jql: "project={{project_key}} AND status!=Done"
consumes:
- type: http
namespace: jira
baseUri: "https://subway.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search?jql={{jql}}"
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
Retrieves an approved job requisition from ADP and publishes it to LinkedIn Jobs.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting Publisher"
description: "Retrieves an approved job requisition from ADP and publishes it to LinkedIn Jobs."
tags:
- hr
- recruiting
- adp
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: publish-job-to-linkedin
description: "Pull a job requisition from ADP and publish it to LinkedIn."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The ADP requisition ID."
steps:
- name: get-requisition
type: call
call: "adp.get-requisition"
with:
req_id: "{{requisition_id}}"
- name: post-to-linkedin
type: call
call: "linkedin.create-job-post"
with:
title: "{{get-requisition.title}}"
description: "{{get-requisition.description}}"
location: "{{get-requisition.location}}"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: requisitions
path: "/requisitions/{{req_id}}"
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-posts
path: "/simpleJobPostings"
operations:
- name: create-job-post
method: POST
Enrolls customers in the loyalty program by creating profiles and sending welcome emails.
naftiko: "0.5"
info:
label: "Loyalty Program Enrollment Pipeline"
description: "Enrolls customers in the loyalty program by creating profiles and sending welcome emails."
tags:
- customer-experience
- mailchimp
- mobile
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-loyalty-program-enrollment-pipeline
description: "Enrolls customers in the loyalty program by creating profiles and sending welcome emails."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Loyalty Program Enrollment Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates and sends a promotional email campaign to a targeted segment of Subway Rewards members via MailChimp.
naftiko: "0.5"
info:
label: "MailChimp Promotional Campaign Sender"
description: "Creates and sends a promotional email campaign to a targeted segment of Subway Rewards members via MailChimp."
tags:
- marketing
- mailchimp
- email
- loyalty
capability:
exposes:
- type: mcp
namespace: email-campaigns
port: 8080
tools:
- name: send-promo-campaign
description: "Create and send a promotional email campaign to a Subway Rewards segment."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name."
- name: segment_id
in: body
type: string
description: "The MailChimp segment ID for targeting."
- name: subject_line
in: body
type: string
description: "The email subject line."
- name: template_id
in: body
type: string
description: "The MailChimp template ID."
steps:
- name: create-campaign
type: call
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
segment: "{{segment_id}}"
subject: "{{subject_line}}"
template: "{{template_id}}"
- name: send-campaign
type: call
call: "mailchimp.send-campaign"
with:
campaign_id: "{{create-campaign.id}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- name: campaign-actions
path: "/campaigns/{{campaign_id}}/actions/send"
inputParameters:
- name: campaign_id
in: path
operations:
- name: send-campaign
method: POST
Retrieves current menu items with pricing, nutritional information, and availability for a specified store.
naftiko: "0.5"
info:
label: "Menu Item Lookup"
description: "Retrieves current menu items with pricing, nutritional information, and availability for a specified store."
tags:
- menu
- ordering
- stores
capability:
exposes:
- type: mcp
namespace: menu
port: 8080
tools:
- name: get-menu
description: "Get the current menu with pricing and availability for a Subway store."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "menu-api.get-store-menu"
with:
store: "{{store_id}}"
consumes:
- type: http
namespace: menu-api
baseUri: "https://api.subway.com/menu/v1"
authentication:
type: bearer
token: "$secrets.subway_menu_token"
resources:
- name: menus
path: "/stores/{{store}}/menu"
inputParameters:
- name: store
in: path
operations:
- name: get-store-menu
method: GET
Appends daily sales data to a Microsoft Excel spreadsheet for franchise performance tracking.
naftiko: "0.5"
info:
label: "Microsoft Excel Sales Tracker"
description: "Appends daily sales data to a Microsoft Excel spreadsheet for franchise performance tracking."
tags:
- analytics
- microsoft-excel
- franchise
capability:
exposes:
- type: mcp
namespace: sales-tracking
port: 8080
tools:
- name: log-daily-sales
description: "Append daily store sales data to the tracking spreadsheet."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: report_date
in: body
type: string
description: "The date in YYYY-MM-DD format."
- name: total_sales
in: body
type: string
description: "The total daily sales amount."
- name: transaction_count
in: body
type: integer
description: "The number of transactions."
call: "excel.append-row"
with:
workbook_id: "franchise_sales_tracker"
sheet_name: "DailySales"
values:
- "{{report_date}}"
- "{{store_id}}"
- "{{total_sales}}"
- "{{transaction_count}}"
consumes:
- type: http
namespace: excel
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: worksheets
path: "/me/drive/items/{{workbook_id}}/workbook/worksheets/{{sheet_name}}/tables/1/rows/add"
inputParameters:
- name: workbook_id
in: path
- name: sheet_name
in: path
operations:
- name: append-row
method: POST
Sends franchise communications via Microsoft Outlook Graph API.
naftiko: "0.5"
info:
label: "Microsoft Outlook Franchise Mailer"
description: "Sends franchise communications via Microsoft Outlook Graph API."
tags:
- communications
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends franchise communications via Microsoft Outlook Graph API."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft outlook franchise mailer identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.subway.com/communications/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: microsoft
path: "/microsoft/outlook/franchise/mailer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
Triggers a Microsoft Power Automate flow for automated franchise operations workflows.
naftiko: "0.5"
info:
label: "Microsoft Power Automate Flow Trigger"
description: "Triggers a Microsoft Power Automate flow for automated franchise operations workflows."
tags:
- automation
- microsoft-power-automate
- franchise
capability:
exposes:
- type: mcp
namespace: automation
port: 8080
tools:
- name: trigger-ops-flow
description: "Trigger a Power Automate flow for franchise operations."
inputParameters:
- name: flow_id
in: body
type: string
description: "The Power Automate flow ID."
- name: flow_inputs
in: body
type: object
description: "The input parameters for the flow."
call: "power-automate.trigger-flow"
with:
flow_id: "{{flow_id}}"
inputs: "{{flow_inputs}}"
consumes:
- type: http
namespace: power-automate
baseUri: "https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple"
authentication:
type: bearer
token: "$secrets.power_automate_token"
resources:
- name: flows
path: "/environments/Default/flows/{{flow_id}}/triggers/manual/run"
inputParameters:
- name: flow_id
in: path
operations:
- name: trigger-flow
method: POST
Sends an operational alert to the franchise operations Microsoft Teams channel for urgent communications.
naftiko: "0.5"
info:
label: "Microsoft Teams Franchise Alert Broadcaster"
description: "Sends an operational alert to the franchise operations Microsoft Teams channel for urgent communications."
tags:
- franchise
- microsoft-teams
- alerts
capability:
exposes:
- type: mcp
namespace: ops-alerts
port: 8080
tools:
- name: broadcast-franchise-alert
description: "Send an operational alert to the franchise operations Teams channel."
inputParameters:
- name: alert_title
in: body
type: string
description: "The alert title."
- name: alert_message
in: body
type: string
description: "The alert body text."
- name: severity
in: body
type: string
description: "The alert severity (critical, high, medium, low)."
call: "msteams.send-channel-message"
with:
team_id: "franchise_operations"
channel_id: "alerts"
text: "[{{severity}}] {{alert_title}}: {{alert_message}}"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Sends a push notification to Subway mobile app users for promotions, order updates, or loyalty rewards.
naftiko: "0.5"
info:
label: "Mobile App Push Notification Sender"
description: "Sends a push notification to Subway mobile app users for promotions, order updates, or loyalty rewards."
tags:
- marketing
- notifications
- mobile
capability:
exposes:
- type: mcp
namespace: push-notifications
port: 8080
tools:
- name: send-push-notification
description: "Send a push notification to Subway mobile app users."
inputParameters:
- name: segment
in: body
type: string
description: "The user segment to target."
- name: title
in: body
type: string
description: "The notification title."
- name: message
in: body
type: string
description: "The notification message."
call: "push-api.send-notification"
with:
segment: "{{segment}}"
title: "{{title}}"
body: "{{message}}"
consumes:
- type: http
namespace: push-api
baseUri: "https://api.subway.com/notifications/v1"
authentication:
type: bearer
token: "$secrets.subway_push_token"
resources:
- name: notifications
path: "/push/send"
operations:
- name: send-notification
method: POST
Coordinates mobile app releases by running tests, deploying to stores, and notifying stakeholders.
naftiko: "0.5"
info:
label: "Mobile App Release Orchestrator"
description: "Coordinates mobile app releases by running tests, deploying to stores, and notifying stakeholders."
tags:
- engineering
- azure-devops
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-mobile-app-release-orchestrator
description: "Coordinates mobile app releases by running tests, deploying to stores, and notifying stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Mobile App Release Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Evaluates multi-unit franchise performance by aggregating metrics and ranking operators.
naftiko: "0.5"
info:
label: "Multi-Unit Performance Orchestrator"
description: "Evaluates multi-unit franchise performance by aggregating metrics and ranking operators."
tags:
- franchise
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-multi-unit-performance-orchestrator
description: "Evaluates multi-unit franchise performance by aggregating metrics and ranking operators."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Multi-Unit Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Processes mystery shopper evaluation results by aggregating scores and alerting underperforming stores.
naftiko: "0.5"
info:
label: "Mystery Shopper Results Pipeline"
description: "Processes mystery shopper evaluation results by aggregating scores and alerting underperforming stores."
tags:
- quality
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: run-mystery-shopper-results-pipeline
description: "Processes mystery shopper evaluation results by aggregating scores and alerting underperforming stores."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Mystery Shopper Results Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Coordinates new menu item rollout by updating POS systems, distributing training materials, and launching marketing campaigns.
naftiko: "0.5"
info:
label: "New Menu Rollout Orchestrator"
description: "Coordinates new menu item rollout by updating POS systems, distributing training materials, and launching marketing campaigns."
tags:
- product-management
- sharepoint
- mailchimp
capability:
exposes:
- type: mcp
namespace: product-management
port: 8080
tools:
- name: run-new-menu-rollout-orchestrator
description: "Coordinates new menu item rollout by updating POS systems, distributing training materials, and launching marketing campaigns."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed New Menu Rollout Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves application performance metrics from New Relic for Subway digital ordering and mobile app services.
naftiko: "0.5"
info:
label: "New Relic Application Performance"
description: "Retrieves application performance metrics from New Relic for Subway digital ordering and mobile app services."
tags:
- monitoring
- new-relic
- performance
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: "Get performance metrics for a Subway application from New Relic."
inputParameters:
- name: app_name
in: body
type: string
description: "The application name in New Relic."
call: "newrelic.get-app-summary"
with:
app: "{{app_name}}"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
key: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications.json?filter[name]={{app}}"
inputParameters:
- name: app
in: query
operations:
- name: get-app-summary
method: GET
Retrieves detailed nutritional information for a Subway menu item including calories, macros, and allergen data.
naftiko: "0.5"
info:
label: "Nutritional Information API"
description: "Retrieves detailed nutritional information for a Subway menu item including calories, macros, and allergen data."
tags:
- menu
- nutrition
- customer-service
capability:
exposes:
- type: mcp
namespace: nutrition
port: 8080
tools:
- name: get-nutrition-info
description: "Get detailed nutritional information for a menu item."
inputParameters:
- name: item_id
in: body
type: string
description: "The menu item identifier."
call: "menu-api.get-nutrition"
with:
item: "{{item_id}}"
consumes:
- type: http
namespace: menu-api
baseUri: "https://api.subway.com/menu/v1"
authentication:
type: bearer
token: "$secrets.subway_menu_token"
resources:
- name: nutrition
path: "/items/{{item}}/nutrition"
inputParameters:
- name: item
in: path
operations:
- name: get-nutrition
method: GET
Processes an online order by validating the menu items at the selected store, creating the order in the POS system, processing payment via Square, and sending confirmation via MailChimp.
naftiko: "0.5"
info:
label: "Online Order Processing Orchestrator"
description: "Processes an online order by validating the menu items at the selected store, creating the order in the POS system, processing payment via Square, and sending confirmation via MailChimp."
tags:
- ordering
- payments
- square
- mailchimp
capability:
exposes:
- type: mcp
namespace: online-ordering
port: 8080
tools:
- name: process-online-order
description: "Process an online order from menu validation through payment and confirmation."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: order_items
in: body
type: array
description: "List of order items with quantities."
- name: customer_email
in: body
type: string
description: "The customer email address."
- name: payment_token
in: body
type: string
description: "The payment method token from the checkout."
steps:
- name: validate-menu
type: call
call: "ordering-api.validate-items"
with:
store_id: "{{store_id}}"
items: "{{order_items}}"
- name: create-order
type: call
call: "ordering-api.create-order"
with:
store_id: "{{store_id}}"
items: "{{validate-menu.validated_items}}"
total: "{{validate-menu.total}}"
- name: process-payment
type: call
call: "square.create-payment"
with:
amount: "{{validate-menu.total}}"
source_id: "{{payment_token}}"
order_id: "{{create-order.order_id}}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template_name: "order_confirmation"
to_email: "{{customer_email}}"
merge_vars:
order_number: "{{create-order.order_id}}"
total: "{{validate-menu.total}}"
store_name: "{{create-order.store_name}}"
pickup_time: "{{create-order.estimated_pickup}}"
consumes:
- type: http
namespace: ordering-api
baseUri: "https://api.subway.com/ordering/v1"
authentication:
type: bearer
token: "$secrets.subway_ordering_token"
resources:
- name: validation
path: "/stores/{{store_id}}/validate-items"
inputParameters:
- name: store_id
in: path
operations:
- name: validate-items
method: POST
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: square
baseUri: "https://connect.squareup.com/v2"
authentication:
type: bearer
token: "$secrets.square_token"
resources:
- name: payments
path: "/payments"
operations:
- name: create-payment
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Retrieves a point-of-sale transaction by transaction ID.
naftiko: "0.5"
info:
label: "POS Transaction Lookup"
description: "Retrieves a point-of-sale transaction by transaction ID."
tags:
- operations
- pos
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: get-pos
description: "Retrieves a point-of-sale transaction by transaction ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The pos transaction lookup identifier."
call: "operations-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: operations-api
baseUri: "https://api.subway.com/operations/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: pos
path: "/pos/transaction/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-pos
method: GET
Triggers a refresh of the franchise performance Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Franchise Dashboard"
description: "Triggers a refresh of the franchise performance Power BI dataset."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a refresh of the franchise performance Power BI dataset."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi franchise dashboard identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.subway.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: power
path: "/power/bi/franchise/dashboard/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Rolls out a menu price change across affected stores by updating the menu system, notifying franchisees via MailChimp, and logging the change in Salesforce.
naftiko: "0.5"
info:
label: "Price Change Orchestrator"
description: "Rolls out a menu price change across affected stores by updating the menu system, notifying franchisees via MailChimp, and logging the change in Salesforce."
tags:
- menu
- franchise
- mailchimp
- salesforce
capability:
exposes:
- type: mcp
namespace: price-management
port: 8080
tools:
- name: rollout-price-change
description: "Roll out a menu price change to affected franchise stores."
inputParameters:
- name: item_id
in: body
type: string
description: "The menu item identifier."
- name: new_price
in: body
type: string
description: "The new price."
- name: effective_date
in: body
type: string
description: "The effective date in YYYY-MM-DD format."
- name: region_ids
in: body
type: array
description: "List of affected region identifiers."
steps:
- name: update-menu-prices
type: call
call: "menu-api.update-price"
with:
item: "{{item_id}}"
price: "{{new_price}}"
effective: "{{effective_date}}"
regions: "{{region_ids}}"
- name: notify-franchisees
type: call
call: "mailchimp.send-transactional"
with:
template_name: "price_change_notice"
recipients: "{{update-menu-prices.affected_owner_emails}}"
merge_vars:
item_name: "{{update-menu-prices.item_name}}"
new_price: "{{new_price}}"
effective_date: "{{effective_date}}"
- name: log-change
type: call
call: "salesforce.create-activity"
with:
type: "price_change"
item: "{{item_id}}"
new_price: "{{new_price}}"
regions: "{{region_ids}}"
consumes:
- type: http
namespace: menu-api
baseUri: "https://api.subway.com/menu/v1"
authentication:
type: bearer
token: "$secrets.subway_menu_token"
resources:
- name: prices
path: "/items/{{item}}/price"
inputParameters:
- name: item
in: path
operations:
- name: update-price
method: PUT
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: salesforce
baseUri: "https://subway.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: activities
path: "/sobjects/Task"
operations:
- name: create-activity
method: POST
Evaluates potential store locations by analyzing demographics and traffic patterns.
naftiko: "0.5"
info:
label: "Real Estate Site Selection Pipeline"
description: "Evaluates potential store locations by analyzing demographics and traffic patterns."
tags:
- franchise
- google-maps
- power-bi
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: run-real-estate-site-selection-pipeline
description: "Evaluates potential store locations by analyzing demographics and traffic patterns."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Real Estate Site Selection Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Aggregates sales data across all stores in a region, generates a performance comparison, and posts the report to the regional Microsoft Teams channel and SharePoint.
naftiko: "0.5"
info:
label: "Regional Sales Report Orchestrator"
description: "Aggregates sales data across all stores in a region, generates a performance comparison, and posts the report to the regional Microsoft Teams channel and SharePoint."
tags:
- analytics
- franchise
- microsoft-teams
- sharepoint
capability:
exposes:
- type: mcp
namespace: regional-reporting
port: 8080
tools:
- name: generate-regional-report
description: "Generate a regional sales performance report and distribute to Teams and SharePoint."
inputParameters:
- name: region_id
in: body
type: string
description: "The region identifier."
- name: report_period
in: body
type: string
description: "The reporting period (e.g., 2026-Q1, 2026-03)."
steps:
- name: get-regional-sales
type: call
call: "pos-api.get-regional-summary"
with:
region: "{{region_id}}"
period: "{{report_period}}"
- name: upload-report
type: call
call: "sharepoint.update-file"
with:
site_id: "regional_reports"
file_path: "SalesReports/{{region_id}}_{{report_period}}.json"
content: "{{get-regional-sales}}"
- name: notify-region
type: call
call: "msteams.send-channel-message"
with:
team_id: "regional_ops_{{region_id}}"
channel_id: "sales_reports"
text: "Regional report for {{report_period}}: Total revenue: ${{get-regional-sales.total_revenue}}. Top store: {{get-regional-sales.top_store}}. Stores: {{get-regional-sales.store_count}}."
consumes:
- type: http
namespace: pos-api
baseUri: "https://api.subway.com/pos/v1"
authentication:
type: bearer
token: "$secrets.subway_pos_token"
resources:
- name: regional-summaries
path: "/regions/{{region}}/summary?period={{period}}"
inputParameters:
- name: region
in: path
- name: period
in: query
operations:
- name: get-regional-summary
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: update-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Searches for a franchise account in Salesforce by store name or ID.
naftiko: "0.5"
info:
label: "Salesforce Franchise Account Lookup"
description: "Searches for a franchise account in Salesforce by store name or ID."
tags:
- franchise
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: search-franchise-account
description: "Search for a franchise account in Salesforce."
inputParameters:
- name: search_term
in: body
type: string
description: "The store name or ID to search for."
call: "salesforce.search-accounts"
with:
query: "{{search_term}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://subway.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/search?q={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-accounts
method: GET
Retrieves franchise development lead from Salesforce.
naftiko: "0.5"
info:
label: "Salesforce Franchise Lead Lookup"
description: "Retrieves franchise development lead from Salesforce."
tags:
- franchise
- salesforce
capability:
exposes:
- type: mcp
namespace: franchise
port: 8080
tools:
- name: get-salesforce
description: "Retrieves franchise development lead from Salesforce."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce franchise lead lookup identifier."
call: "franchise-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: salesforce
path: "/salesforce/franchise/lead/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Checks ingredient inventory levels in SAP for a distribution center.
naftiko: "0.5"
info:
label: "SAP Ingredient Inventory"
description: "Checks ingredient inventory levels in SAP for a distribution center."
tags:
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: get-sap
description: "Checks ingredient inventory levels in SAP for a distribution center."
inputParameters:
- name: entity_id
in: body
type: string
description: "The sap ingredient inventory identifier."
call: "supply-chain-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: supply-chain-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: sap
path: "/sap/ingredient/inventory/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-sap
method: GET
Launches seasonal promotions by configuring POS discounts, creating email campaigns, and posting on social media.
naftiko: "0.5"
info:
label: "Seasonal Promotion Orchestrator"
description: "Launches seasonal promotions by configuring POS discounts, creating email campaigns, and posting on social media."
tags:
- marketing
- mailchimp
- pos
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-seasonal-promotion-orchestrator
description: "Launches seasonal promotions by configuring POS discounts, creating email campaigns, and posting on social media."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Seasonal Promotion Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a new IT support ticket in ServiceNow for franchise or corporate system issues.
naftiko: "0.5"
info:
label: "ServiceNow IT Ticket Creator"
description: "Creates a new IT support ticket in ServiceNow for franchise or corporate system issues."
tags:
- it-support
- servicenow
capability:
exposes:
- type: mcp
namespace: it-support
port: 8080
tools:
- name: create-it-ticket
description: "Create a new ServiceNow IT support incident."
inputParameters:
- name: short_description
in: body
type: string
description: "Brief description of the issue."
- name: category
in: body
type: string
description: "The incident category."
- name: store_id
in: body
type: string
description: "The affected store identifier, if applicable."
call: "servicenow.create-incident"
with:
short_description: "{{short_description}}"
category: "{{category}}"
store_id: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://subway.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
Retrieves operations manual documents from the SharePoint franchise operations library.
naftiko: "0.5"
info:
label: "SharePoint Operations Manual Retrieval"
description: "Retrieves operations manual documents from the SharePoint franchise operations library."
tags:
- franchise
- sharepoint
- documents
capability:
exposes:
- type: mcp
namespace: ops-docs
port: 8080
tools:
- name: get-operations-document
description: "Retrieve a franchise operations document from SharePoint."
inputParameters:
- name: document_name
in: body
type: string
description: "The document name."
call: "sharepoint.get-document"
with:
site_id: "franchise_operations"
file_path: "Manuals/{{document_name}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{file_path}}"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-document
method: GET
Runs a franchise analytics query against Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Franchise Analytics"
description: "Runs a franchise analytics query against Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs a franchise analytics query against Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake franchise analytics identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.subway.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: snowflake
path: "/snowflake/franchise/analytics/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Publishes a marketing campaign post to Twitter, Instagram, and Facebook simultaneously, then logs the campaign activity in HubSpot.
naftiko: "0.5"
info:
label: "Social Media Campaign Publisher"
description: "Publishes a marketing campaign post to Twitter, Instagram, and Facebook simultaneously, then logs the campaign activity in HubSpot."
tags:
- marketing
- social-media
- twitter
- instagram
- facebook
- hubspot
capability:
exposes:
- type: mcp
namespace: social-publishing
port: 8080
tools:
- name: publish-social-campaign
description: "Publish a marketing campaign post across Twitter, Instagram, and Facebook, and log it in HubSpot."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name."
- name: post_text
in: body
type: string
description: "The post text."
- name: image_url
in: body
type: string
description: "The image URL to include."
steps:
- name: post-twitter
type: call
call: "twitter.create-tweet"
with:
text: "{{post_text}}"
- name: post-instagram
type: call
call: "instagram.create-post"
with:
caption: "{{post_text}}"
image_url: "{{image_url}}"
- name: post-facebook
type: call
call: "facebook.create-post"
with:
message: "{{post_text}}"
link: "{{image_url}}"
- name: log-campaign
type: call
call: "hubspot.log-activity"
with:
campaign_name: "{{campaign_name}}"
channels: "twitter,instagram,facebook"
post_ids:
twitter: "{{post-twitter.id}}"
instagram: "{{post-instagram.id}}"
facebook: "{{post-facebook.id}}"
consumes:
- type: http
namespace: twitter
baseUri: "https://api.twitter.com/2"
authentication:
type: bearer
token: "$secrets.twitter_bearer_token"
resources:
- name: tweets
path: "/tweets"
operations:
- name: create-tweet
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media
path: "/me/media"
operations:
- name: create-post
method: POST
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.facebook_page_token"
resources:
- name: feed
path: "/me/feed"
operations:
- name: create-post
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: activities
path: "/objects/marketing_events"
operations:
- name: log-activity
method: POST
Queries SolarWinds for the health status of network devices at franchise store locations.
naftiko: "0.5"
info:
label: "SolarWinds Store Network Monitor"
description: "Queries SolarWinds for the health status of network devices at franchise store locations."
tags:
- infrastructure
- solarwinds
- network
capability:
exposes:
- type: mcp
namespace: network-health
port: 8080
tools:
- name: get-store-network-health
description: "Get network device health for a franchise store from SolarWinds."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
call: "solarwinds.get-node-status"
with:
group: "{{store_id}}"
consumes:
- type: http
namespace: solarwinds
baseUri: "https://solarwinds.subway.com/SolarWinds/InformationService/v3/Json"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: nodes
path: "/Query?query=SELECT+NodeName,Status+FROM+Orion.Nodes+WHERE+GroupName='{{group}}'"
inputParameters:
- name: group
in: query
operations:
- name: get-node-status
method: GET
Processes a refund for a customer order through the Square payment system.
naftiko: "0.5"
info:
label: "Square Payment Refund Processor"
description: "Processes a refund for a customer order through the Square payment system."
tags:
- payments
- square
- refunds
capability:
exposes:
- type: mcp
namespace: refunds
port: 8080
tools:
- name: process-refund
description: "Process a payment refund through Square."
inputParameters:
- name: payment_id
in: body
type: string
description: "The Square payment ID to refund."
- name: amount
in: body
type: string
description: "The refund amount in cents."
- name: reason
in: body
type: string
description: "The reason for the refund."
call: "square.create-refund"
with:
payment_id: "{{payment_id}}"
amount: "{{amount}}"
reason: "{{reason}}"
consumes:
- type: http
namespace: square
baseUri: "https://connect.squareup.com/v2"
authentication:
type: bearer
token: "$secrets.square_token"
resources:
- name: refunds
path: "/refunds"
operations:
- name: create-refund
method: POST
Manages store closures by deactivating POS terminals, archiving data, and notifying stakeholders.
naftiko: "0.5"
info:
label: "Store Closure Orchestrator"
description: "Manages store closures by deactivating POS terminals, archiving data, and notifying stakeholders."
tags:
- operations
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-store-closure-orchestrator
description: "Manages store closures by deactivating POS terminals, archiving data, and notifying stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Store Closure Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves daily labor cost and hours for a franchise store.
naftiko: "0.5"
info:
label: "Store Daily Labor Report"
description: "Retrieves daily labor cost and hours for a franchise store."
tags:
- operations
- workforce
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: get-store
description: "Retrieves daily labor cost and hours for a franchise store."
inputParameters:
- name: entity_id
in: body
type: string
description: "The store daily labor report identifier."
call: "operations-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: operations-api
baseUri: "https://api.subway.com/operations/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: store
path: "/store/daily/labor/report/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-store
method: GET
Manages store equipment lifecycle by tracking assets in ServiceNow and scheduling maintenance.
naftiko: "0.5"
info:
label: "Store Equipment Lifecycle Pipeline"
description: "Manages store equipment lifecycle by tracking assets in ServiceNow and scheduling maintenance."
tags:
- operations
- servicenow
- sap
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-store-equipment-lifecycle-pipeline
description: "Manages store equipment lifecycle by tracking assets in ServiceNow and scheduling maintenance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Store Equipment Lifecycle Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the food safety and health inspection score for a store.
naftiko: "0.5"
info:
label: "Store Health Score Lookup"
description: "Retrieves the food safety and health inspection score for a store."
tags:
- compliance
- food-safety
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: get-store
description: "Retrieves the food safety and health inspection score for a store."
inputParameters:
- name: entity_id
in: body
type: string
description: "The store health score lookup identifier."
call: "compliance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://api.subway.com/compliance/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: store
path: "/store/health/score/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-store
method: GET
Coordinates marketing for new store openings by creating campaigns and tracking results.
naftiko: "0.5"
info:
label: "Store Opening Marketing Orchestrator"
description: "Coordinates marketing for new store openings by creating campaigns and tracking results."
tags:
- marketing
- mailchimp
- google-analytics
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-store-opening-marketing-orchestrator
description: "Coordinates marketing for new store openings by creating campaigns and tracking results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Store Opening Marketing Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages store renovation projects by creating work orders in ServiceNow, tracking contractor progress, and notifying operations.
naftiko: "0.5"
info:
label: "Store Renovation Orchestrator"
description: "Manages store renovation projects by creating work orders in ServiceNow, tracking contractor progress, and notifying operations."
tags:
- operations
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: run-store-renovation-orchestrator
description: "Manages store renovation projects by creating work orders in ServiceNow, tracking contractor progress, and notifying operations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Store Renovation Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a payment transaction from Stripe by payment intent ID.
naftiko: "0.5"
info:
label: "Stripe Payment Lookup"
description: "Retrieves a payment transaction from Stripe by payment intent ID."
tags:
- finance
- stripe
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-stripe
description: "Retrieves a payment transaction from Stripe by payment intent ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The stripe payment lookup identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.subway.com/finance/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: stripe
path: "/stripe/payment/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-stripe
method: GET
Onboards new food suppliers by creating vendor records in SAP and verifying food safety certifications.
naftiko: "0.5"
info:
label: "Supplier Onboarding Orchestrator"
description: "Onboards new food suppliers by creating vendor records in SAP and verifying food safety certifications."
tags:
- procurement
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-supplier-onboarding-orchestrator
description: "Onboards new food suppliers by creating vendor records in SAP and verifying food safety certifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Supplier Onboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates a supplier performance report by pulling delivery data from the supply chain system and quality metrics, posting results to Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Performance Report"
description: "Generates a supplier performance report by pulling delivery data from the supply chain system and quality metrics, posting results to Microsoft Teams."
tags:
- supply-chain
- suppliers
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-reporting
port: 8080
tools:
- name: generate-supplier-report
description: "Generate a supplier performance report and notify the procurement team."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The supplier identifier."
- name: report_period
in: body
type: string
description: "The reporting period."
steps:
- name: get-supplier-metrics
type: call
call: "supply-api.get-supplier-performance"
with:
supplier: "{{supplier_id}}"
period: "{{report_period}}"
- name: post-report
type: call
call: "msteams.send-channel-message"
with:
team_id: "procurement"
channel_id: "supplier_reviews"
text: "Supplier Report for {{report_period}}: {{get-supplier-metrics.supplier_name}}. On-time delivery: {{get-supplier-metrics.on_time_pct}}%. Quality score: {{get-supplier-metrics.quality_score}}/100."
consumes:
- type: http
namespace: supply-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_supply_token"
resources:
- name: supplier-performance
path: "/suppliers/{{supplier}}/performance?period={{period}}"
inputParameters:
- name: supplier
in: path
- name: period
in: query
operations:
- name: get-supplier-performance
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Manages supply chain disruptions by sourcing alternatives from backup suppliers.
naftiko: "0.5"
info:
label: "Supply Chain Disruption Orchestrator"
description: "Manages supply chain disruptions by sourcing alternatives from backup suppliers."
tags:
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: run-supply-chain-disruption-orchestrator
description: "Manages supply chain disruptions by sourcing alternatives from backup suppliers."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Supply Chain Disruption Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Places a supply chain order for a franchise by checking inventory levels, creating a purchase order in the procurement system, and confirming the order with the franchisee via MailChimp.
naftiko: "0.5"
info:
label: "Supply Chain Order Orchestrator"
description: "Places a supply chain order for a franchise by checking inventory levels, creating a purchase order in the procurement system, and confirming the order with the franchisee via MailChimp."
tags:
- supply-chain
- procurement
- mailchimp
- inventory
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: place-supply-order
description: "Check inventory, create a supply order, and notify the franchisee."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: items
in: body
type: array
description: "List of supply items with quantities."
steps:
- name: check-inventory
type: call
call: "supply-api.check-availability"
with:
items: "{{items}}"
- name: create-order
type: call
call: "supply-api.create-order"
with:
store_id: "{{store_id}}"
items: "{{check-inventory.available_items}}"
- name: get-store-contact
type: call
call: "franchise-api.get-store"
with:
store_id: "{{store_id}}"
- name: notify-franchisee
type: call
call: "mailchimp.send-transactional"
with:
template_name: "supply_order_confirmation"
to_email: "{{get-store-contact.owner_email}}"
merge_vars:
order_number: "{{create-order.order_number}}"
delivery_date: "{{create-order.estimated_delivery}}"
store_name: "{{get-store-contact.store_name}}"
consumes:
- type: http
namespace: supply-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_supply_token"
resources:
- name: availability
path: "/availability"
operations:
- name: check-availability
method: POST
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: stores
path: "/stores/{{store_id}}"
inputParameters:
- name: store_id
in: path
operations:
- name: get-store
method: GET
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Retrieves sales trend data from a Tableau dashboard view.
naftiko: "0.5"
info:
label: "Tableau Sales Trend Viewer"
description: "Retrieves sales trend data from a Tableau dashboard view."
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-tableau
description: "Retrieves sales trend data from a Tableau dashboard view."
inputParameters:
- name: entity_id
in: body
type: string
description: "The tableau sales trend viewer identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.subway.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: tableau
path: "/tableau/sales/trend/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-tableau
method: GET
When a temperature monitoring alert fires at a franchise store, creates a food safety event, opens a ServiceNow maintenance ticket, and notifies the store manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Temperature Monitoring Alert Handler"
description: "When a temperature monitoring alert fires at a franchise store, creates a food safety event, opens a ServiceNow maintenance ticket, and notifies the store manager via Microsoft Teams."
tags:
- food-safety
- monitoring
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: temp-monitoring
port: 8080
tools:
- name: handle-temperature-alert
description: "Process a temperature monitoring alert from food safety through maintenance and notifications."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: equipment_id
in: body
type: string
description: "The equipment identifier (refrigerator, freezer)."
- name: current_temp
in: body
type: string
description: "The current temperature reading."
- name: threshold_temp
in: body
type: string
description: "The safe temperature threshold."
steps:
- name: create-food-safety-event
type: call
call: "food-safety-api.create-event"
with:
store_id: "{{store_id}}"
equipment: "{{equipment_id}}"
current_temp: "{{current_temp}}"
threshold: "{{threshold_temp}}"
type: "temperature_excursion"
- name: open-maintenance-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Temperature alert: Store {{store_id}} - {{equipment_id}}"
category: "equipment_maintenance"
priority: "1"
description: "Temperature excursion at store {{store_id}}. Equipment: {{equipment_id}}. Current: {{current_temp}}, Threshold: {{threshold_temp}}."
- name: get-store
type: call
call: "franchise-api.get-store"
with:
store_id: "{{store_id}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-store.manager_email}}"
text: "URGENT: Temperature alert at {{get-store.store_name}}. Equipment {{equipment_id}} at {{current_temp}} (threshold: {{threshold_temp}}). Maintenance ticket: {{open-maintenance-ticket.number}}."
consumes:
- type: http
namespace: food-safety-api
baseUri: "https://api.subway.com/food-safety/v1"
authentication:
type: bearer
token: "$secrets.subway_food_safety_token"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: "https://subway.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: franchise-api
baseUri: "https://api.subway.com/franchise/v1"
authentication:
type: bearer
token: "$secrets.subway_franchise_token"
resources:
- name: stores
path: "/stores/{{store_id}}"
inputParameters:
- name: store_id
in: path
operations:
- name: get-store
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the status of an Uber Eats delivery order.
naftiko: "0.5"
info:
label: "Uber Eats Order Status"
description: "Retrieves the status of an Uber Eats delivery order."
tags:
- delivery
- uber-eats
capability:
exposes:
- type: mcp
namespace: delivery
port: 8080
tools:
- name: get-uber
description: "Retrieves the status of an Uber Eats delivery order."
inputParameters:
- name: entity_id
in: body
type: string
description: "The uber eats order status identifier."
call: "delivery-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://api.subway.com/delivery/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: uber
path: "/uber/eats/order/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-uber
method: GET
Reconciles vendor payments by matching invoices in SAP with delivery receipts.
naftiko: "0.5"
info:
label: "Vendor Payment Reconciliation Pipeline"
description: "Reconciles vendor payments by matching invoices in SAP with delivery receipts."
tags:
- finance
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-vendor-payment-reconciliation-pipeline
description: "Reconciles vendor payments by matching invoices in SAP with delivery receipts."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Payment Reconciliation Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles vendor quality incidents by logging complaints and initiating supplier corrective actions.
naftiko: "0.5"
info:
label: "Vendor Quality Incident Pipeline"
description: "Handles vendor quality incidents by logging complaints and initiating supplier corrective actions."
tags:
- quality
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: run-vendor-quality-incident-pipeline
description: "Handles vendor quality incidents by logging complaints and initiating supplier corrective actions."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Quality Incident Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates a food waste report for a franchise by pulling waste tracking data and uploading the report to SharePoint for sustainability tracking.
naftiko: "0.5"
info:
label: "Waste Management Report Generator"
description: "Generates a food waste report for a franchise by pulling waste tracking data and uploading the report to SharePoint for sustainability tracking."
tags:
- sustainability
- franchise
- sharepoint
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-waste-report
description: "Generate a food waste report for a store and upload to SharePoint."
inputParameters:
- name: store_id
in: body
type: string
description: "The franchise store identifier."
- name: report_period
in: body
type: string
description: "The report period (e.g., 2026-03)."
steps:
- name: get-waste-data
type: call
call: "supply-api.get-waste-tracking"
with:
store: "{{store_id}}"
period: "{{report_period}}"
- name: upload-report
type: call
call: "sharepoint.update-file"
with:
site_id: "sustainability"
file_path: "WasteReports/{{store_id}}_{{report_period}}.json"
content: "{{get-waste-data}}"
consumes:
- type: http
namespace: supply-api
baseUri: "https://api.subway.com/supply-chain/v1"
authentication:
type: bearer
token: "$secrets.subway_supply_token"
resources:
- name: waste
path: "/stores/{{store}}/waste-tracking?period={{period}}"
inputParameters:
- name: store
in: path
- name: period
in: query
operations:
- name: get-waste-tracking
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: update-file
method: PUT
Sends order status updates to customers via WhatsApp Business when their order progresses through preparation stages.
naftiko: "0.5"
info:
label: "WhatsApp Order Status Notifier"
description: "Sends order status updates to customers via WhatsApp Business when their order progresses through preparation stages."
tags:
- ordering
- whatsapp
- notifications
capability:
exposes:
- type: mcp
namespace: order-notifications
port: 8080
tools:
- name: send-order-update
description: "Send an order status update to a customer via WhatsApp."
inputParameters:
- name: phone_number
in: body
type: string
description: "The customer phone number in international format."
- name: order_id
in: body
type: string
description: "The order ID."
- name: status
in: body
type: string
description: "The order status (received, preparing, ready, delivered)."
call: "whatsapp.send-message"
with:
to: "{{phone_number}}"
template: "order_status_{{status}}"
parameters:
order_id: "{{order_id}}"
consumes:
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.whatsapp_business_token"
resources:
- name: messages
path: "/messages"
operations:
- name: send-message
method: POST
Retrieves employee work schedule from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Schedule"
description: "Retrieves employee work schedule from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee work schedule from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee schedule identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.subway.com/hr/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: workday
path: "/workday/employee/schedule/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET
Optimizes workforce schedules by analyzing sales forecasts and generating optimal shifts.
naftiko: "0.5"
info:
label: "Workforce Scheduling Optimization Pipeline"
description: "Optimizes workforce schedules by analyzing sales forecasts and generating optimal shifts."
tags:
- hr
- snowflake
- workday
- whatsapp
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-workforce-scheduling-optimization-pipeline
description: "Optimizes workforce schedules by analyzing sales forecasts and generating optimal shifts."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Workforce Scheduling Optimization Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.subway.com/v1"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.subway.com/v2"
authentication:
type: bearer
token: "$secrets.subway_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a customer support ticket in Zendesk for Subway digital ordering issues.
naftiko: "0.5"
info:
label: "Zendesk Customer Support Ticket"
description: "Creates a customer support ticket in Zendesk for Subway digital ordering issues."
tags:
- customer-service
- zendesk
- support
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: create-support-ticket
description: "Create a Zendesk support ticket for a customer issue."
inputParameters:
- name: customer_email
in: body
type: string
description: "The customer email address."
- name: subject
in: body
type: string
description: "The ticket subject."
- name: description
in: body
type: string
description: "The issue description."
- name: priority
in: body
type: string
description: "The ticket priority (low, normal, high, urgent)."
call: "zendesk.create-ticket"
with:
requester_email: "{{customer_email}}"
subject: "{{subject}}"
description: "{{description}}"
priority: "{{priority}}"
consumes:
- type: http
namespace: zendesk
baseUri: "https://subway.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets"
operations:
- name: create-ticket
method: POST