McDonalds Capabilities

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

Sort
Expand

Queries Adobe Analytics for campaign performance metrics by campaign ID. Returns impressions, clicks, conversion rate, and revenue attribution for the marketing team.

naftiko: "0.5"
info:
  label: "Adobe Analytics Campaign Performance"
  description: "Queries Adobe Analytics for campaign performance metrics by campaign ID. Returns impressions, clicks, conversion rate, and revenue attribution for the marketing team."
  tags:
    - marketing
    - adobe-analytics
    - campaign-performance
    - digital-advertising
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Query Adobe Analytics for campaign metrics by campaign ID. Returns impressions, clicks, conversion rate, and revenue."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Adobe Analytics campaign identifier."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          call: "adobe-analytics.get-report"
          with:
            rsid: "mcd-global"
            campaign_id: "{{campaign_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: impressions
              type: string
              mapping: "$.report.data.totals[0]"
            - name: clicks
              type: string
              mapping: "$.report.data.totals[1]"
            - name: conversion_rate
              type: string
              mapping: "$.report.data.totals[2]"
            - name: revenue
              type: string
              mapping: "$.report.data.totals[3]"
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/{{rsid}}/reports"
          inputParameters:
            - name: rsid
              in: path
          operations:
            - name: get-report
              method: POST

Searches Confluence for restaurant operations playbook content by keyword. Returns page title, excerpt, URL, and last updated date for operations teams seeking standard procedures.

naftiko: "0.5"
info:
  label: "Confluence Restaurant Operations Playbook Search"
  description: "Searches Confluence for restaurant operations playbook content by keyword. Returns page title, excerpt, URL, and last updated date for operations teams seeking standard procedures."
  tags:
    - franchise-ops
    - confluence
    - knowledge-management
    - operations
capability:
  exposes:
    - type: mcp
      namespace: ops-knowledge
      port: 8080
      tools:
        - name: search-operations-playbook
          description: "Search Confluence for restaurant operations playbook content. Returns page title, excerpt, URL, and last updated date."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The keyword or phrase to search for in the operations playbook."
          call: "confluence.search-content"
          with:
            cql: "space = MCD_OPS AND text ~ \"{{search_query}}\""
          outputParameters:
            - name: page_title
              type: string
              mapping: "$.results[0].title"
            - name: excerpt
              type: string
              mapping: "$.results[0].excerpt"
            - name: url
              type: string
              mapping: "$.results[0]._links.webui"
            - name: last_updated
              type: string
              mapping: "$.results[0].version.when"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search-content
              method: GET

On new crew member creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint training folder, enrolls in Archways to Opportunity on the LMS, and sends a Microsoft Teams welcome message to the store manager.

naftiko: "0.5"
info:
  label: "Crew Onboarding Orchestrator"
  description: "On new crew member creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint training folder, enrolls in Archways to Opportunity on the LMS, and sends a Microsoft Teams welcome message to the store manager."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: crew-onboarding
      port: 8080
      tools:
        - name: trigger-crew-onboarding
          description: "Given a Workday employee ID and start date, orchestrate crew member onboarding across ServiceNow, SharePoint, LMS, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new crew member."
            - name: start_date
              in: body
              type: string
              description: "The crew member start date in YYYY-MM-DD format."
            - name: store_number
              in: body
              type: string
              description: "The restaurant store number."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Crew onboarding: {{get-employee.full_name}} — Store {{store_number}}"
                category: "hr_onboarding"
                assigned_group: "Restaurant_IT"
                description: "New crew member {{get-employee.full_name}} starting {{start_date}} at store {{store_number}}. Provision POS credentials, uniform order, and training materials."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "mcd-crew-onboarding"
                folder_path: "TrainingDocs/Store{{store_number}}/{{get-employee.full_name}}_{{start_date}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.manager_email}}"
                text: "New crew member {{get-employee.first_name}} {{get-employee.last_name}} starts {{start_date}} at Store {{store_number}}. Onboarding ticket: {{open-ticket.number}}. Training folder: {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.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

When a store manager nominates a crew member for recognition, logs the nomination in SharePoint, updates the employee profile in Workday with an achievement, sends a congratulatory email via SFMC, and notifies the regional HR director in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Crew Recognition and Rewards Workflow"
  description: "When a store manager nominates a crew member for recognition, logs the nomination in SharePoint, updates the employee profile in Workday with an achievement, sends a congratulatory email via SFMC, and notifies the regional HR director in Microsoft Teams."
  tags:
    - hr
    - employee-engagement
    - sharepoint
    - workday
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: crew-recognition
      port: 8080
      tools:
        - name: process-crew-nomination
          description: "Given a worker ID, nomination reason, and nominator, log nomination, update Workday, send congrats, and notify HR."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID of the nominated crew member."
            - name: nomination_reason
              in: body
              type: string
              description: "The reason for the recognition nomination."
            - name: award_type
              in: body
              type: string
              description: "The award type (e.g., Crew of the Month, Service Star, Safety Champion)."
            - name: nominator_upn
              in: body
              type: string
              description: "The Microsoft UPN of the nominating manager."
            - name: hr_director_upn
              in: body
              type: string
              description: "The Microsoft UPN of the regional HR director."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: log-nomination
              type: call
              call: "sharepoint.create-list-item"
              with:
                site_id: "mcd-crew-recognition"
                list_name: "Nominations"
                employee_name: "{{get-employee.full_name}}"
                store: "{{get-employee.location}}"
                award_type: "{{award_type}}"
                reason: "{{nomination_reason}}"
                nominator: "{{nominator_upn}}"
            - name: update-workday
              type: call
              call: "workday.add-achievement"
              with:
                worker_id: "{{worker_id}}"
                achievement: "{{award_type}}"
                description: "{{nomination_reason}}"
            - name: send-congrats
              type: call
              call: "sfmc.trigger-send"
              with:
                triggered_send_key: "CrewRecognition"
                subscriber_key: "{{get-employee.work_email}}"
                employee_name: "{{get-employee.first_name}}"
                award_type: "{{award_type}}"
            - name: notify-hr
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{hr_director_upn}}"
                text: "Crew Recognition: {{get-employee.full_name}} ({{get-employee.location}}) nominated for {{award_type}}. Reason: {{nomination_reason}}. Workday updated. Congrats email sent."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
        - name: achievements
          path: "/workers/{{worker_id}}/achievements"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: add-achievement
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: list-items
          path: "/{{site_id}}/lists/{{list_name}}/items"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
          operations:
            - name: create-list-item
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-sends
          path: "/messaging/v1/messageDefinitionSends/key:{{triggered_send_key}}/send"
          inputParameters:
            - name: triggered_send_key
              in: path
          operations:
            - name: trigger-send
              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

When a crew member completes a training module in the LMS, updates their Workday learning record, logs completion in SharePoint, and notifies the store manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Crew Training Completion Tracker"
  description: "When a crew member completes a training module in the LMS, updates their Workday learning record, logs completion in SharePoint, and notifies the store manager in Microsoft Teams."
  tags:
    - hr
    - training
    - workday
    - sharepoint
    - microsoft-teams
    - learning-development
capability:
  exposes:
    - type: mcp
      namespace: crew-training
      port: 8080
      tools:
        - name: record-training-completion
          description: "Given a worker ID and training module, update Workday, log to SharePoint, and notify the store manager."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID of the crew member."
            - name: module_name
              in: body
              type: string
              description: "The name of the completed training module."
            - name: completion_date
              in: body
              type: string
              description: "The completion date in YYYY-MM-DD format."
            - name: score
              in: body
              type: string
              description: "The training module score or pass/fail status."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: update-learning-record
              type: call
              call: "workday.update-learning"
              with:
                worker_id: "{{worker_id}}"
                module_name: "{{module_name}}"
                completion_date: "{{completion_date}}"
                score: "{{score}}"
            - name: log-completion
              type: call
              call: "sharepoint.create-list-item"
              with:
                site_id: "mcd-crew-training"
                list_name: "TrainingCompletions"
                employee_name: "{{get-employee.full_name}}"
                store_number: "{{get-employee.location}}"
                module: "{{module_name}}"
                date: "{{completion_date}}"
                score: "{{score}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.manager_email}}"
                text: "Training Complete: {{get-employee.full_name}} completed {{module_name}} on {{completion_date}} with score: {{score}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
        - name: learning
          path: "/workers/{{worker_id}}/learning"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: update-learning
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: list-items
          path: "/{{site_id}}/lists/{{list_name}}/items"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
          operations:
            - name: create-list-item
              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

When a customer complaint is received via the app, creates a Zendesk ticket, looks up the customer loyalty profile in SFMC, retrieves the store manager from Workday, and notifies the manager in Microsoft Teams with customer history.

naftiko: "0.5"
info:
  label: "Customer Complaint Resolution Workflow"
  description: "When a customer complaint is received via the app, creates a Zendesk ticket, looks up the customer loyalty profile in SFMC, retrieves the store manager from Workday, and notifies the manager in Microsoft Teams with customer history."
  tags:
    - customer-service
    - zendesk
    - salesforce
    - workday
    - microsoft-teams
    - loyalty
capability:
  exposes:
    - type: mcp
      namespace: customer-complaints
      port: 8080
      tools:
        - name: process-customer-complaint
          description: "Given complaint details, create a Zendesk ticket, look up loyalty profile, find the store manager, and notify with customer context."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
            - name: complaint_description
              in: body
              type: string
              description: "The customer complaint description."
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number where the incident occurred."
            - name: loyalty_member_id
              in: body
              type: string
              description: "The MyMcDonald's Rewards member ID, if available."
            - name: store_manager_workday_id
              in: body
              type: string
              description: "The Workday ID of the store manager."
          steps:
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                requester_email: "{{customer_email}}"
                subject: "Customer Complaint — Store {{store_id}}"
                description: "{{complaint_description}}"
                tags: "app_complaint,store_{{store_id}}"
            - name: get-loyalty-profile
              type: call
              call: "sfmc.get-data-extension-row"
              with:
                data_extension: "LoyaltyMembers"
                member_id: "{{loyalty_member_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{store_manager_workday_id}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-manager.work_email}}"
                text: "Customer Complaint — Store {{store_id}}: {{complaint_description}}. Customer: {{customer_email}}. Loyalty tier: {{get-loyalty-profile.tier}}. Points: {{get-loyalty-profile.points_balance}}. Zendesk: {{create-ticket.id}}."
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://mcdonalds.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets"
          operations:
            - name: create-ticket
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: data-extensions
          path: "/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
            - name: member_id
              in: query
          operations:
            - name: get-data-extension-row
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              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

Queries Datadog for the health status of a specific restaurant's technology infrastructure by store ID. Returns host status, CPU utilization, and active alerts for the restaurant technology support team.

naftiko: "0.5"
info:
  label: "Datadog Restaurant System Health Check"
  description: "Queries Datadog for the health status of a specific restaurant's technology infrastructure by store ID. Returns host status, CPU utilization, and active alerts for the restaurant technology support team."
  tags:
    - restaurant-technology
    - monitoring
    - datadog
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: store-monitoring
      port: 8080
      tools:
        - name: get-store-health
          description: "Check Datadog for restaurant infrastructure health by store ID. Returns host status, CPU utilization, and active alerts."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The McDonald's restaurant store number."
          call: "datadog.get-host"
          with:
            filter: "store_id:{{store_id}}"
          outputParameters:
            - name: host_status
              type: string
              mapping: "$.host_list[0].up"
            - name: cpu_utilization
              type: string
              mapping: "$.host_list[0].metrics.cpu"
            - name: active_alerts
              type: string
              mapping: "$.host_list[0].alerts_count"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: hosts
          path: "/hosts"
          inputParameters:
            - name: filter
              in: query
          operations:
            - name: get-host
              method: GET

When a delivery order is placed through a third-party partner, syncs the order to the POS system, updates the delivery status tracker in Salesforce, and notifies the kitchen display system via the restaurant integration layer.

naftiko: "0.5"
info:
  label: "Delivery Partner Order Sync"
  description: "When a delivery order is placed through a third-party partner, syncs the order to the POS system, updates the delivery status tracker in Salesforce, and notifies the kitchen display system via the restaurant integration layer."
  tags:
    - restaurant-technology
    - delivery
    - salesforce
    - oracle
    - order-management
