Subway Capabilities

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

Sort
Expand

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