capability:
  exposes:
    - type: mcp
      namespace: delivery-ops
      port: 8080
      tools:
        - name: sync-delivery-order
          description: "Given a partner order ID and store ID, sync to POS, update Salesforce tracker, and notify the kitchen display."
          inputParameters:
            - name: partner_order_id
              in: body
              type: string
              description: "The delivery partner order identifier."
            - name: partner_name
              in: body
              type: string
              description: "The delivery partner name (e.g., UberEats, DoorDash)."
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: order_items
              in: body
              type: string
              description: "JSON array of order items with quantities."
            - name: customer_name
              in: body
              type: string
              description: "The customer name for the delivery order."
          steps:
            - name: create-pos-order
              type: call
              call: "simphony.create-order"
              with:
                store_id: "{{store_id}}"
                order_type: "delivery"
                partner: "{{partner_name}}"
                partner_ref: "{{partner_order_id}}"
                items: "{{order_items}}"
            - name: update-tracker
              type: call
              call: "salesforce.create-record"
              with:
                object_type: "Delivery_Order__c"
                partner_order_id: "{{partner_order_id}}"
                partner: "{{partner_name}}"
                store_id: "{{store_id}}"
                pos_order_id: "{{create-pos-order.order_id}}"
                status: "Received"
                customer_name: "{{customer_name}}"
            - name: notify-kitchen
              type: call
              call: "simphony.send-kds-notification"
              with:
                store_id: "{{store_id}}"
                order_id: "{{create-pos-order.order_id}}"
                order_type: "delivery"
                partner: "{{partner_name}}"
  consumes:
    - type: http
      namespace: simphony
      baseUri: "https://mcd-simphony.oracle.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.simphony_token"
      resources:
        - name: orders
          path: "/stores/{{store_id}}/orders"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: create-order
              method: POST
        - name: kds
          path: "/stores/{{store_id}}/kds/notify"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: send-kds-notification
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: custom-objects
          path: "/sobjects/{{object_type}}"
          inputParameters:
            - name: object_type
              in: path
          operations:
            - name: create-record
              method: POST

Pulls historical sales data from Power BI, retrieves weather forecast data, and feeds both into the Azure Machine Learning demand forecasting model, then posts the forecast to the supply chain planning Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Demand Forecasting Data Pipeline"
  description: "Pulls historical sales data from Power BI, retrieves weather forecast data, and feeds both into the Azure Machine Learning demand forecasting model, then posts the forecast to the supply chain planning Microsoft Teams channel."
  tags:
    - supply-chain
    - forecasting
    - power-bi
    - azure-machine-learning
    - microsoft-teams
    - demand-planning
capability:
  exposes:
    - type: mcp
      namespace: demand-forecasting
      port: 8080
      tools:
        - name: generate-demand-forecast
          description: "Given a store ID and forecast period, pull historical sales, get weather data, run ML forecast, and post results."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: forecast_start
              in: body
              type: string
              description: "Forecast period start date in YYYY-MM-DD format."
            - name: forecast_end
              in: body
              type: string
              description: "Forecast period end date in YYYY-MM-DD format."
            - name: planning_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for supply chain planning."
          steps:
            - name: get-historical-sales
              type: call
              call: "powerbi.execute-query"
              with:
                dataset_id: "mcd-historical-sales"
                query: "EVALUATE FILTER(Sales, Sales[StoreID] = \"{{store_id}}\")"
            - name: run-forecast
              type: call
              call: "azure-ml.invoke-endpoint"
              with:
                endpoint_name: "mcd-demand-forecast"
                store_id: "{{store_id}}"
                historical_data: "{{get-historical-sales.rows}}"
                forecast_start: "{{forecast_start}}"
                forecast_end: "{{forecast_end}}"
            - name: post-forecast
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{planning_channel_id}}"
                text: "Demand Forecast — Store {{store_id}} ({{forecast_start}} to {{forecast_end}}): Predicted Daily Avg: {{run-forecast.avg_daily_demand}} units. Peak Day: {{run-forecast.peak_day}} ({{run-forecast.peak_demand}} units). Confidence: {{run-forecast.confidence}}%."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: azure-ml
      baseUri: "https://mcd-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_ml_token"
      resources:
        - name: endpoints
          path: "/score"
          operations:
            - name: invoke-endpoint
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When a new menu promotion is approved, retrieves the creative assets from SharePoint, updates the digital menu board CMS configuration, and notifies regional managers in Microsoft Teams with a preview link.

naftiko: "0.5"
info:
  label: "Digital Menu Board Content Deployment"
  description: "When a new menu promotion is approved, retrieves the creative assets from SharePoint, updates the digital menu board CMS configuration, and notifies regional managers in Microsoft Teams with a preview link."
  tags:
    - restaurant-technology
    - marketing
    - sharepoint
    - microsoft-teams
    - digital-signage
capability:
  exposes:
    - type: mcp
      namespace: menu-board
      port: 8080
      tools:
        - name: deploy-menu-content
          description: "Given a promotion ID and region, retrieve assets from SharePoint, update the menu board CMS, and notify regional managers."
          inputParameters:
            - name: promotion_id
              in: body
              type: string
              description: "The internal promotion identifier."
            - name: region
              in: body
              type: string
              description: "The target region for the menu board update."
            - name: asset_folder_path
              in: body
              type: string
              description: "The SharePoint folder path containing the creative assets."
            - name: regional_manager_upn
              in: body
              type: string
              description: "The Microsoft UPN of the regional manager."
          steps:
            - name: get-assets
              type: call
              call: "sharepoint.list-folder-contents"
              with:
                site_id: "mcd-marketing-assets"
                folder_path: "{{asset_folder_path}}"
            - name: update-cms
              type: call
              call: "menu-cms.deploy-content"
              with:
                promotion_id: "{{promotion_id}}"
                region: "{{region}}"
                asset_urls: "{{get-assets.file_urls}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{regional_manager_upn}}"
                text: "Menu Board Update — Region {{region}}: Promotion {{promotion_id}} deployed. {{get-assets.file_count}} assets uploaded. Preview: {{update-cms.preview_url}}."
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folder-contents
          path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: list-folder-contents
              method: GET
    - type: http
      namespace: menu-cms
      baseUri: "https://api.mcd-menuboards.com/v1"
      authentication:
        type: bearer
        token: "$secrets.menu_cms_token"
      resources:
        - name: deployments
          path: "/promotions/{{promotion_id}}/deploy"
          inputParameters:
            - name: promotion_id
              in: path
          operations:
            - name: deploy-content
              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

Collects drive-thru timing data from the restaurant IoT platform, aggregates in Power BI, and posts daily performance summaries to the operations team Microsoft Teams channel for stores below target.

naftiko: "0.5"
info:
  label: "Drive-Thru Speed of Service Reporting"
  description: "Collects drive-thru timing data from the restaurant IoT platform, aggregates in Power BI, and posts daily performance summaries to the operations team Microsoft Teams channel for stores below target."
  tags:
    - restaurant-technology
    - drive-thru
    - power-bi
    - microsoft-teams
    - performance-management
capability:
  exposes:
    - type: mcp
      namespace: drive-thru-ops
      port: 8080
      tools:
        - name: report-drive-thru-performance
          description: "Given a store ID and date, pull drive-thru timing metrics and post performance summary to the ops team channel."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: report_date
              in: body
              type: string
              description: "The date for the report in YYYY-MM-DD format."
            - name: ops_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for the operations team."
          steps:
            - name: get-timing-data
              type: call
              call: "powerbi.execute-query"
              with:
                dataset_id: "mcd-drive-thru-metrics"
                query: "EVALUATE FILTER(DriveThru, DriveThru[StoreID] = \"{{store_id}}\" && DriveThru[Date] = DATE({{report_date}}))"
            - name: post-summary
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{ops_channel_id}}"
                text: "Drive-Thru Report — Store {{store_id}} ({{report_date}}): Avg Order Time: {{get-timing-data.AvgOrderTime}}s, Avg Service Time: {{get-timing-data.AvgServiceTime}}s, Total Cars: {{get-timing-data.TotalCars}}, Peak Wait: {{get-timing-data.PeakWaitTime}}s."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: execute-query
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves email campaign metrics from Salesforce Marketing Cloud for a specific send, including open rate, click rate, bounces, and unsubscribes, and posts a summary to the marketing team Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Email Campaign Performance Report"
  description: "Retrieves email campaign metrics from Salesforce Marketing Cloud for a specific send, including open rate, click rate, bounces, and unsubscribes, and posts a summary to the marketing team Microsoft Teams channel."
  tags:
    - marketing
    - salesforce
    - email-marketing
    - microsoft-teams
    - campaign-performance
capability:
  exposes:
    - type: mcp
      namespace: email-marketing
      port: 8080
      tools:
        - name: report-email-campaign
          description: "Given an SFMC send ID, retrieve performance metrics and post a summary to the marketing channel."
          inputParameters:
            - name: send_id
              in: body
              type: string
              description: "The Salesforce Marketing Cloud send identifier."
            - name: campaign_name
              in: body
              type: string
              description: "The name of the email campaign."
            - name: marketing_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for the marketing team."
          steps:
            - name: get-send-metrics
              type: call
              call: "sfmc.get-send-summary"
              with:
                send_id: "{{send_id}}"
            - name: post-report
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{marketing_channel_id}}"
                text: "Email Campaign Report — {{campaign_name}}: Sent: {{get-send-metrics.total_sent}}. Open Rate: {{get-send-metrics.open_rate}}%. Click Rate: {{get-send-metrics.click_rate}}%. Bounces: {{get-send-metrics.bounces}}. Unsubscribes: {{get-send-metrics.unsubscribes}}."
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: send-summaries
          path: "/messaging/v1/messageDefinitionSends/{{send_id}}/deliveryRecords"
          inputParameters:
            - name: send_id
              in: path
          operations:
            - name: get-send-summary
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When a Workday schedule conflict is detected, retrieves the affected crew members, checks store staffing levels in the scheduling system, creates a ServiceNow task for the shift manager, and notifies in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Employee Scheduling Conflict Resolution"
  description: "When a Workday schedule conflict is detected, retrieves the affected crew members, checks store staffing levels in the scheduling system, creates a ServiceNow task for the shift manager, and notifies in Microsoft Teams."
  tags:
    - hr
    - scheduling
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: crew-scheduling
      port: 8080
      tools:
        - name: resolve-schedule-conflict
          description: "Given employee IDs and shift details, check staffing levels, create a resolution task, and notify the shift manager."
          inputParameters:
            - name: employee_id_1
              in: body
              type: string
              description: "First conflicting crew member Workday ID."
            - name: employee_id_2
              in: body
              type: string
              description: "Second conflicting crew member Workday ID."
            - name: shift_date
              in: body
              type: string
              description: "The date of the conflict in YYYY-MM-DD format."
            - name: store_number
              in: body
              type: string
              description: "The restaurant store number."
            - name: manager_upn
              in: body
              type: string
              description: "The shift manager Microsoft UPN."
          steps:
            - name: get-employee-1
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id_1}}"
            - name: get-employee-2
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id_2}}"
            - name: create-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Schedule conflict: {{get-employee-1.full_name}} & {{get-employee-2.full_name}} — Store {{store_number}} on {{shift_date}}"
                assigned_group: "Restaurant_Scheduling"
                category: "schedule_conflict"
                description: "Scheduling overlap detected for {{get-employee-1.full_name}} ({{get-employee-1.job_title}}) and {{get-employee-2.full_name}} ({{get-employee-2.job_title}}) at Store {{store_number}} on {{shift_date}}. Please reassign shifts."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{manager_upn}}"
                text: "Schedule Conflict — Store {{store_number}} ({{shift_date}}): {{get-employee-1.full_name}} and {{get-employee-2.full_name}} have overlapping shifts. ServiceNow task: {{create-task.number}}. Please resolve."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When an employee is terminated in Workday, revokes access in Azure Active Directory, closes any open ServiceNow tickets assigned to them, and notifies HR and the store manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Employee Termination Orchestrator"
  description: "When an employee is terminated in Workday, revokes access in Azure Active Directory, closes any open ServiceNow tickets assigned to them, and notifies HR and the store manager in Microsoft Teams."
  tags:
    - hr
    - offboarding
    - workday
    - azure-active-directory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: employee-offboarding
      port: 8080
      tools:
        - name: process-termination
          description: "Given a Workday employee ID, revoke Azure AD access, close ServiceNow tickets, and notify HR and the store manager."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the terminated employee."
            - name: termination_date
              in: body
              type: string
              description: "The termination effective date in YYYY-MM-DD format."
            - name: hr_upn
              in: body
              type: string
              description: "The Microsoft UPN of the HR business partner."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: disable-account
              type: call
              call: "azuread.disable-user"
              with:
                user_principal_name: "{{get-employee.work_email}}"
            - name: close-tickets
              type: call
              call: "servicenow.update-incidents"
              with:
                assigned_to: "{{get-employee.work_email}}"
                state: "closed"
                close_notes: "Employee terminated on {{termination_date}}. Tickets reassigned."
            - name: notify-hr
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{hr_upn}}"
                text: "Termination Processed: {{get-employee.full_name}} ({{get-employee.job_title}}) effective {{termination_date}}. Azure AD disabled. {{close-tickets.count}} ServiceNow tickets closed."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.manager_email}}"
                text: "Offboarding Complete: {{get-employee.full_name}} terminated effective {{termination_date}}. All system access has been revoked."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_principal_name}}"
          inputParameters:
            - name: user_principal_name
              in: path
          operations:
            - name: disable-user
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: assigned_to
              in: query
          operations:
            - name: update-incidents
              method: PATCH
    - 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

After a food safety audit is completed, retrieves the audit score from the quality management system, updates the franchise record in Salesforce, logs findings to SharePoint, and alerts the operations director in Microsoft Teams if the score falls below threshold.

naftiko: "0.5"
info:
  label: "Food Safety Audit Workflow"
  description: "After a food safety audit is completed, retrieves the audit score from the quality management system, updates the franchise record in Salesforce, logs findings to SharePoint, and alerts the operations director in Microsoft Teams if the score falls below threshold."
  tags:
    - food-safety
    - compliance
    - salesforce
    - sharepoint
    - microsoft-teams
    - quality-assurance
capability:
  exposes:
    - type: mcp
      namespace: food-safety-audit
      port: 8080
      tools:
        - name: process-audit-results
          description: "Given an audit ID and store number, retrieve the audit score, update Salesforce, log to SharePoint, and alert on low scores."
          inputParameters:
            - name: audit_id
              in: body
              type: string
              description: "The food safety audit identifier."
            - name: store_number
              in: body
              type: string
              description: "The restaurant store number."
            - name: franchise_contact_id
              in: body
              type: string
              description: "The Salesforce contact ID for the franchise operator."
            - name: ops_director_upn
              in: body
              type: string
              description: "The Microsoft UPN of the operations director."
          steps:
            - name: get-audit-score
              type: call
              call: "sharepoint.get-list-item"
              with:
                site_id: "mcd-food-safety"
                list_name: "AuditResults"
                item_id: "{{audit_id}}"
            - name: update-franchise-record
              type: call
              call: "salesforce.update-contact"
              with:
                contact_id: "{{franchise_contact_id}}"
                last_audit_score: "{{get-audit-score.score}}"
                last_audit_date: "{{get-audit-score.audit_date}}"
            - name: log-findings
              type: call
              call: "sharepoint.create-list-item"
              with:
                site_id: "mcd-food-safety"
                list_name: "AuditFindings"
                store_number: "{{store_number}}"
                audit_id: "{{audit_id}}"
                score: "{{get-audit-score.score}}"
                findings: "{{get-audit-score.findings}}"
            - name: alert-director
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{ops_director_upn}}"
                text: "Food Safety Audit — Store {{store_number}}: Score {{get-audit-score.score}}/100. Findings: {{get-audit-score.findings}}. Salesforce updated. Full report: {{log-findings.url}}."
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: list-items
          path: "/{{site_id}}/lists/{{list_name}}/items/{{item_id}}"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
            - name: item_id
              in: path
          operations:
            - name: get-list-item
              method: GET
        - name: list-items-create
          path: "/{{site_id}}/lists/{{list_name}}/items"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
          operations:
            - name: create-list-item
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: update-contact
              method: PATCH
    - 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

Pulls franchise sales data from Power BI, retrieves the franchise operator contact from Salesforce, and sends a performance summary to the field consultant in Microsoft Teams for monthly review preparation.

naftiko: "0.5"
info:
  label: "Franchise Performance Review Pipeline"
  description: "Pulls franchise sales data from Power BI, retrieves the franchise operator contact from Salesforce, and sends a performance summary to the field consultant in Microsoft Teams for monthly review preparation."
  tags:
    - franchise-ops
    - power-bi
    - salesforce
    - microsoft-teams
    - performance-management
capability:
  exposes:
    - type: mcp
      namespace: franchise-performance
      port: 8080
      tools:
        - name: generate-franchise-review
          description: "Given a store number and review period, pull sales data, retrieve franchise contact, and send a performance summary to the field consultant."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The McDonald's franchise store number."
            - name: review_month
              in: body
              type: string
              description: "The review month in YYYY-MM format."
            - name: franchise_contact_id
              in: body
              type: string
              description: "The Salesforce contact ID for the franchise operator."
          steps:
            - name: get-sales-data
              type: call
              call: "powerbi.execute-query"
              with:
                dataset_id: "mcd-franchise-sales"
                query: "EVALUATE SUMMARIZE(Sales, Sales[StoreNumber], \"GrossSales\", SUM(Sales[GrossSales]), \"AvgTicket\", AVERAGE(Sales[TicketSize]), \"Transactions\", COUNT(Sales[TransactionID])) FILTER Sales[Month] = \"{{review_month}}\" AND Sales[StoreNumber] = \"{{store_number}}\""
            - name: get-franchise-contact
              type: call
              call: "salesforce.get-contact"
              with:
                contact_id: "{{franchise_contact_id}}"
            - name: notify-consultant
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-franchise-contact.field_consultant_email}}"
                text: "Monthly Review — Store {{store_number}} ({{review_month}}): Gross Sales: ${{get-sales-data.GrossSales}}, Avg Ticket: ${{get-sales-data.AvgTicket}}, Transactions: {{get-sales-data.Transactions}}. Franchise Operator: {{get-franchise-contact.full_name}}."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              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

Tracks franchise remodel projects by pulling milestone status from Jira, budget data from SAP, and contractor details from Salesforce, then posts a consolidated status update to the construction management Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Franchise Remodel Project Tracker"
  description: "Tracks franchise remodel projects by pulling milestone status from Jira, budget data from SAP, and contractor details from Salesforce, then posts a consolidated status update to the construction management Microsoft Teams channel."
  tags:
    - franchise-ops
    - construction
    - jira
    - sap
    - salesforce
    - microsoft-teams
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: remodel-tracking
      port: 8080
      tools:
        - name: report-remodel-status
          description: "Given a project key, store number, and SAP project ID, pull milestone, budget, and contractor data and post a status update."
          inputParameters:
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for the remodel."
            - name: store_number
              in: body
              type: string
              description: "The restaurant store number being remodeled."
            - name: sap_project_id
              in: body
              type: string
              description: "The SAP project system WBS element."
            - name: contractor_contact_id
              in: body
              type: string
              description: "The Salesforce contact ID for the general contractor."
            - name: construction_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for construction management."
          steps:
            - name: get-milestones
              type: call
              call: "jira.get-project-status"
              with:
                project_key: "{{jira_project_key}}"
            - name: get-budget
              type: call
              call: "sap.get-project-budget"
              with:
                wbs_element: "{{sap_project_id}}"
            - name: get-contractor
              type: call
              call: "salesforce.get-contact"
              with:
                contact_id: "{{contractor_contact_id}}"
            - name: post-status
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{construction_channel_id}}"
                text: "Remodel Status — Store {{store_number}}: Milestones Complete: {{get-milestones.done}}/{{get-milestones.total}}. Budget: ${{get-budget.spent}}/${{get-budget.planned}} ({{get-budget.variance_pct}}% variance). Contractor: {{get-contractor.full_name}} ({{get-contractor.email}})."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: project-status
          path: "/search"
          inputParameters:
            - name: project_key
              in: query
          operations:
            - name: get-project-status
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/PS_PROJECT_BUDGET_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: project-budgets
          path: "/WBSElementBudgetSet('{{wbs_element}}')"
          inputParameters:
            - name: wbs_element
              in: path
          operations:
            - name: get-project-budget
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Queries the Power BI embedded analytics dataset for a given franchise location and date range, returning gross sales, average ticket, and transaction count.

naftiko: "0.5"
info:
  label: "Franchise Sales Dashboard Query"
  description: "Queries the Power BI embedded analytics dataset for a given franchise location and date range, returning gross sales, average ticket, and transaction count."
  tags:
    - franchise-ops
    - analytics
    - power-bi
    - sales
capability:
  exposes:
    - type: mcp
      namespace: franchise-analytics
      port: 8080
      tools:
        - name: get-franchise-sales
          description: "Query Power BI for franchise sales data by store number and date range. Returns gross sales, average ticket size, and transaction count."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The McDonald's franchise store number."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "powerbi.execute-query"
          with:
            dataset_id: "mcd-franchise-sales"
            query: "EVALUATE FILTER(Sales, Sales[StoreNumber] = \"{{store_number}}\" && Sales[Date] >= DATE({{start_date}}) && Sales[Date] <= DATE({{end_date}}))"
          outputParameters:
            - name: gross_sales
              type: string
              mapping: "$.results[0].tables[0].rows[0].GrossSales"
            - name: avg_ticket
              type: string
              mapping: "$.results[0].tables[0].rows[0].AvgTicket"
            - name: transaction_count
              type: string
              mapping: "$.results[0].tables[0].rows[0].TransactionCount"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: execute-query
              method: POST

Queries Google Analytics for McDonald's mobile app traffic metrics by date range. Returns active users, sessions, screen views, and average session duration for the digital team.

naftiko: "0.5"
info:
  label: "Google Analytics App Traffic Summary"
  description: "Queries Google Analytics for McDonald's mobile app traffic metrics by date range. Returns active users, sessions, screen views, and average session duration for the digital team."
  tags:
    - digital
    - mobile-app
    - google-analytics
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: digital-analytics
      port: 8080
      tools:
        - name: get-app-traffic
          description: "Query Google Analytics for McDonald's app traffic metrics. Returns active users, sessions, screen views, and average session duration."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "ga.run-report"
          with:
            property_id: "mcd-mobile-app"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: active_users
              type: string
              mapping: "$.rows[0].metricValues[0].value"
            - name: sessions
              type: string
              mapping: "$.rows[0].metricValues[1].value"
            - name: screen_views
              type: string
              mapping: "$.rows[0].metricValues[2].value"
            - name: avg_session_duration
              type: string
              mapping: "$.rows[0].metricValues[3].value"
  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"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST

When a restaurant changes operating hours, updates the Google Business Profile listing, updates the store locator in the McDonald's CMS, and notifies the local marketing team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Google Maps Store Listing Update"
  description: "When a restaurant changes operating hours, updates the Google Business Profile listing, updates the store locator in the McDonald's CMS, and notifies the local marketing team in Microsoft Teams."
  tags:
    - franchise-ops
    - google-maps
    - marketing
    - microsoft-teams
    - store-locator
capability:
  exposes:
    - type: mcp
      namespace: store-listings
      port: 8080
      tools:
        - name: update-store-hours
          description: "Given a store ID and new hours, update Google Business Profile, the CMS store locator, and notify local marketing."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: location_id
              in: body
              type: string
              description: "The Google Business Profile location ID."
            - name: new_hours
              in: body
              type: string
              description: "JSON object with the new operating hours."
            - name: local_marketing_upn
              in: body
              type: string
              description: "The Microsoft UPN of the local marketing coordinator."
          steps:
            - name: update-google-profile
              type: call
              call: "google-business.update-location"
              with:
                location_id: "{{location_id}}"
                regular_hours: "{{new_hours}}"
            - name: update-cms
              type: call
              call: "mcd-cms.update-store"
              with:
                store_id: "{{store_id}}"
                hours: "{{new_hours}}"
            - name: notify-marketing
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{local_marketing_upn}}"
                text: "Store Hours Updated — Store {{store_id}}: Google Business Profile and store locator updated. New hours: {{new_hours}}."
  consumes:
    - type: http
      namespace: google-business
      baseUri: "https://mybusiness.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_business_token"
      resources:
        - name: locations
          path: "/accounts/mcd-corp/locations/{{location_id}}"
          inputParameters:
            - name: location_id
              in: path
          operations:
            - name: update-location
              method: PATCH
    - type: http
      namespace: mcd-cms
      baseUri: "https://api.mcd-storelocator.com/v1"
      authentication:
        type: bearer
        token: "$secrets.mcd_cms_token"
      resources:
        - name: stores
          path: "/stores/{{store_id}}"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: update-store
              method: PATCH
    - 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 current live container version from Google Tag Manager for the McDonald's web properties. Returns version number, published date, and tag count for the digital analytics team.

naftiko: "0.5"
info:
  label: "Google Tag Manager Container Version Lookup"
  description: "Retrieves the current live container version from Google Tag Manager for the McDonald's web properties. Returns version number, published date, and tag count for the digital analytics team."
  tags:
    - digital
    - google-tag-manager
    - analytics
    - web
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: get-gtm-container-version
          description: "Look up the live GTM container version for a McDonald's web property. Returns version number, published date, and tag count."
          inputParameters:
            - name: container_id
              in: body
              type: string
              description: "The Google Tag Manager container ID."
          call: "gtm.get-live-version"
          with:
            container_id: "{{container_id}}"
          outputParameters:
            - name: version_number
              type: string
              mapping: "$.containerVersion.containerVersionId"
            - name: published_date
              type: string
              mapping: "$.containerVersion.fingerprint"
            - name: tag_count
              type: string
              mapping: "$.containerVersion.tag.length"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: container-versions
          path: "/accounts/mcd-corp/containers/{{container_id}}/versions/live"
          inputParameters:
            - name: container_id
              in: path
          operations:
            - name: get-live-version
              method: GET

Aggregates campaign performance from Adobe Analytics and sales data from Power BI for a Happy Meal promotion, then posts a consolidated effectiveness report to the marketing leadership Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Happy Meal Promotion Effectiveness Tracker"
  description: "Aggregates campaign performance from Adobe Analytics and sales data from Power BI for a Happy Meal promotion, then posts a consolidated effectiveness report to the marketing leadership Microsoft Teams channel."
  tags:
    - marketing
    - adobe-analytics
    - power-bi
    - microsoft-teams
    - campaign-performance
    - promotions
capability:
  exposes:
    - type: mcp
      namespace: promo-effectiveness
      port: 8080
      tools:
        - name: track-happy-meal-promo
          description: "Given a campaign code and date range, pull Adobe Analytics and Power BI data and post an effectiveness summary to the marketing channel."
          inputParameters:
            - name: campaign_code
              in: body
              type: string
              description: "The Happy Meal promotion campaign code."
            - name: start_date
              in: body
              type: string
              description: "Campaign start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Campaign end date in YYYY-MM-DD format."
            - name: marketing_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for marketing leadership."
          steps:
            - name: get-digital-metrics
              type: call
              call: "adobe-analytics.get-report"
              with:
                rsid: "mcd-global"
                campaign_id: "{{campaign_code}}"
                date_range: "{{start_date}}/{{end_date}}"
            - name: get-sales-impact
              type: call
              call: "powerbi.execute-query"
              with:
                dataset_id: "mcd-promo-sales"
                query: "EVALUATE FILTER(PromoSales, PromoSales[CampaignCode] = \"{{campaign_code}}\")"
            - name: post-report
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{marketing_channel_id}}"
                text: "Happy Meal Promo Report — {{campaign_code}} ({{start_date}} to {{end_date}}): Digital: {{get-digital-metrics.impressions}} impressions, {{get-digital-metrics.clicks}} clicks, {{get-digital-metrics.conversion_rate}}% CVR. Sales: {{get-sales-impact.UnitsSold}} units, ${{get-sales-impact.Revenue}} revenue, {{get-sales-impact.StoresParticipating}} stores."
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/{{rsid}}/reports"
          inputParameters:
            - name: rsid
              in: path
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: execute-query
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves a Jira issue from the restaurant technology project by issue key. Returns summary, status, assignee, and priority for the technology team tracking feature development and bugs.

naftiko: "0.5"
info:
  label: "Jira Restaurant Technology Ticket Lookup"
  description: "Retrieves a Jira issue from the restaurant technology project by issue key. Returns summary, status, assignee, and priority for the technology team tracking feature development and bugs."
  tags:
    - restaurant-technology
    - jira
    - development
    - issue-tracking
capability:
  exposes:
    - type: mcp
      namespace: tech-project
      port: 8080
      tools:
        - name: get-jira-ticket
          description: "Look up a Jira issue by key in the restaurant technology project. Returns summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g., MCDTECH-1234)."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: assignee
              type: string
              mapping: "$.fields.assignee.displayName"
            - name: priority
              type: string
              mapping: "$.fields.priority.name"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

When a customer redeems loyalty points in the McDonald's app, validates the redemption against the loyalty platform, updates the member balance in Salesforce Marketing Cloud, logs the transaction in SAP, and sends a push notification confirmation.

naftiko: "0.5"
info:
  label: "Loyalty Points Redemption Fulfillment"
  description: "When a customer redeems loyalty points in the McDonald's app, validates the redemption against the loyalty platform, updates the member balance in Salesforce Marketing Cloud, logs the transaction in SAP, and sends a push notification confirmation."
  tags:
    - loyalty
    - mobile-app
    - salesforce
    - sap
    - customer-engagement
capability:
  exposes:
    - type: mcp
      namespace: loyalty-redemption
      port: 8080
      tools:
        - name: fulfill-points-redemption
          description: "Given a member ID, redemption amount, and order ID, validate, update balance, log to SAP, and confirm to the customer."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The MyMcDonald's Rewards member ID."
            - name: points_to_redeem
              in: body
              type: number
              description: "The number of loyalty points to redeem."
            - name: order_id
              in: body
              type: string
              description: "The POS order ID for the transaction."
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
          steps:
            - name: get-member
              type: call
              call: "sfmc.get-data-extension-row"
              with:
                data_extension: "LoyaltyMembers"
                member_id: "{{member_id}}"
            - name: update-balance
              type: call
              call: "sfmc.update-data-extension-row"
              with:
                data_extension: "LoyaltyMembers"
                member_id: "{{member_id}}"
                points_balance: "{{get-member.points_balance - points_to_redeem}}"
                last_redemption_date: "{{now}}"
            - name: log-transaction
              type: call
              call: "sap.create-journal-entry"
              with:
                document_type: "loyalty_redemption"
                member_id: "{{member_id}}"
                points: "{{points_to_redeem}}"
                order_id: "{{order_id}}"
                store_id: "{{store_id}}"
            - name: send-confirmation
              type: call
              call: "sfmc.trigger-send"
              with:
                triggered_send_key: "LoyaltyRedemptionConfirmation"
                subscriber_key: "{{member_id}}"
                points_redeemed: "{{points_to_redeem}}"
                new_balance: "{{update-balance.points_balance}}"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: data-extension-get
          path: "/data/v1/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
            - name: member_id
              in: query
          operations:
            - name: get-data-extension-row
              method: GET
        - name: data-extension-update
          path: "/data/v1/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
          operations:
            - name: update-data-extension-row
              method: PUT
        - name: triggered-sends
          path: "/messaging/v1/messageDefinitionSends/key:{{triggered_send_key}}/send"
          inputParameters:
            - name: triggered_send_key
              in: path
          operations:
            - name: trigger-send
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: journal-entries
          path: "/A_JournalEntry"
          operations:
            - name: create-journal-entry
              method: POST

Retrieves a MyMcDonald's Rewards loyalty member profile from the Salesforce Marketing Cloud by member ID. Returns points balance, tier, last activity, and enrollment date for loyalty support teams.

naftiko: "0.5"
info:
  label: "Loyalty Program Member Lookup"
  description: "Retrieves a MyMcDonald's Rewards loyalty member profile from the Salesforce Marketing Cloud by member ID. Returns points balance, tier, last activity, and enrollment date for loyalty support teams."
  tags:
    - loyalty
    - mobile-app
    - salesforce
    - customer-engagement
capability:
  exposes:
    - type: mcp
      namespace: loyalty-program
      port: 8080
      tools:
        - name: get-loyalty-member
          description: "Look up a MyMcDonald's Rewards member by ID. Returns points balance, tier, last activity date, and enrollment date."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The MyMcDonald's Rewards loyalty member identifier."
          call: "sfmc.get-data-extension-row"
          with:
            data_extension: "LoyaltyMembers"
            member_id: "{{member_id}}"
          outputParameters:
            - name: points_balance
              type: string
              mapping: "$.items[0].values.PointsBalance"
            - name: tier
              type: string
              mapping: "$.items[0].values.MemberTier"
            - name: last_activity
              type: string
              mapping: "$.items[0].values.LastActivityDate"
            - name: enrollment_date
              type: string
              mapping: "$.items[0].values.EnrollmentDate"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: data-extensions
          path: "/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
            - name: member_id
              in: query
          operations:
            - name: get-data-extension-row
              method: GET

When a new promotional campaign is approved, creates the campaign in Salesforce Marketing Cloud, configures tracking in Adobe Analytics, pushes the offer to the McDonald's app via the loyalty platform, and notifies the marketing team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Marketing Campaign Launch Orchestrator"
  description: "When a new promotional campaign is approved, creates the campaign in Salesforce Marketing Cloud, configures tracking in Adobe Analytics, pushes the offer to the McDonald's app via the loyalty platform, and notifies the marketing team in Microsoft Teams."
  tags:
    - marketing
    - salesforce
    - adobe-analytics
    - loyalty
    - microsoft-teams
    - campaign-management
capability:
  exposes:
    - type: mcp
      namespace: campaign-launch
      port: 8080
      tools:
        - name: launch-promo-campaign
          description: "Given campaign details, create in SFMC, configure Adobe Analytics tracking, push to loyalty platform, and notify the team."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The promotional campaign name."
            - name: campaign_code
              in: body
              type: string
              description: "The unique campaign tracking code."
            - name: offer_description
              in: body
              type: string
              description: "The promotional offer description for the app."
            - name: start_date
              in: body
              type: string
              description: "Campaign start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Campaign end date in YYYY-MM-DD format."
            - name: team_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for the marketing team."
          steps:
            - name: create-sfmc-campaign
              type: call
              call: "sfmc.create-campaign"
              with:
                name: "{{campaign_name}}"
                campaign_code: "{{campaign_code}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: configure-tracking
              type: call
              call: "adobe-analytics.create-classification"
              with:
                rsid: "mcd-global"
                campaign_code: "{{campaign_code}}"
                campaign_name: "{{campaign_name}}"
            - name: push-loyalty-offer
              type: call
              call: "sfmc.create-data-extension-row"
              with:
                data_extension: "LoyaltyOffers"
                campaign_code: "{{campaign_code}}"
                offer_description: "{{offer_description}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{team_channel_id}}"
                text: "Campaign Launched: {{campaign_name}} ({{campaign_code}}). SFMC ID: {{create-sfmc-campaign.id}}. Loyalty offer active {{start_date}} to {{end_date}}. Adobe tracking configured."
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: campaigns
          path: "/hub/v1/campaigns"
          operations:
            - name: create-campaign
              method: POST
        - name: data-extensions
          path: "/data/v1/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
          operations:
            - name: create-data-extension-row
              method: POST
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: classifications
          path: "/{{rsid}}/classifications"
          inputParameters:
            - name: rsid
              in: path
          operations:
            - name: create-classification
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When a delivery order exceeds the SLA threshold, retrieves the order from the POS, checks the delivery partner status, creates a ServiceNow incident, and notifies the operations team in Microsoft Teams with resolution steps.

naftiko: "0.5"
info:
  label: "McDelivery Order Escalation Pipeline"
  description: "When a delivery order exceeds the SLA threshold, retrieves the order from the POS, checks the delivery partner status, creates a ServiceNow incident, and notifies the operations team in Microsoft Teams with resolution steps."
  tags:
    - delivery
    - restaurant-technology
    - oracle
    - servicenow
    - microsoft-teams
    - sla-management
capability:
  exposes:
    - type: mcp
      namespace: delivery-escalation
      port: 8080
      tools:
        - name: escalate-late-delivery
          description: "Given a POS order ID, store ID, and partner name, check order and partner status, create incident, and notify ops."
          inputParameters:
            - name: pos_order_id
              in: body
              type: string
              description: "The Simphony POS order identifier."
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: partner_name
              in: body
              type: string
              description: "The delivery partner name."
            - name: sla_minutes_exceeded
              in: body
              type: number
              description: "Minutes beyond the delivery SLA."
            - name: ops_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for delivery operations."
          steps:
            - name: get-order
              type: call
              call: "simphony.get-order"
              with:
                store_id: "{{store_id}}"
                order_id: "{{pos_order_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Late Delivery: Order {{pos_order_id}} — {{partner_name}} — Store {{store_id}} ({{sla_minutes_exceeded}}m over SLA)"
                category: "delivery_sla_breach"
                priority: "3"
                assigned_group: "Delivery_Operations"
                description: "Order {{pos_order_id}} at Store {{store_id}} via {{partner_name}} is {{sla_minutes_exceeded}} minutes past SLA. Order placed: {{get-order.created_at}}. Items: {{get-order.item_count}}."
            - name: notify-ops
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{ops_channel_id}}"
                text: "DELIVERY SLA BREACH — Store {{store_id}}: Order {{pos_order_id}} via {{partner_name}} is {{sla_minutes_exceeded}}m late. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: simphony
      baseUri: "https://mcd-simphony.oracle.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.simphony_token"
      resources:
        - name: orders
          path: "/stores/{{store_id}}/orders/{{order_id}}"
          inputParameters:
            - name: store_id
              in: path
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When a new McDonald's app release is approved, creates a Jira release version, posts release notes to Confluence, triggers the GitHub Actions deployment pipeline, and notifies the mobile engineering team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Mobile App Release Coordination"
  description: "When a new McDonald's app release is approved, creates a Jira release version, posts release notes to Confluence, triggers the GitHub Actions deployment pipeline, and notifies the mobile engineering team in Microsoft Teams."
  tags:
    - digital
    - mobile-app
    - jira
    - confluence
    - github-actions
    - microsoft-teams
    - release-management
capability:
  exposes:
    - type: mcp
      namespace: mobile-release
      port: 8080
      tools:
        - name: coordinate-app-release
          description: "Given a version number and release notes, create Jira version, post to Confluence, trigger deployment, and notify the team."
          inputParameters:
            - name: version_number
              in: body
              type: string
              description: "The app version number (e.g., 8.5.0)."
            - name: release_notes
              in: body
              type: string
              description: "The release notes content."
            - name: target_platform
              in: body
              type: string
              description: "The target platform (ios, android, both)."
            - name: engineering_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for mobile engineering."
          steps:
            - name: create-jira-version
              type: call
              call: "jira.create-version"
              with:
                project_key: "MCDAPP"
                name: "v{{version_number}}"
                released: true
                release_date: "{{now}}"
            - name: publish-release-notes
              type: call
              call: "confluence.create-page"
              with:
                space_key: "MCDMOBILE"
                title: "Release Notes — v{{version_number}}"
                body: "{{release_notes}}"
                parent_page_id: "release-notes-archive"
            - name: trigger-deployment
              type: call
              call: "github.trigger-workflow"
              with:
                repo: "mcdonalds/mobile-app"
                workflow_id: "deploy-release.yml"
                ref: "release/v{{version_number}}"
                inputs_platform: "{{target_platform}}"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{engineering_channel_id}}"
                text: "App Release v{{version_number}} deployed ({{target_platform}}). Jira: {{create-jira-version.id}}. Release notes: {{publish-release-notes.url}}. GitHub run: {{trigger-deployment.run_url}}."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: versions
          path: "/version"
          operations:
            - name: create-version
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com/repos"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflows
          path: "/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: trigger-workflow
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When a new franchise application is submitted, creates a Salesforce opportunity, provisions a SharePoint document library for due diligence, opens a Jira ticket for the franchise development team, and notifies the regional director in Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Franchise Application Processing"
  description: "When a new franchise application is submitted, creates a Salesforce opportunity, provisions a SharePoint document library for due diligence, opens a Jira ticket for the franchise development team, and notifies the regional director in Microsoft Teams."
  tags:
    - franchise-ops
    - salesforce
    - sharepoint
    - jira
    - microsoft-teams
    - franchise-development
capability:
  exposes:
    - type: mcp
      namespace: franchise-applications
      port: 8080
      tools:
        - name: process-franchise-application
          description: "Given applicant details, create a Salesforce opportunity, provision SharePoint docs, open a Jira ticket, and notify the regional director."
          inputParameters:
            - name: applicant_name
              in: body
              type: string
              description: "The franchise applicant full name."
            - name: applicant_email
              in: body
              type: string
              description: "The applicant email address."
            - name: target_market
              in: body
              type: string
              description: "The target market or region for the franchise."
            - name: investment_amount
              in: body
              type: string
              description: "The proposed investment amount."
            - name: regional_director_upn
              in: body
              type: string
              description: "The Microsoft UPN of the regional franchise director."
          steps:
            - name: create-opportunity
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "Franchise Application: {{applicant_name}} — {{target_market}}"
                stage: "Application Received"
                amount: "{{investment_amount}}"
                contact_email: "{{applicant_email}}"
            - name: provision-docs
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "mcd-franchise-dev"
                folder_path: "Applications/{{applicant_name}}_{{target_market}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MCDFRANCHISE"
                issue_type: "Task"
                summary: "New Franchise Application: {{applicant_name}} — {{target_market}}"
                description: "Applicant: {{applicant_name}} ({{applicant_email}}). Market: {{target_market}}. Investment: ${{investment_amount}}. Salesforce Opportunity: {{create-opportunity.id}}. Docs: {{provision-docs.url}}."
            - name: notify-director
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{regional_director_upn}}"
                text: "New Franchise Application: {{applicant_name}} for {{target_market}}. Investment: ${{investment_amount}}. Salesforce: {{create-opportunity.id}}. Jira: {{create-ticket.key}}. Docs: {{provision-docs.url}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              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: jira
      baseUri: "https://mcdonalds.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: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When a candidate completes a Paradox chatbot screening, creates a candidate profile in Workday Recruiting, schedules an interview via Microsoft Outlook calendar, and notifies the hiring manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Paradox Recruiting Chatbot Integration"
  description: "When a candidate completes a Paradox chatbot screening, creates a candidate profile in Workday Recruiting, schedules an interview via Microsoft Outlook calendar, and notifies the hiring manager in Microsoft Teams."
  tags:
    - hr
    - recruiting
    - paradox
    - workday
    - microsoft-teams
    - talent-acquisition
capability:
  exposes:
    - type: mcp
      namespace: recruiting-pipeline
      port: 8080
      tools:
        - name: process-candidate-screening
          description: "Given Paradox screening data, create a Workday candidate, schedule an interview, and notify the hiring manager."
          inputParameters:
            - name: candidate_name
              in: body
              type: string
              description: "The candidate full name."
            - name: candidate_email
              in: body
              type: string
              description: "The candidate email address."
            - name: candidate_phone
              in: body
              type: string
              description: "The candidate phone number."
            - name: store_number
              in: body
              type: string
              description: "The target restaurant store number."
            - name: position
              in: body
              type: string
              description: "The position applied for (e.g., Crew Member, Shift Manager)."
            - name: screening_score
              in: body
              type: string
              description: "The Paradox chatbot screening score."
            - name: hiring_manager_upn
              in: body
              type: string
              description: "The Microsoft UPN of the hiring manager."
          steps:
            - name: create-candidate
              type: call
              call: "workday.create-candidate"
              with:
                name: "{{candidate_name}}"
                email: "{{candidate_email}}"
                phone: "{{candidate_phone}}"
                position: "{{position}}"
                location: "Store_{{store_number}}"
                source: "Paradox"
                screening_score: "{{screening_score}}"
            - name: schedule-interview
              type: call
              call: "outlook.create-event"
              with:
                organizer_upn: "{{hiring_manager_upn}}"
                subject: "Interview: {{candidate_name}} — {{position}} (Store {{store_number}})"
                attendees: "{{hiring_manager_upn}}"
                body: "Candidate: {{candidate_name}} ({{candidate_email}}). Position: {{position}}. Paradox Score: {{screening_score}}. Workday ID: {{create-candidate.id}}."
                duration_minutes: 30
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{hiring_manager_upn}}"
                text: "New Candidate — Store {{store_number}}: {{candidate_name}} for {{position}}. Paradox Score: {{screening_score}}. Interview scheduled. Workday ID: {{create-candidate.id}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: candidates
          path: "/recruiting/candidates"
          operations:
            - name: create-candidate
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/users/{{organizer_upn}}/events"
          inputParameters:
            - name: organizer_upn
              in: path
          operations:
            - name: create-event
              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

Compares Workday payroll data against crew scheduled hours, detects discrepancies, creates a ServiceNow HR case, and notifies the payroll team and store manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Payroll Discrepancy Alert Pipeline"
  description: "Compares Workday payroll data against crew scheduled hours, detects discrepancies, creates a ServiceNow HR case, and notifies the payroll team and store manager in Microsoft Teams."
  tags:
    - hr
    - payroll
    - workday
    - servicenow
    - microsoft-teams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: payroll-compliance
      port: 8080
      tools:
        - name: check-payroll-discrepancy
          description: "Given an employee ID and pay period, compare payroll vs scheduled hours, flag discrepancies, and notify payroll and management."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: pay_period
              in: body
              type: string
              description: "The pay period in YYYY-MM-DD/YYYY-MM-DD format."
            - name: payroll_team_upn
              in: body
              type: string
              description: "The Microsoft UPN of the payroll team lead."
          steps:
            - name: get-payroll-data
              type: call
              call: "workday.get-payroll"
              with:
                worker_id: "{{worker_id}}"
                period: "{{pay_period}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: create-hr-case
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Payroll Discrepancy: {{get-employee.full_name}} — {{pay_period}}"
                assigned_group: "Payroll_Team"
                category: "payroll_discrepancy"
                description: "Employee: {{get-employee.full_name}} ({{worker_id}}). Pay period: {{pay_period}}. Paid hours: {{get-payroll-data.paid_hours}}. Scheduled hours: {{get-payroll-data.scheduled_hours}}. Variance: {{get-payroll-data.variance}} hours."
            - name: notify-payroll
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{payroll_team_upn}}"
                text: "Payroll Discrepancy: {{get-employee.full_name}} (Store {{get-employee.location}}). Paid: {{get-payroll-data.paid_hours}}h vs Scheduled: {{get-payroll-data.scheduled_hours}}h. Case: {{create-hr-case.number}}."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.manager_email}}"
                text: "Payroll Alert: {{get-employee.full_name}} has a {{get-payroll-data.variance}}h variance for {{pay_period}}. HR case: {{create-hr-case.number}}. Please verify time records."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payroll
          path: "/workers/{{worker_id}}/payroll"
          inputParameters:
            - name: worker_id
              in: path
            - name: period
              in: query
          operations:
            - name: get-payroll
              method: GET
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves the run status of a Microsoft Power Automate flow by flow ID. Returns status, trigger time, duration, and error details for the operations automation team monitoring scheduled restaurant processes.

naftiko: "0.5"
info:
  label: "Power Automate Flow Run Status Check"
  description: "Retrieves the run status of a Microsoft Power Automate flow by flow ID. Returns status, trigger time, duration, and error details for the operations automation team monitoring scheduled restaurant processes."
  tags:
    - restaurant-technology
    - automation
    - microsoft-power-automate
    - operations
capability:
  exposes:
    - type: mcp
      namespace: flow-monitoring
      port: 8080
      tools:
        - name: get-flow-run-status
          description: "Check the latest run status of a Power Automate flow by flow ID. Returns status, trigger time, and duration."
          inputParameters:
            - name: flow_id
              in: body
              type: string
              description: "The Power Automate flow identifier."
            - name: environment_id
              in: body
              type: string
              description: "The Power Platform environment ID."
          call: "power-automate.get-flow-runs"
          with:
            environment_id: "{{environment_id}}"
            flow_id: "{{flow_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].properties.status"
            - name: trigger_time
              type: string
              mapping: "$.value[0].properties.startTime"
            - name: duration
              type: string
              mapping: "$.value[0].properties.endTime"
            - name: error_message
              type: string
              mapping: "$.value[0].properties.error.message"
  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: flow-runs
          path: "/environments/{{environment_id}}/flows/{{flow_id}}/runs"
          inputParameters:
            - name: environment_id
              in: path
            - name: flow_id
              in: path
          operations:
            - name: get-flow-runs
              method: GET

When a new food safety regulation is published, uploads the document to SharePoint, creates Jira tasks for affected franchise regions, and sends a Salesforce Marketing Cloud email notification to all franchise operators in the affected market.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Document Distribution"
  description: "When a new food safety regulation is published, uploads the document to SharePoint, creates Jira tasks for affected franchise regions, and sends a Salesforce Marketing Cloud email notification to all franchise operators in the affected market."
  tags:
    - compliance
    - food-safety
    - sharepoint
    - jira
    - salesforce
    - regulatory
capability:
  exposes:
    - type: mcp
      namespace: regulatory-compliance
      port: 8080
      tools:
        - name: distribute-regulation
          description: "Given a regulation document and affected market, upload to SharePoint, create Jira tasks, and notify franchise operators via email."
          inputParameters:
            - name: regulation_title
              in: body
              type: string
              description: "The title of the new regulation."
            - name: regulation_url
              in: body
              type: string
              description: "The URL to the regulation document source."
            - name: affected_market
              in: body
              type: string
              description: "The affected geographic market."
            - name: compliance_deadline
              in: body
              type: string
              description: "The compliance deadline in YYYY-MM-DD format."
            - name: notification_list_key
              in: body
              type: string
              description: "The SFMC subscriber list key for the affected market."
          steps:
            - name: upload-document
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "mcd-regulatory"
                folder_path: "Regulations/{{affected_market}}"
                file_url: "{{regulation_url}}"
                file_name: "{{regulation_title}}"
            - name: create-compliance-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MCDCOMPLIANCE"
                issue_type: "Task"
                summary: "New Regulation: {{regulation_title}} — {{affected_market}}"
                description: "Regulation: {{regulation_title}}. Market: {{affected_market}}. Deadline: {{compliance_deadline}}. Document: {{upload-document.url}}."
                priority: "High"
                due_date: "{{compliance_deadline}}"
            - name: notify-operators
              type: call
              call: "sfmc.trigger-send"
              with:
                triggered_send_key: "RegulatoryNotification"
                list_key: "{{notification_list_key}}"
                regulation_title: "{{regulation_title}}"
                compliance_deadline: "{{compliance_deadline}}"
                document_url: "{{upload-document.url}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: file-upload
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.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: sfmc
      baseUri: "https://mcdonalds.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-sends
          path: "/messaging/v1/messageDefinitionSends/key:{{triggered_send_key}}/send"
          inputParameters:
            - name: triggered_send_key
              in: path
          operations:
            - name: trigger-send
              method: POST

When Datadog detects a kitchen equipment alert, creates a ServiceNow incident, looks up the equipment warranty in SAP, and notifies the store manager in Microsoft Teams with repair instructions.

naftiko: "0.5"
info:
  label: "Restaurant Equipment Failure Workflow"
  description: "When Datadog detects a kitchen equipment alert, creates a ServiceNow incident, looks up the equipment warranty in SAP, and notifies the store manager in Microsoft Teams with repair instructions."
  tags:
    - restaurant-technology
    - equipment
    - datadog
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: equipment-failure
      port: 8080
      tools:
        - name: handle-equipment-alert
          description: "Given an equipment alert from Datadog, create a ServiceNow incident, check SAP warranty, and notify the store manager."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The Datadog alert ID for the equipment failure."
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: equipment_tag
              in: body
              type: string
              description: "The Datadog host tag identifying the equipment."
            - name: sap_equipment_id
              in: body
              type: string
              description: "The SAP equipment master ID."
            - name: manager_upn
              in: body
              type: string
              description: "The store manager Microsoft UPN."
          steps:
            - name: get-alert-details
              type: call
              call: "datadog.get-alert"
              with:
                alert_id: "{{alert_id}}"
            - name: get-equipment-warranty
              type: call
              call: "sap.get-equipment"
              with:
                equipment_id: "{{sap_equipment_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Equipment failure: {{equipment_tag}} at Store {{store_id}}"
                category: "equipment_failure"
                priority: "2"
                assigned_group: "Restaurant_Equipment"
                description: "Alert: {{get-alert-details.title}}. Equipment: {{equipment_tag}}. Warranty status: {{get-equipment-warranty.warranty_status}}. Warranty expiry: {{get-equipment-warranty.warranty_end_date}}."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{manager_upn}}"
                text: "EQUIPMENT ALERT — Store {{store_id}}: {{get-alert-details.title}}. Equipment: {{equipment_tag}}. ServiceNow ticket: {{create-incident.number}}. Warranty: {{get-equipment-warranty.warranty_status}}."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: alerts
          path: "/alert/{{alert_id}}"
          inputParameters:
            - name: alert_id
              in: path
          operations:
            - name: get-alert
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: equipment
          path: "/EquipmentSet('{{equipment_id}}')"
          inputParameters:
            - name: equipment_id
              in: path
          operations:
            - name: get-equipment
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When a restaurant manager submits a maintenance request, creates a ServiceNow work order, checks the equipment maintenance schedule in SAP PM, and notifies the facilities team in Microsoft Teams with priority and SLA details.

naftiko: "0.5"
info:
  label: "Restaurant Maintenance Request Orchestrator"
  description: "When a restaurant manager submits a maintenance request, creates a ServiceNow work order, checks the equipment maintenance schedule in SAP PM, and notifies the facilities team in Microsoft Teams with priority and SLA details."
  tags:
    - restaurant-technology
    - maintenance
    - servicenow
    - sap
    - microsoft-teams
    - facilities
capability:
  exposes:
    - type: mcp
      namespace: restaurant-maintenance
      port: 8080
      tools:
        - name: submit-maintenance-request
          description: "Given store ID, equipment, and issue details, create a ServiceNow work order, check SAP PM schedule, and notify facilities."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The restaurant store number."
            - name: equipment_description
              in: body
              type: string
              description: "Description of the equipment needing maintenance."
            - name: issue_description
              in: body
              type: string
              description: "Description of the maintenance issue."
            - name: sap_equipment_id
              in: body
              type: string
              description: "The SAP Plant Maintenance equipment ID."
            - name: facilities_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for the facilities team."
          steps:
            - name: check-pm-schedule
              type: call
              call: "sap.get-maintenance-plan"
              with:
                equipment_id: "{{sap_equipment_id}}"
            - name: create-work-order
              type: call
              call: "servicenow.create-work-order"
              with:
                short_description: "Maintenance: {{equipment_description}} at Store {{store_id}}"
                description: "Issue: {{issue_description}}. Equipment: {{equipment_description}}. Last PM: {{check-pm-schedule.last_maintenance_date}}. Next scheduled: {{check-pm-schedule.next_planned_date}}."
                assigned_group: "Facilities_Maintenance"
                category: "equipment_maintenance"
                location: "Store {{store_id}}"
            - name: notify-facilities
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{facilities_channel_id}}"
                text: "Maintenance Request — Store {{store_id}}: {{equipment_description}}. Issue: {{issue_description}}. Work Order: {{create-work-order.number}}. Last PM: {{check-pm-schedule.last_maintenance_date}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/PM_MAINTENANCE_PLAN_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: maintenance-plans
          path: "/MaintenancePlanSet('{{equipment_id}}')"
          inputParameters:
            - name: equipment_id
              in: path
          operations:
            - name: get-maintenance-plan
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: work-orders
          path: "/table/wm_order"
          operations:
            - name: create-work-order
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

For a new restaurant opening, verifies POS system activation in Simphony, confirms supply chain orders in SAP, checks Workday staffing levels, and posts the readiness summary to the operations director in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Restaurant Opening Readiness Checklist"
  description: "For a new restaurant opening, verifies POS system activation in Simphony, confirms supply chain orders in SAP, checks Workday staffing levels, and posts the readiness summary to the operations director in Microsoft Teams."
  tags:
    - franchise-ops
    - restaurant-technology
    - oracle
    - sap
    - workday
    - microsoft-teams
    - new-restaurant
capability:
  exposes:
    - type: mcp
      namespace: restaurant-opening
      port: 8080
      tools:
        - name: check-opening-readiness
          description: "Given a new store ID, verify POS activation, supply chain orders, and staffing, then post a readiness summary."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The new restaurant store number."
            - name: opening_date
              in: body
              type: string
              description: "The planned opening date in YYYY-MM-DD format."
            - name: ops_director_upn
              in: body
              type: string
              description: "The Microsoft UPN of the operations director."
          steps:
            - name: check-pos
              type: call
              call: "simphony.get-store-config"
              with:
                store_id: "{{store_id}}"
            - name: check-supply-orders
              type: call
              call: "sap.get-plant-orders"
              with:
                plant_code: "{{store_id}}"
                status: "open"
            - name: check-staffing
              type: call
              call: "workday.get-headcount"
              with:
                location: "Store_{{store_id}}"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{ops_director_upn}}"
                text: "Opening Readiness — Store {{store_id}} ({{opening_date}}): POS Status: {{check-pos.activation_status}}. Open Supply Orders: {{check-supply-orders.order_count}}. Staffing: {{check-staffing.filled}}/{{check-staffing.planned}} positions filled."
  consumes:
    - type: http
      namespace: simphony
      baseUri: "https://mcd-simphony.oracle.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.simphony_token"
      resources:
        - name: store-config
          path: "/stores/{{store_id}}/config"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-store-config
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: plant-orders
          path: "/A_PurchaseOrder"
          inputParameters:
            - name: plant_code
              in: query
            - name: status
              in: query
          operations:
            - name: get-plant-orders
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/headcount"
          inputParameters:
            - name: location
              in: query
          operations:
            - name: get-headcount
              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 a point-of-sale transaction from the Oracle MICROS Simphony system by transaction ID. Returns order total, items, payment method, and timestamp for crew and shift managers troubleshooting order issues.

naftiko: "0.5"
info:
  label: "Restaurant POS Transaction Lookup"
  description: "Retrieves a point-of-sale transaction from the Oracle MICROS Simphony system by transaction ID. Returns order total, items, payment method, and timestamp for crew and shift managers troubleshooting order issues."
  tags:
    - restaurant-technology
    - pos
    - oracle
    - transactions
capability:
  exposes:
    - type: mcp
      namespace: pos-operations
      port: 8080
      tools:
        - name: get-pos-transaction
          description: "Look up an Oracle MICROS Simphony POS transaction by ID. Returns order total, line items, payment method, and timestamp."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "The Simphony POS transaction identifier."
            - name: store_id
              in: body
              type: string
              description: "The McDonald's restaurant store number."
          call: "simphony.get-transaction"
          with:
            transaction_id: "{{transaction_id}}"
            store_id: "{{store_id}}"
          outputParameters:
            - name: order_total
              type: string
              mapping: "$.transaction.totalAmount"
            - name: payment_method
              type: string
              mapping: "$.transaction.paymentType"
            - name: items
              type: string
              mapping: "$.transaction.lineItems"
            - name: timestamp
              type: string
              mapping: "$.transaction.createdAt"
  consumes:
    - type: http
      namespace: simphony
      baseUri: "https://mcd-simphony.oracle.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.simphony_token"
      resources:
        - name: transactions
          path: "/stores/{{store_id}}/transactions/{{transaction_id}}"
          inputParameters:
            - name: store_id
              in: path
            - name: transaction_id
              in: path
          operations:
            - name: get-transaction
              method: GET

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 1"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-1
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-1"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 10"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-10
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-10"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-10
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://mcdonalds.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 11"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-11
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-11"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 11 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-11
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 12"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-12
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-12"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "restaurants.workflow_12"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-12
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 13"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-13
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-13"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-13
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 14"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-14
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-14"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-14
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 15"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-15
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-15"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#restaurants"
                text: "Completed workflow 15: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-15
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 16"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-16
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-16"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "RESTAU"
                title: "Report 16"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-16
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 17"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-17
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-17"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_17"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-17
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 18"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-18
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-18"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "REST"
                summary: "Task from workflow 18"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-18
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 19"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-19
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-19"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "restaurants"
                message: "Workflow 19 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-19
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 2"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-2
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-2"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 20"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-20
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-20"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_20"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-20
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mcdonalds-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 21"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-21
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-21"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-21
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 22"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-22
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-22"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-22
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://mcdonalds.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 23"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-23
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-23"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 23 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-23
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 24"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-24
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-24"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "restaurants.workflow_24"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-24
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 25"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-25
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-25"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-25
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 26"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-26
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-26"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-26
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 27"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-27
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-27"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#restaurants"
                text: "Completed workflow 27: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-27
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 28"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-28
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-28"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "RESTAU"
                title: "Report 28"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-28
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 29"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-29
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-29"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_29"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-29
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 3"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-3
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-3"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#restaurants"
                text: "Completed workflow 3: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-3
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 30"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-30
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-30"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "REST"
                summary: "Task from workflow 30"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-30
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 31"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-31
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-31"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "restaurants"
                message: "Workflow 31 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-31
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 32"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-32
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-32"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_32"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-32
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mcdonalds-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 33"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-33
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-33"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-33
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 34"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-34
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-34"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-34
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://mcdonalds.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 35"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-35
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-35"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 35 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-35
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 4"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-4
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-4"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "RESTAU"
                title: "Report 4"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-4
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 5"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-5
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-5"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_5"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-5
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 6"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-6
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-6"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "REST"
                summary: "Task from workflow 6"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-6
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 7"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-7
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-7"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "restaurants"
                message: "Workflow 7 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-7
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 8"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-8
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-8"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_8"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-8
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mcdonalds-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds.

naftiko: "0.5"
info:
  label: "Mcdonalds Workflow 9"
  description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
  tags:
    - restaurants
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: restaurants
      port: 8080
      tools:
        - name: mcdonalds-workflow-9
          description: "Orchestrates restaurants operations including data retrieval, processing, and automated notification for Mcdonalds."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mcdonalds-ops.run-workflow-9"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mcdonalds-ops
      baseUri: "https://api.mcdonalds.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-9
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 1"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-1
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-1"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-1
          path: "/data-1/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-1
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 10"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-10
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-10"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-10
          path: "/data-10/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-10
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 11"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-11
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-11"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-11
          path: "/data-11/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-11
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 12"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-12
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-12"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-12
          path: "/data-12/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-12
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 13"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-13
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-13"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-13
          path: "/data-13/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-13
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 14"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-14
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-14"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-14
          path: "/data-14/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-14
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 15"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-15
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-15"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-15
          path: "/data-15/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-15
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 2"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-2
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-2"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-2
          path: "/data-2/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-2
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 3"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-3
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-3"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-3
          path: "/data-3/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-3
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 4"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-4
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-4"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-4
          path: "/data-4/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-4
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 5"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-5
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-5"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-5
          path: "/data-5/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-5
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 6"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-6
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-6"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-6
          path: "/data-6/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-6
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 7"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-7
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-7"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-7
          path: "/data-7/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-7
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 8"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-8
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-8"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-8
          path: "/data-8/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-8
              method: GET

Retrieves operational data for Mcdonalds restaurants workflows.

naftiko: "0.5"
info:
  label: "Mcdonalds Data Lookup 9"
  description: "Retrieves operational data for Mcdonalds restaurants workflows."
  tags:
    - restaurants
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mcdonalds-data
      port: 8080
      tools:
        - name: get-data-9
          description: "Retrieves operational data for Mcdonalds restaurants workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mcdonalds-data.get-data-9"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mcdonalds-data
      baseUri: "https://api.mcdonalds.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mcdonalds_api_token"
      resources:
        - name: data-9
          path: "/data-9/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-9
              method: GET

Retrieves a franchise owner or operator contact record from Salesforce by contact ID. Returns name, email, franchise region, and assigned field consultant for the franchise relations team.

naftiko: "0.5"
info:
  label: "Salesforce Franchise Contact Lookup"
  description: "Retrieves a franchise owner or operator contact record from Salesforce by contact ID. Returns name, email, franchise region, and assigned field consultant for the franchise relations team."
  tags:
    - franchise-ops
    - salesforce
    - crm
    - franchise-relations
capability:
  exposes:
    - type: mcp
      namespace: franchise-crm
      port: 8080
      tools:
        - name: get-franchise-contact
          description: "Look up a franchise owner or operator in Salesforce by contact ID. Returns name, email, franchise region, and field consultant."
          inputParameters:
            - name: contact_id
              in: body
              type: string
              description: "The Salesforce contact record ID."
          call: "salesforce.get-contact"
          with:
            contact_id: "{{contact_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.Name"
            - name: email
              type: string
              mapping: "$.Email"
            - name: franchise_region
              type: string
              mapping: "$.Franchise_Region__c"
            - name: field_consultant
              type: string
              mapping: "$.Field_Consultant__r.Name"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mcdonalds.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET

Queries SAP S/4HANA for current inventory levels of a material at a specific distribution center. Returns available quantity, unit, and last goods receipt date for supply chain planners.

naftiko: "0.5"
info:
  label: "SAP Inventory Level Check"
  description: "Queries SAP S/4HANA for current inventory levels of a material at a specific distribution center. Returns available quantity, unit, and last goods receipt date for supply chain planners."
  tags:
    - supply-chain
    - inventory
    - sap
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: inventory-management
      port: 8080
      tools:
        - name: get-inventory-level
          description: "Check SAP S/4HANA inventory for a material at a distribution center. Returns available quantity, unit, and last goods receipt."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code for the distribution center."
          call: "sap.get-material-stock"
          with:
            material_number: "{{material_number}}"
            plant_code: "{{plant_code}}"
          outputParameters:
            - name: available_quantity
              type: string
              mapping: "$.d.AvailableStock"
            - name: unit
              type: string
              mapping: "$.d.BaseUnit"
            - name: last_goods_receipt
              type: string
              mapping: "$.d.LastGoodsReceiptDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Material='{{material_number}}',Plant='{{plant_code}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant_code
              in: path
          operations:
            - name: get-material-stock
              method: GET

When a SAP purchase order exceeds the spend threshold, retrieves PO details, resolves the approver from Workday, and notifies the requestor and approver in Microsoft Teams with approval status.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Approval Pipeline"
  description: "When a SAP purchase order exceeds the spend threshold, retrieves PO details, resolves the approver from Workday, and notifies the requestor and approver in Microsoft Teams with approval status."
  tags:
    - supply-chain
    - procurement
    - sap
    - workday
    - microsoft-teams
    - approval
capability:
  exposes:
    - type: mcp
      namespace: procurement-approval
      port: 8080
      tools:
        - name: route-po-approval
          description: "Given a PO number and requestor employee ID, check the PO amount, resolve the approver from Workday, and notify both parties in Microsoft Teams."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
            - name: requestor_employee_id
              in: body
              type: string
              description: "The Workday employee ID of the PO requestor."
          steps:
            - name: get-po
              type: call
              call: "sap.get-po"
              with:
                po_number: "{{po_number}}"
            - name: get-requestor
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requestor_employee_id}}"
            - name: get-approver
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-requestor.manager_id}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-approver.work_email}}"
                text: "PO Approval Required: {{po_number}} from {{get-requestor.full_name}} for ${{get-po.total_value}} {{get-po.currency}}. Vendor: {{get-po.vendor}}. Please review."
            - name: notify-requestor
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-requestor.work_email}}"
                text: "Your PO {{po_number}} (${{get-po.total_value}}) has been routed to {{get-approver.full_name}} for approval."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              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 an open equipment incident from ServiceNow by incident number. Returns short description, priority, assigned group, and status for restaurant managers tracking kitchen equipment repair tickets.

naftiko: "0.5"
info:
  label: "ServiceNow Equipment Incident Lookup"
  description: "Retrieves an open equipment incident from ServiceNow by incident number. Returns short description, priority, assigned group, and status for restaurant managers tracking kitchen equipment repair tickets."
  tags:
    - restaurant-technology
    - servicenow
    - equipment
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: equipment-support
      port: 8080
      tools:
        - name: get-equipment-incident
          description: "Look up a ServiceNow equipment incident by number. Returns description, priority, assigned group, and status."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: short_description
              type: string
              mapping: "$.result.short_description"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
            - name: status
              type: string
              mapping: "$.result.state"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves a food safety compliance document from SharePoint by document title. Returns file URL, last modified date, and author for quality assurance teams conducting restaurant audits.

naftiko: "0.5"
info:
  label: "SharePoint Food Safety Document Lookup"
  description: "Retrieves a food safety compliance document from SharePoint by document title. Returns file URL, last modified date, and author for quality assurance teams conducting restaurant audits."
  tags:
    - food-safety
    - compliance
    - sharepoint
    - quality-assurance
capability:
  exposes:
    - type: mcp
      namespace: food-safety-docs
      port: 8080
      tools:
        - name: get-food-safety-document
          description: "Search SharePoint for a food safety compliance document by title. Returns file URL, last modified, and author."
          inputParameters:
            - name: document_title
              in: body
              type: string
              description: "The title or partial title of the food safety document."
          call: "sharepoint.search-files"
          with:
            site_id: "mcd-food-safety"
            query: "{{document_title}}"
          outputParameters:
            - name: file_url
              type: string
              mapping: "$.value[0].webUrl"
            - name: last_modified
              type: string
              mapping: "$.value[0].lastModifiedDateTime"
            - name: author
              type: string
              mapping: "$.value[0].createdBy.user.displayName"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-search
          path: "/{{site_id}}/drive/root/search(q='{{query}}')"
          inputParameters:
            - name: site_id
              in: path
            - name: query
              in: path
          operations:
            - name: search-files
              method: GET

When a negative social media mention is flagged, retrieves the post details from the social monitoring platform, creates a Jira ticket for the communications team, opens a ServiceNow incident for PR, and notifies the VP of communications in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Social Media Crisis Response Pipeline"
  description: "When a negative social media mention is flagged, retrieves the post details from the social monitoring platform, creates a Jira ticket for the communications team, opens a ServiceNow incident for PR, and notifies the VP of communications in Microsoft Teams."
  tags:
    - marketing
    - social-media
    - jira
    - servicenow
    - microsoft-teams
    - crisis-management
capability:
  exposes:
    - type: mcp
      namespace: social-crisis
      port: 8080
      tools:
        - name: escalate-social-mention
          description: "Given a flagged social post ID and platform, retrieve post details, create Jira and ServiceNow tickets, and notify the VP of communications."
          inputParameters:
            - name: post_id
              in: body
              type: string
              description: "The social media post identifier."
            - name: platform
              in: body
              type: string
              description: "The social media platform (twitter, instagram, facebook, tiktok)."
            - name: sentiment_score
              in: body
              type: number
              description: "The sentiment analysis score (-1.0 to 1.0)."
            - name: post_content
              in: body
              type: string
              description: "The content of the flagged social media post."
            - name: vp_comms_upn
              in: body
              type: string
              description: "The Microsoft UPN of the VP of Communications."
          steps:
            - name: create-comms-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MCDCOMMS"
                issue_type: "Task"
                summary: "Social Media Alert: {{platform}} post {{post_id}} — Sentiment {{sentiment_score}}"
                description: "Platform: {{platform}}. Post ID: {{post_id}}. Sentiment: {{sentiment_score}}. Content: {{post_content}}."
                priority: "High"
            - name: create-pr-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Social media crisis alert: {{platform}} — Sentiment {{sentiment_score}}"
                category: "public_relations"
                priority: "2"
                assigned_group: "Communications_Team"
                description: "Negative social mention on {{platform}}. Post: {{post_content}}. Jira ticket: {{create-comms-ticket.key}}."
            - name: notify-vp
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{vp_comms_upn}}"
                text: "SOCIAL MEDIA ALERT: {{platform}} post with sentiment {{sentiment_score}}. Content: \"{{post_content}}\". Jira: {{create-comms-ticket.key}}. ServiceNow: {{create-pr-incident.number}}."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.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: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When a supplier quality issue is detected, retrieves vendor details from SAP, creates a Jira ticket for the quality team, updates the supplier scorecard in SharePoint, and notifies procurement in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supplier Quality Incident Escalation"
  description: "When a supplier quality issue is detected, retrieves vendor details from SAP, creates a Jira ticket for the quality team, updates the supplier scorecard in SharePoint, and notifies procurement in Microsoft Teams."
  tags:
    - supply-chain
    - quality-assurance
    - sap
    - jira
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supplier-quality
      port: 8080
      tools:
        - name: escalate-supplier-issue
          description: "Given a supplier ID and issue details, retrieve vendor info, create Jira ticket, update scorecard, and notify procurement."
          inputParameters:
            - name: sap_vendor_id
              in: body
              type: string
              description: "The SAP vendor master ID."
            - name: issue_description
              in: body
              type: string
              description: "Description of the quality issue."
            - name: affected_material
              in: body
              type: string
              description: "The affected material or product."
            - name: severity
              in: body
              type: string
              description: "Issue severity: critical, high, medium, low."
            - name: procurement_upn
              in: body
              type: string
              description: "The Microsoft UPN of the procurement manager."
          steps:
            - name: get-vendor
              type: call
              call: "sap.get-vendor"
              with:
                vendor_id: "{{sap_vendor_id}}"
            - name: create-quality-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MCDQUAL"
                issue_type: "Bug"
                summary: "Supplier Quality Issue: {{get-vendor.vendor_name}} — {{affected_material}}"
                description: "Vendor: {{get-vendor.vendor_name}} ({{sap_vendor_id}}). Material: {{affected_material}}. Issue: {{issue_description}}. Severity: {{severity}}."
                priority: "{{severity}}"
            - name: update-scorecard
              type: call
              call: "sharepoint.create-list-item"
              with:
                site_id: "mcd-procurement"
                list_name: "SupplierScorecard"
                vendor_id: "{{sap_vendor_id}}"
                vendor_name: "{{get-vendor.vendor_name}}"
                issue_date: "{{now}}"
                severity: "{{severity}}"
                jira_ticket: "{{create-quality-ticket.key}}"
            - name: notify-procurement
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{procurement_upn}}"
                text: "SUPPLIER QUALITY ALERT: {{get-vendor.vendor_name}} — {{affected_material}}. Severity: {{severity}}. Jira: {{create-quality-ticket.key}}. Scorecard updated."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: vendors
          path: "/A_Supplier('{{vendor_id}}')"
          inputParameters:
            - name: vendor_id
              in: path
          operations:
            - name: get-vendor
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://mcdonalds.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: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: list-items
          path: "/{{site_id}}/lists/{{list_name}}/items"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
          operations:
            - name: create-list-item
              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

When a SAP Transportation Management shipment is delayed beyond threshold, checks inventory at the destination distribution center, creates a ServiceNow incident, and notifies the supply chain manager in Microsoft Teams with mitigation details.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Alert Pipeline"
  description: "When a SAP Transportation Management shipment is delayed beyond threshold, checks inventory at the destination distribution center, creates a ServiceNow incident, and notifies the supply chain manager in Microsoft Teams with mitigation details."
  tags:
    - supply-chain
    - logistics
    - sap
    - servicenow
    - microsoft-teams
    - disruption-management
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-alerts
      port: 8080
      tools:
        - name: escalate-shipment-delay
          description: "Given a delayed shipment ID and destination plant, check inventory impact, create an incident, and notify supply chain management."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "The SAP TM shipment identifier."
            - name: destination_plant
              in: body
              type: string
              description: "The destination distribution center plant code."
            - name: delay_hours
              in: body
              type: number
              description: "Number of hours the shipment is delayed."
            - name: manager_upn
              in: body
              type: string
              description: "The Microsoft UPN of the supply chain manager."
          steps:
            - name: get-shipment
              type: call
              call: "sap-tm.get-shipment"
              with:
                shipment_id: "{{shipment_id}}"
            - name: check-inventory
              type: call
              call: "sap.get-plant-stock"
              with:
                plant_code: "{{destination_plant}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Shipment delay: {{shipment_id}} — {{delay_hours}}h late to {{destination_plant}}"
                category: "supply_chain_disruption"
                priority: "2"
                assigned_group: "Supply_Chain_Ops"
                description: "Shipment {{shipment_id}} from {{get-shipment.origin}} delayed {{delay_hours}} hours. Carrier: {{get-shipment.carrier}}. Current stock at {{destination_plant}}: {{check-inventory.available_stock}} units."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{manager_upn}}"
                text: "SUPPLY CHAIN ALERT: Shipment {{shipment_id}} delayed {{delay_hours}}h. Destination: {{destination_plant}}. Stock on hand: {{check-inventory.available_stock}} units. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: sap-tm
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/TM_SHIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: shipments
          path: "/ShipmentSet('{{shipment_id}}')"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-shipment
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: plant-stock
          path: "/A_PlantStock('{{plant_code}}')"
          inputParameters:
            - name: plant_code
              in: path
          operations:
            - name: get-plant-stock
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mcdonalds.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Looks up a supply chain shipment in the SAP Transportation Management system by shipment ID. Returns carrier, status, ETA, and origin/destination for distribution center logistics coordinators.

naftiko: "0.5"
info:
  label: "Supply Chain Shipment Tracker"
  description: "Looks up a supply chain shipment in the SAP Transportation Management system by shipment ID. Returns carrier, status, ETA, and origin/destination for distribution center logistics coordinators."
  tags:
    - supply-chain
    - logistics
    - sap
    - shipment-tracking
capability:
  exposes:
    - type: mcp
      namespace: supply-chain
      port: 8080
      tools:
        - name: get-shipment-status
          description: "Track a supply chain shipment in SAP TM by shipment ID. Returns carrier, status, ETA, and origin/destination."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "The SAP Transportation Management shipment identifier."
          call: "sap-tm.get-shipment"
          with:
            shipment_id: "{{shipment_id}}"
          outputParameters:
            - name: carrier
              type: string
              mapping: "$.d.CarrierName"
            - name: status
              type: string
              mapping: "$.d.ShipmentStatus"
            - name: eta
              type: string
              mapping: "$.d.EstimatedArrival"
            - name: origin
              type: string
              mapping: "$.d.OriginLocation"
            - name: destination
              type: string
              mapping: "$.d.DestinationLocation"
  consumes:
    - type: http
      namespace: sap-tm
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/TM_SHIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: shipments
          path: "/ShipmentSet('{{shipment_id}}')"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-shipment
              method: GET

Aggregates energy usage data from the IoT platform, waste diversion metrics from the sustainability tracker in SharePoint, and carbon emission estimates from SAP, then publishes a consolidated ESG report to Confluence and notifies the sustainability team.

naftiko: "0.5"
info:
  label: "Sustainability Reporting Data Aggregation"
  description: "Aggregates energy usage data from the IoT platform, waste diversion metrics from the sustainability tracker in SharePoint, and carbon emission estimates from SAP, then publishes a consolidated ESG report to Confluence and notifies the sustainability team."
  tags:
    - sustainability
    - esg
    - sharepoint
    - sap
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sustainability-reporting
      port: 8080
      tools:
        - name: generate-esg-report
          description: "Given a reporting period and region, aggregate energy, waste, and emission data and publish a consolidated ESG report."
          inputParameters:
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period (e.g., 2026-Q1)."
            - name: region
              in: body
              type: string
              description: "The geographic region for the report."
            - name: sustainability_channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID for the sustainability team."
          steps:
            - name: get-waste-metrics
              type: call
              call: "sharepoint.get-list-items"
              with:
                site_id: "mcd-sustainability"
                list_name: "WasteDiversion"
                filter: "Region eq '{{region}}' and Period eq '{{reporting_period}}'"
            - name: get-emissions
              type: call
              call: "sap.get-emissions-data"
              with:
                region: "{{region}}"
                period: "{{reporting_period}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "MCDESG"
                title: "ESG Report — {{region}} {{reporting_period}}"
                body: "Waste Diversion Rate: {{get-waste-metrics.diversion_rate}}%. Recycled: {{get-waste-metrics.recycled_tons}} tons. Carbon Emissions: {{get-emissions.total_co2}} tCO2e. Energy: {{get-emissions.total_energy}} MWh."
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                channel_id: "{{sustainability_channel_id}}"
                text: "ESG Report Published — {{region}} {{reporting_period}}: Waste diversion: {{get-waste-metrics.diversion_rate}}%. Emissions: {{get-emissions.total_co2}} tCO2e. Report: {{publish-report.url}}."
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: list-items
          path: "/{{site_id}}/lists/{{list_name}}/items"
          inputParameters:
            - name: site_id
              in: path
            - name: list_name
              in: path
            - name: filter
              in: query
          operations:
            - name: get-list-items
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap/SUSTAINABILITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: emissions
          path: "/EmissionsDataSet"
          inputParameters:
            - name: region
              in: query
            - name: period
              in: query
          operations:
            - name: get-emissions-data
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://mcdonalds.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              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/{{channel_id}}/channels/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves a vendor invoice from SAP, validates against the purchase order, creates a Workday expense entry for the cost center, and notifies the accounts payable team in Microsoft Teams with discrepancy details.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing Pipeline"
  description: "Retrieves a vendor invoice from SAP, validates against the purchase order, creates a Workday expense entry for the cost center, and notifies the accounts payable team in Microsoft Teams with discrepancy details."
  tags:
    - finance
    - sap
    - workday
    - microsoft-teams
    - accounts-payable
    - invoice-processing
capability:
  exposes:
    - type: mcp
      namespace: invoice-processing
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Given an invoice number and PO number, validate the invoice against the PO, log to Workday, and notify AP of any discrepancies."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The SAP vendor invoice number."
            - name: po_number
              in: body
              type: string
              description: "The associated SAP purchase order number."
            - name: ap_team_upn
              in: body
              type: string
              description: "The Microsoft UPN of the accounts payable team lead."
          steps:
            - name: get-invoice
              type: call
              call: "sap.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: get-po
              type: call
              call: "sap.get-po"
              with:
                po_number: "{{po_number}}"
            - name: log-expense
              type: call
              call: "workday.create-expense"
              with:
                cost_center: "{{get-po.cost_center}}"
                amount: "{{get-invoice.total_amount}}"
                vendor: "{{get-invoice.vendor_name}}"
                invoice_ref: "{{invoice_number}}"
            - name: notify-ap
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{ap_team_upn}}"
                text: "Invoice Processed: {{invoice_number}} from {{get-invoice.vendor_name}}. Amount: ${{get-invoice.total_amount}}. PO: {{po_number}} (PO Total: ${{get-po.total_value}}). Cost Center: {{get-po.cost_center}}. Workday ref: {{log-expense.id}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mcd-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: invoices
          path: "/API_SUPPLIERINVOICE_PROCESS_SRV/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
        - name: purchase-orders
          path: "/MM_PUR_PO_MAINT_V2_SRV/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: expenses
          path: "/expenses"
          operations:
            - name: create-expense
              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

Retrieves an employee profile from Workday by worker ID. Returns name, role, store assignment, hire date, and manager for HR teams and franchise operators.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves an employee profile from Workday by worker ID. Returns name, role, store assignment, hire date, and manager for HR teams and franchise operators."
  tags:
    - hr
    - workday
    - employee-profile
capability:
  exposes:
    - type: mcp
      namespace: hr-employee
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Look up a McDonald's employee profile in Workday by worker ID. Returns full name, job title, store assignment, hire date, and manager."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID for the employee."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.fullName"
            - name: job_title
              type: string
              mapping: "$.worker.jobTitle"
            - name: store_assignment
              type: string
              mapping: "$.worker.location"
            - name: hire_date
              type: string
              mapping: "$.worker.hireDate"
            - name: manager_name
              type: string
              mapping: "$.worker.manager.fullName"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves a customer support ticket from Zendesk by ticket ID. Returns subject, status, requester, priority, and last update for customer service agents handling escalations.

naftiko: "0.5"
info:
  label: "Zendesk Customer Ticket Lookup"
  description: "Retrieves a customer support ticket from Zendesk by ticket ID. Returns subject, status, requester, priority, and last update for customer service agents handling escalations."
  tags:
    - customer-service
    - zendesk
    - support
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: get-support-ticket
          description: "Look up a Zendesk support ticket by ID. Returns subject, status, requester, priority, and last update."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID."
          call: "zendesk.get-ticket"
          with:
            ticket_id: "{{ticket_id}}"
          outputParameters:
            - name: subject
              type: string
              mapping: "$.ticket.subject"
            - name: status
              type: string
              mapping: "$.ticket.status"
            - name: requester
              type: string
              mapping: "$.ticket.requester.name"
            - name: priority
              type: string
              mapping: "$.ticket.priority"
            - name: last_updated
              type: string
              mapping: "$.ticket.updated_at"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://mcdonalds.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET