Mondelez International Capabilities

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

Sort
Expand

Retrieves the latest build pipeline run status from Azure DevOps for a specified project and pipeline, returning build number, status, result, and duration.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Pipeline Status"
  description: "Retrieves the latest build pipeline run status from Azure DevOps for a specified project and pipeline, returning build number, status, result, and duration."
  tags:
    - devops
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: build-pipelines
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Look up the latest Azure DevOps pipeline run for a project. Returns build number, status, result, and duration."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azuredevops.get-pipeline-run"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/mondelez"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: pipeline-runs
          path: "/{{project}}/_apis/pipelines/{{pipeline_id}}/runs?$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: get-pipeline-run
              method: GET

Checks the latest build status of a given pipeline in Azure DevOps for manufacturing and IT deployments.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Checks the latest build status of a given pipeline in Azure DevOps for manufacturing and IT deployments."
  tags:
    - devops
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: ci-cd
      port: 8080
      tools:
        - name: get-build-status
          description: "Check the latest Azure DevOps build for a pipeline definition."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The Azure DevOps pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/mondelez/MDLZ/_apis/build"
      authentication:
        type: basic
        username: "$secrets.azdo_user"
        password: "$secrets.azdo_pat"
      resources:
        - name: builds
          path: "/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: query
          operations:
            - name: get-builds
              method: GET

Compiles brand performance data by pulling sales metrics from Snowflake, market share data from Salesforce, campaign ROI from Google Analytics, and distributing the review package via SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Brand Performance Review Pipeline"
  description: "Compiles brand performance data by pulling sales metrics from Snowflake, market share data from Salesforce, campaign ROI from Google Analytics, and distributing the review package via SharePoint and Microsoft Teams."
  tags:
    - marketing
    - brand-performance
    - snowflake
    - salesforce
    - google-analytics
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: brand-performance
      port: 8080
      tools:
        - name: generate-brand-review
          description: "Given a brand and period, compile a comprehensive brand performance review."
          inputParameters:
            - name: brand
              in: body
              type: string
              description: "The brand name."
            - name: period
              in: body
              type: string
              description: "The review period."
          steps:
            - name: get-sales-metrics
              type: call
              call: "snowflake.execute-query"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: get-market-share
              type: call
              call: "salesforce.get-market-data"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: get-campaign-roi
              type: call
              call: "ga.get-report"
              with:
                campaign_name: "{{brand}}"
                period: "{{period}}"
            - name: upload-review
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "brand_site"
                folder_path: "Reviews/{{brand}}/{{period}}"
            - name: notify-brand-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "brand-{{brand}}-team"
                channel_id: "performance"
                message: "Brand performance review for {{brand}} ({{period}}) ready. Sales data: {{get-sales-metrics.rowCount}} records. Review: {{upload-review.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: market-data
          path: "/query/?q=SELECT+Market_Share__c,Growth_Rate__c+FROM+Market_Data__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'"
          inputParameters:
            - name: brand
              in: query
            - name: period
              in: query
          operations:
            - name: get-market-data
              method: GET
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Processes a travel expense approval by retrieving the Concur report, validating against Snowflake budget data, creating a Jira approval task, and notifying the finance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Concur Travel Expense Approval Workflow"
  description: "Processes a travel expense approval by retrieving the Concur report, validating against Snowflake budget data, creating a Jira approval task, and notifying the finance team via Microsoft Teams."
  tags:
    - finance
    - travel
    - concur
    - snowflake
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: travel-expense-approval
      port: 8080
      tools:
        - name: process-travel-expense
          description: "Given a Concur report ID and cost center, validate budget and route for approval."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The Concur expense report ID."
            - name: cost_center
              in: body
              type: string
              description: "The cost center code."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-report"
              with:
                report_id: "{{report_id}}"
            - name: check-budget
              type: call
              call: "snowflake.execute-query"
              with:
                cost_center: "{{cost_center}}"
                amount: "{{get-expense-report.Total}}"
            - name: create-approval-task
              type: call
              call: "jira.create-issue"
              with:
                project: "FIN"
                summary: "Expense Approval: {{report_id}} - ${{get-expense-report.Total}}"
                description: "Concur report {{report_id}} for cost center {{cost_center}}. Total: ${{get-expense-report.Total}}. Budget remaining: ${{check-budget.remaining}}."
                issuetype: "Task"
            - name: notify-finance
              type: call
              call: "msteams.post-message"
              with:
                team_id: "finance-team"
                channel_id: "expense-approvals"
                message: "Expense report {{report_id}} pending approval. Amount: ${{get-expense-report.Total}}. Cost center: {{cost_center}}. Jira: {{create-approval-task.key}}."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Aggregates consumer insights by pulling social media sentiment from HubSpot, sales data from Snowflake, and market research from Salesforce, then distributing the insights to innovation teams via SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Consumer Insights Aggregation Pipeline"
  description: "Aggregates consumer insights by pulling social media sentiment from HubSpot, sales data from Snowflake, and market research from Salesforce, then distributing the insights to innovation teams via SharePoint and Microsoft Teams."
  tags:
    - marketing
    - consumer-insights
    - hubspot
    - snowflake
    - salesforce
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: consumer-insights
      port: 8080
      tools:
        - name: aggregate-consumer-insights
          description: "Given a brand and time period, aggregate consumer insights across multiple data sources."
          inputParameters:
            - name: brand
              in: body
              type: string
              description: "The brand name."
            - name: period
              in: body
              type: string
              description: "The analysis period."
          steps:
            - name: get-sentiment
              type: call
              call: "hubspot.get-social-metrics"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: get-sales-data
              type: call
              call: "snowflake.execute-query"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: get-research
              type: call
              call: "salesforce.get-research"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: upload-insights
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "insights_site"
                folder_path: "ConsumerInsights/{{brand}}/{{period}}"
            - name: notify-innovation
              type: call
              call: "msteams.post-message"
              with:
                team_id: "innovation-team"
                channel_id: "consumer-insights"
                message: "Consumer insights for {{brand}} ({{period}}) ready. Sentiment: {{get-sentiment.overall_score}}. Sales trend: {{get-sales-data.trend}}. Report: {{upload-insights.webUrl}}."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: social-metrics
          path: "/analytics/v2/reports/social"
          operations:
            - name: get-social-metrics
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: research
          path: "/query/?q=SELECT+Research_Type__c,Key_Findings__c+FROM+Market_Research__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'"
          inputParameters:
            - name: brand
              in: query
            - name: period
              in: query
          operations:
            - name: get-research
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Runs demand forecasting by querying historical sales from Snowflake, pulling market data from Salesforce, refreshing the forecast Power BI dashboard, and distributing insights to planning teams via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Demand Forecasting Pipeline"
  description: "Runs demand forecasting by querying historical sales from Snowflake, pulling market data from Salesforce, refreshing the forecast Power BI dashboard, and distributing insights to planning teams via Microsoft Teams."
  tags:
    - supply-chain
    - forecasting
    - snowflake
    - salesforce
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: demand-forecasting
      port: 8080
      tools:
        - name: run-demand-forecast
          description: "Given a product category and horizon, run the demand forecast pipeline."
          inputParameters:
            - name: product_category
              in: body
              type: string
              description: "Product category for forecast."
            - name: forecast_horizon
              in: body
              type: string
              description: "Forecast horizon in months."
            - name: region
              in: body
              type: string
              description: "The region to forecast."
          steps:
            - name: query-historical-sales
              type: call
              call: "snowflake.execute-query"
              with:
                product_category: "{{product_category}}"
                region: "{{region}}"
            - name: get-market-context
              type: call
              call: "salesforce.get-market-data"
              with:
                region: "{{region}}"
                category: "{{product_category}}"
            - name: refresh-forecast-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "demand-forecast-dataset"
            - name: notify-planning
              type: call
              call: "msteams.post-message"
              with:
                team_id: "supply-planning-team"
                channel_id: "forecasts"
                message: "Demand forecast for {{product_category}} in {{region}} ({{forecast_horizon}} months) complete. {{query-historical-sales.rowCount}} data points. Dashboard refreshed."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: market-data
          path: "/query/?q=SELECT+Market_Trend__c,Competitor_Activity__c+FROM+Market_Data__c+WHERE+Region__c='{{region}}'+AND+Category__c='{{category}}'"
          inputParameters:
            - name: region
              in: query
            - name: category
              in: query
          operations:
            - name: get-market-data
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Tracks distribution order fulfillment by querying SAP for delivery status, pulling customer data from Salesforce, and sending delivery updates to the distribution team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Distribution Order Fulfillment Tracker"
  description: "Tracks distribution order fulfillment by querying SAP for delivery status, pulling customer data from Salesforce, and sending delivery updates to the distribution team via Microsoft Teams."
  tags:
    - distribution
    - fulfillment
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: distribution-tracking
      port: 8080
      tools:
        - name: track-distribution-order
          description: "Given a sales order number, pull delivery status from SAP, get customer details from Salesforce, and report status."
          inputParameters:
            - name: sales_order
              in: body
              type: string
              description: "The SAP sales order number."
          steps:
            - name: get-delivery-status
              type: call
              call: "sap.get-delivery"
              with:
                sales_order: "{{sales_order}}"
            - name: get-customer
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{get-delivery-status.SoldToParty}}"
            - name: notify-distribution
              type: call
              call: "msteams.post-message"
              with:
                team_id: "distribution-team"
                channel_id: "fulfillment"
                message: "Order {{sales_order}} for {{get-customer.Name}}: Status {{get-delivery-status.DeliveryStatus}}. Shipped: {{get-delivery-status.ShipDate}}. Tracking: {{get-delivery-status.TrackingNumber}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_OutbDeliveryHeader?$filter=SalesOrder eq '{{sales_order}}'"
          inputParameters:
            - name: sales_order
              in: query
          operations:
            - name: get-delivery
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Tracks distributor order fulfillment by querying SAP for delivery status and Snowflake for on-time-in-full metrics, then posting a summary to the supply chain team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Distributor Order Fulfillment Tracker"
  description: "Tracks distributor order fulfillment by querying SAP for delivery status and Snowflake for on-time-in-full metrics, then posting a summary to the supply chain team via Microsoft Teams."
  tags:
    - distribution
    - fulfillment
    - sap
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: order-fulfillment
      port: 8080
      tools:
        - name: track-order-fulfillment
          description: "Given a sales order number, retrieve SAP delivery status and Snowflake OTIF metrics, then notify supply chain."
          inputParameters:
            - name: sales_order
              in: body
              type: string
              description: "The SAP sales order number."
            - name: distributor_name
              in: body
              type: string
              description: "The distributor name for context."
          steps:
            - name: get-delivery-status
              type: call
              call: "sap.get-delivery"
              with:
                sales_order: "{{sales_order}}"
            - name: get-otif-metrics
              type: call
              call: "snowflake.execute-query"
              with:
                sales_order: "{{sales_order}}"
            - name: notify-supply-chain
              type: call
              call: "msteams.post-message"
              with:
                team_id: "supply-chain-team"
                channel_id: "fulfillment"
                message: "Order {{sales_order}} for {{distributor_name}}: Delivery status: {{get-delivery-status.DeliveryStatus}}. OTIF: {{get-otif-metrics.otif_pct}}%. Shipped qty: {{get-delivery-status.ShippedQuantity}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_Delivery?$filter=SalesOrder eq '{{sales_order}}'"
          inputParameters:
            - name: sales_order
              in: query
          operations:
            - name: get-delivery
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department."
          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: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.post-message"
              with:
                team_id: "hr-team"
                channel_id: "new-hires"
                message: "Welcome to Mondelez, {{get-employee.first_name}}! Onboarding ticket: {{open-ticket.number}}. Documents: {{provision-folder.webUrl}}."
  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://mondelez.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: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Routes SAP Concur expense reports for approval by pulling report details, resolving the manager in Workday, creating an approval task in ServiceNow, and notifying via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Expense Report Approval Workflow"
  description: "Routes SAP Concur expense reports for approval by pulling report details, resolving the manager in Workday, creating an approval task in ServiceNow, and notifying via Microsoft Teams."
  tags:
    - finance
    - expense
    - sap-concur
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: expense-approval
      port: 8080
      tools:
        - name: route-expense-approval
          description: "Given an expense report ID and employee ID, route the report for manager approval."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The Concur expense report ID."
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the submitter."
          steps:
            - name: get-report
              type: call
              call: "concur.get-report"
              with:
                report_id: "{{report_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: create-approval-task
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Expense approval: {{report_id}} - {{get-report.Total}}"
                category: "expense_approval"
                assigned_to: "{{get-manager.manager_id}}"
                description: "Expense report {{report_id}} from {{get-manager.full_name}} for {{get-report.Total}} {{get-report.CurrencyCode}}."
            - name: notify-manager
              type: call
              call: "msteams.post-message"
              with:
                team_id: "finance-team"
                channel_id: "expense-approvals"
                message: "Expense report {{report_id}} ({{get-report.Total}} {{get-report.CurrencyCode}}) from {{get-manager.full_name}} pending your approval. Case: {{create-approval-task.number}}."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              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: servicenow
      baseUri: "https://mondelez.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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Schedules a food safety audit by creating an audit record in Salesforce, a Jira task for the quality team, uploading the audit checklist to SharePoint, and notifying the plant quality manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Food Safety Audit Scheduling"
  description: "Schedules a food safety audit by creating an audit record in Salesforce, a Jira task for the quality team, uploading the audit checklist to SharePoint, and notifying the plant quality manager via Microsoft Teams."
  tags:
    - quality
    - food-safety
    - salesforce
    - jira
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: food-safety-audit
      port: 8080
      tools:
        - name: schedule-food-safety-audit
          description: "Given plant and audit details, create records in Salesforce, Jira, and SharePoint, then notify the quality manager."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code."
            - name: audit_type
              in: body
              type: string
              description: "Audit type (e.g., FSSC 22000, BRC, internal)."
            - name: audit_date
              in: body
              type: string
              description: "Scheduled audit date in YYYY-MM-DD format."
          steps:
            - name: create-audit-record
              type: call
              call: "salesforce.create-audit"
              with:
                plant_code: "{{plant_code}}"
                audit_type: "{{audit_type}}"
                audit_date: "{{audit_date}}"
            - name: create-audit-task
              type: call
              call: "jira.create-issue"
              with:
                project: "QA"
                summary: "Food Safety Audit: {{audit_type}} at {{plant_code}} on {{audit_date}}"
                description: "Prepare for {{audit_type}} audit at plant {{plant_code}} on {{audit_date}}. Salesforce record: {{create-audit-record.id}}."
                issuetype: "Task"
            - name: upload-checklist
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "quality-site"
                folder_path: "Audits/{{plant_code}}/{{audit_type}}-{{audit_date}}"
            - name: notify-quality-manager
              type: call
              call: "msteams.post-message"
              with:
                team_id: "quality-team"
                channel_id: "audits"
                message: "Food safety audit scheduled: {{audit_type}} at plant {{plant_code}} on {{audit_date}}. Salesforce: {{create-audit-record.id}}. Jira: {{create-audit-task.key}}. Docs: {{upload-checklist.webUrl}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: audits
          path: "/sobjects/Food_Safety_Audit__c"
          operations:
            - name: create-audit
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves campaign performance metrics from Google Analytics for a specified brand and date range, returning impressions, clicks, conversion rate, and cost per acquisition.

naftiko: "0.5"
info:
  label: "Google Analytics Brand Campaign Performance"
  description: "Retrieves campaign performance metrics from Google Analytics for a specified brand and date range, returning impressions, clicks, conversion rate, and cost per acquisition."
  tags:
    - marketing
    - google-analytics
    - brand
capability:
  exposes:
    - type: mcp
      namespace: brand-analytics
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Query Google Analytics for brand campaign metrics by brand name and date range."
          inputParameters:
            - name: brand
              in: body
              type: string
              description: "The brand name (e.g., Oreo, Cadbury, Toblerone)."
            - 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: "google-analytics.run-report"
          with:
            brand: "{{brand}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.ga_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          operations:
            - name: run-report
              method: POST

Retrieves campaign performance metrics from Google Analytics including sessions, conversion rate, and revenue for a specified date range and campaign.

naftiko: "0.5"
info:
  label: "Google Analytics Campaign Performance"
  description: "Retrieves campaign performance metrics from Google Analytics including sessions, conversion rate, and revenue for a specified date range and campaign."
  tags:
    - marketing
    - google-analytics
    - digital
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Query Google Analytics for campaign performance metrics by campaign name and date range."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The marketing campaign name."
            - 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.get-report"
          with:
            campaign_name: "{{campaign_name}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          operations:
            - name: get-report
              method: POST

Traces ingredient sourcing by querying SAP for batch genealogy, pulling supplier certifications from SharePoint, and generating a traceability report in Snowflake for food safety compliance.

naftiko: "0.5"
info:
  label: "Ingredient Traceability Pipeline"
  description: "Traces ingredient sourcing by querying SAP for batch genealogy, pulling supplier certifications from SharePoint, and generating a traceability report in Snowflake for food safety compliance."
  tags:
    - supply-chain
    - traceability
    - food-safety
    - sap
    - sharepoint
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: ingredient-traceability
      port: 8080
      tools:
        - name: trace-ingredient
          description: "Given a finished goods batch and ingredient, trace the supply chain from source to product."
          inputParameters:
            - name: finished_batch
              in: body
              type: string
              description: "The finished goods batch number."
            - name: ingredient_material
              in: body
              type: string
              description: "The ingredient material number."
          steps:
            - name: get-batch-genealogy
              type: call
              call: "sap.get-batch-genealogy"
              with:
                batch: "{{finished_batch}}"
                material: "{{ingredient_material}}"
            - name: get-supplier-certs
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "supplier_compliance_site"
                file_path: "Certifications/{{get-batch-genealogy.SupplierID}}"
            - name: generate-trace-report
              type: call
              call: "snowflake.execute-query"
              with:
                finished_batch: "{{finished_batch}}"
                ingredient_material: "{{ingredient_material}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batch-genealogy
          path: "/A_BatchGenealogy(Batch='{{batch}}',Material='{{material}}')"
          inputParameters:
            - name: batch
              in: path
            - name: material
              in: path
          operations:
            - name: get-batch-genealogy
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira task for implementation, and notifies the change advisory board via Microsoft Teams.

naftiko: "0.5"
info:
  label: "IT Change Request Pipeline"
  description: "Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira task for implementation, and notifies the change advisory board via Microsoft Teams."
  tags:
    - it-service
    - change-management
    - servicenow
    - confluence
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: submit-change-request
          description: "Given change details, create a ServiceNow change, link docs, and notify the CAB."
          inputParameters:
            - name: change_summary
              in: body
              type: string
              description: "Summary of the change."
            - name: change_type
              in: body
              type: string
              description: "Type of change."
            - name: doc_page_id
              in: body
              type: string
              description: "Confluence page ID with implementation details."
          steps:
            - name: create-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "{{change_summary}}"
                type: "{{change_type}}"
            - name: get-doc
              type: call
              call: "confluence.get-page"
              with:
                page_id: "{{doc_page_id}}"
            - name: create-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ITOPS"
                summary: "Implement: {{change_summary}}"
                description: "Change: {{create-change.number}}. Docs: {{get-doc._links.webui}}."
                issue_type: "Task"
            - name: notify-cab
              type: call
              call: "msteams.post-message"
              with:
                team_id: "it-operations-team"
                channel_id: "change-advisory"
                message: "Change request {{create-change.number}}: {{change_summary}}. Type: {{change_type}}. Jira: {{create-task.key}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://mondelez.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves the current sprint summary for an R&D project from Jira, returning sprint name, total story points, completed points, and remaining items for product development tracking.

naftiko: "0.5"
info:
  label: "Jira R&D Sprint Summary"
  description: "Retrieves the current sprint summary for an R&D project from Jira, returning sprint name, total story points, completed points, and remaining items for product development tracking."
  tags:
    - r-and-d
    - jira
    - product-development
capability:
  exposes:
    - type: mcp
      namespace: rd-sprints
      port: 8080
      tools:
        - name: get-sprint-summary
          description: "Look up the active sprint for a Jira R&D board. Returns sprint name, total points, completed points, and remaining."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID for the R&D project."
          call: "jira.get-active-sprint"
          with:
            board_id: "{{board_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET

Retrieves a Jira issue by key for IT and manufacturing project tracking, returning summary, status, assignee, and priority.

naftiko: "0.5"
info:
  label: "Jira Task Lookup"
  description: "Retrieves a Jira issue by key for IT and manufacturing project tracking, returning summary, status, assignee, and priority."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: project-tracking
      port: 8080
      tools:
        - name: get-jira-issue
          description: "Look up a Jira issue by key. Returns summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://mondelez.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

Queries Snowflake for Overall Equipment Effectiveness metrics for a manufacturing line and shift, returning availability, performance rate, quality rate, and calculated OEE percentage.

naftiko: "0.5"
info:
  label: "Manufacturing Line OEE Query"
  description: "Queries Snowflake for Overall Equipment Effectiveness metrics for a manufacturing line and shift, returning availability, performance rate, quality rate, and calculated OEE percentage."
  tags:
    - manufacturing
    - oee
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-oee
      port: 8080
      tools:
        - name: get-line-oee
          description: "Query OEE metrics for a manufacturing line and shift from Snowflake."
          inputParameters:
            - name: line_id
              in: body
              type: string
              description: "The manufacturing line identifier."
            - name: shift_date
              in: body
              type: string
              description: "The shift date in YYYY-MM-DD format."
            - name: shift_number
              in: body
              type: string
              description: "The shift number (1, 2, or 3)."
          call: "snowflake.execute-query"
          with:
            line_id: "{{line_id}}"
            shift_date: "{{shift_date}}"
            shift_number: "{{shift_number}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Launches a digital marketing campaign by creating a Salesforce campaign, configuring Google Analytics tracking, uploading creative assets to SharePoint, and notifying the brand team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Marketing Campaign Launch Pipeline"
  description: "Launches a digital marketing campaign by creating a Salesforce campaign, configuring Google Analytics tracking, uploading creative assets to SharePoint, and notifying the brand team via Microsoft Teams."
  tags:
    - marketing
    - campaign
    - salesforce
    - google-analytics
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: campaign-launch
      port: 8080
      tools:
        - name: launch-marketing-campaign
          description: "Given campaign details, create Salesforce campaign, set up analytics, upload assets, and notify brand team."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The campaign name."
            - name: brand
              in: body
              type: string
              description: "The brand name."
            - name: start_date
              in: body
              type: string
              description: "Campaign start date."
            - name: budget
              in: body
              type: string
              description: "Campaign budget in USD."
          steps:
            - name: create-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "{{campaign_name}}"
                brand: "{{brand}}"
                start_date: "{{start_date}}"
                budget: "{{budget}}"
            - name: setup-tracking
              type: call
              call: "ga.create-audience"
              with:
                campaign_name: "{{campaign_name}}"
            - name: upload-assets
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "marketing_site"
                folder_path: "Campaigns/{{brand}}/{{campaign_name}}"
            - name: notify-brand-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "brand-{{brand}}-team"
                channel_id: "campaigns"
                message: "Campaign '{{campaign_name}}' launched for {{brand}}. Budget: ${{budget}}. Salesforce: {{create-campaign.id}}. Assets: {{upload-assets.webUrl}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: ga
      baseUri: "https://analyticsadmin.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: audiences
          path: "/properties/{{property_id}}/audiences"
          operations:
            - name: create-audience
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Sends a formatted notification message to a specified Microsoft Teams channel for cross-functional communication.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification message to a specified Microsoft Teams channel for cross-functional communication."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: team-notifications
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Post a message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The message body."
          call: "msteams.post-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            message: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Coordinates a new product launch by creating a SAP material master record, setting up a Salesforce campaign, creating a Jira epic for marketing tasks, uploading brand assets to SharePoint, and notifying cross-functional teams via Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Product Launch Coordination"
  description: "Coordinates a new product launch by creating a SAP material master record, setting up a Salesforce campaign, creating a Jira epic for marketing tasks, uploading brand assets to SharePoint, and notifying cross-functional teams via Microsoft Teams."
  tags:
    - product-launch
    - sap
    - salesforce
    - jira
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: coordinate-product-launch
          description: "Given new product details, create records in SAP, Salesforce, Jira, and SharePoint, then notify teams."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The new product name."
            - name: brand
              in: body
              type: string
              description: "The brand (e.g., Oreo, Cadbury)."
            - name: category
              in: body
              type: string
              description: "Product category (e.g., biscuits, chocolate, gum)."
            - name: launch_date
              in: body
              type: string
              description: "Target launch date in YYYY-MM-DD format."
          steps:
            - name: create-material-master
              type: call
              call: "sap.create-material"
              with:
                product_name: "{{product_name}}"
                brand: "{{brand}}"
                category: "{{category}}"
            - name: create-launch-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Launch: {{product_name}}"
                brand: "{{brand}}"
                start_date: "{{launch_date}}"
            - name: create-marketing-epic
              type: call
              call: "jira.create-issue"
              with:
                project: "MKT"
                summary: "Product Launch: {{product_name}} ({{brand}})"
                description: "Marketing tasks for {{product_name}} launch on {{launch_date}}. SAP material: {{create-material-master.MaterialNumber}}. Campaign: {{create-launch-campaign.id}}."
                issuetype: "Epic"
            - name: create-asset-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "brand-assets"
                folder_path: "Launches/{{brand}}/{{product_name}}"
            - name: notify-teams
              type: call
              call: "msteams.post-message"
              with:
                team_id: "product-team"
                channel_id: "launches"
                message: "New product launch: {{product_name}} ({{brand}}, {{category}}) targeting {{launch_date}}. SAP: {{create-material-master.MaterialNumber}}. Campaign: {{create-launch-campaign.id}}. Jira: {{create-marketing-epic.key}}. Assets: {{create-asset-folder.webUrl}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Material"
          operations:
            - name: create-material
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Orchestrates a new snack product launch by creating a SAP material master record, setting up a Salesforce campaign, provisioning a SharePoint document library for product assets, and notifying the marketing team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Product Launch Orchestrator"
  description: "Orchestrates a new snack product launch by creating a SAP material master record, setting up a Salesforce campaign, provisioning a SharePoint document library for product assets, and notifying the marketing team via Microsoft Teams."
  tags:
    - product-launch
    - manufacturing
    - sap
    - salesforce
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: launch-new-product
          description: "Given product details, create SAP material, Salesforce campaign, SharePoint library, and notify marketing."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The new product name."
            - name: product_category
              in: body
              type: string
              description: "Product category (e.g., biscuits, chocolate, gum)."
            - name: launch_date
              in: body
              type: string
              description: "Target launch date in YYYY-MM-DD format."
            - name: brand
              in: body
              type: string
              description: "The brand (e.g., Oreo, Cadbury, Trident)."
          steps:
            - name: create-material
              type: call
              call: "sap.create-material"
              with:
                product_name: "{{product_name}}"
                product_category: "{{product_category}}"
                brand: "{{brand}}"
            - name: create-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "{{brand}} {{product_name}} Launch"
                start_date: "{{launch_date}}"
                type: "Product Launch"
            - name: provision-assets
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "product_launches_site"
                folder_path: "Launches/{{brand}}_{{product_name}}_{{launch_date}}"
            - name: notify-marketing
              type: call
              call: "msteams.post-message"
              with:
                team_id: "marketing-team"
                channel_id: "product-launches"
                message: "New product launch initiated: {{brand}} {{product_name}} ({{product_category}}). Launch date: {{launch_date}}. SAP material: {{create-material.MaterialNumber}}. Campaign: {{create-campaign.id}}. Assets: {{provision-assets.webUrl}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Material"
          operations:
            - name: create-material
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Creates a plant maintenance work order in SAP, logs a ServiceNow ticket for tracking, assigns the work via Jira, and notifies the maintenance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Plant Maintenance Work Order Pipeline"
  description: "Creates a plant maintenance work order in SAP, logs a ServiceNow ticket for tracking, assigns the work via Jira, and notifies the maintenance team via Microsoft Teams."
  tags:
    - manufacturing
    - maintenance
    - sap
    - servicenow
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: plant-maintenance
      port: 8080
      tools:
        - name: create-maintenance-order
          description: "Given equipment and issue details, create a SAP work order, log in ServiceNow, assign via Jira, and notify."
          inputParameters:
            - name: equipment_id
              in: body
              type: string
              description: "The SAP equipment ID."
            - name: plant
              in: body
              type: string
              description: "The plant code."
            - name: issue_description
              in: body
              type: string
              description: "Description of the maintenance issue."
            - name: priority
              in: body
              type: string
              description: "Priority level (high, medium, low)."
          steps:
            - name: create-work-order
              type: call
              call: "sap.create-maintenance-order"
              with:
                equipment_id: "{{equipment_id}}"
                plant: "{{plant}}"
                description: "{{issue_description}}"
                priority: "{{priority}}"
            - name: log-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Maintenance: {{equipment_id}} at plant {{plant}}"
                category: "plant_maintenance"
                description: "{{issue_description}}. SAP order: {{create-work-order.OrderNumber}}."
            - name: assign-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MAINT"
                summary: "Maintenance: {{equipment_id}} - {{priority}}"
                description: "{{issue_description}}. SAP order: {{create-work-order.OrderNumber}}. ServiceNow: {{log-ticket.number}}."
                issue_type: "Task"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "maintenance-team-{{plant}}"
                channel_id: "work-orders"
                message: "Maintenance order {{create-work-order.OrderNumber}} created for {{equipment_id}} at plant {{plant}}. Priority: {{priority}}. Jira: {{assign-task.key}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-orders
          path: "/A_MaintenanceOrder"
          operations:
            - name: create-maintenance-order
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Triggers a Power BI dataset refresh for regional sales dashboards used by category managers to monitor snack and confectionery performance.

naftiko: "0.5"
info:
  label: "Power BI Sales Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for regional sales dashboards used by category managers to monitor snack and confectionery performance."
  tags:
    - sales
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: sales-dashboards
      port: 8080
      tools:
        - name: refresh-sales-dashboard
          description: "Trigger a Power BI dataset refresh for a regional sales dashboard."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Triggers a dataset refresh in Power BI for the supply chain operations dashboard so logistics teams can view real-time distribution metrics.

naftiko: "0.5"
info:
  label: "Power BI Supply Chain Dashboard Refresh"
  description: "Triggers a dataset refresh in Power BI for the supply chain operations dashboard so logistics teams can view real-time distribution metrics."
  tags:
    - analytics
    - power-bi
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-analytics
      port: 8080
      tools:
        - name: refresh-supply-chain-dashboard
          description: "Trigger a Power BI dataset refresh for the supply chain dashboard."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID to refresh."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Handles production quality incidents by pulling batch details from SAP, creating a quality case in ServiceNow, uploading test results to SharePoint, and alerting the quality team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Production Quality Incident Pipeline"
  description: "Handles production quality incidents by pulling batch details from SAP, creating a quality case in ServiceNow, uploading test results to SharePoint, and alerting the quality team via Microsoft Teams."
  tags:
    - manufacturing
    - quality
    - sap
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-incidents
      port: 8080
      tools:
        - name: report-quality-incident
          description: "Given a production batch and defect type, pull batch data, create quality case, and alert team."
          inputParameters:
            - name: batch_number
              in: body
              type: string
              description: "The SAP production batch number."
            - name: defect_type
              in: body
              type: string
              description: "Type of quality defect."
            - name: plant
              in: body
              type: string
              description: "The manufacturing plant code."
          steps:
            - name: get-batch-details
              type: call
              call: "sap.get-batch"
              with:
                batch_number: "{{batch_number}}"
                plant: "{{plant}}"
            - name: create-quality-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Quality incident: {{defect_type}} - Batch {{batch_number}}"
                category: "quality"
                description: "Batch {{batch_number}} at plant {{plant}}. Product: {{get-batch-details.MaterialDescription}}. Defect: {{defect_type}}."
            - name: upload-results
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "quality_site"
                folder_path: "Incidents/{{batch_number}}_{{defect_type}}"
            - name: alert-quality-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "quality-team"
                channel_id: "incidents"
                message: "QUALITY ALERT: {{defect_type}} in batch {{batch_number}} at plant {{plant}}. Product: {{get-batch-details.MaterialDescription}}. Case: {{create-quality-case.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batches
          path: "/A_Batch(Batch='{{batch_number}}',Plant='{{plant}}')"
          inputParameters:
            - name: batch_number
              in: path
            - name: plant
              in: path
          operations:
            - name: get-batch
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Manages product recalls by identifying affected batches in SAP, pulling distribution data from Snowflake, creating a recall case in ServiceNow, notifying retailers via Salesforce, and alerting leadership via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Recall Management Pipeline"
  description: "Manages product recalls by identifying affected batches in SAP, pulling distribution data from Snowflake, creating a recall case in ServiceNow, notifying retailers via Salesforce, and alerting leadership via Microsoft Teams."
  tags:
    - food-safety
    - recall
    - sap
    - snowflake
    - servicenow
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: recall-management
      port: 8080
      tools:
        - name: initiate-recall
          description: "Given a material and batch range, initiate a product recall across all systems."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: batch_range_start
              in: body
              type: string
              description: "Start of affected batch range."
            - name: batch_range_end
              in: body
              type: string
              description: "End of affected batch range."
            - name: recall_reason
              in: body
              type: string
              description: "Reason for the recall."
          steps:
            - name: identify-batches
              type: call
              call: "sap.query-batches"
              with:
                material: "{{material_number}}"
                batch_start: "{{batch_range_start}}"
                batch_end: "{{batch_range_end}}"
            - name: get-distribution
              type: call
              call: "snowflake.execute-query"
              with:
                material: "{{material_number}}"
                batch_start: "{{batch_range_start}}"
                batch_end: "{{batch_range_end}}"
            - name: create-recall-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "RECALL: {{material_number}} batches {{batch_range_start}}-{{batch_range_end}}"
                category: "product_recall"
                priority: "1"
                description: "{{recall_reason}}. Affected batches: {{identify-batches.count}}. Distribution points: {{get-distribution.rowCount}}."
            - name: notify-retailers
              type: call
              call: "salesforce.create-recall-notification"
              with:
                material: "{{material_number}}"
                recall_reason: "{{recall_reason}}"
                case_number: "{{create-recall-case.number}}"
            - name: alert-leadership
              type: call
              call: "msteams.post-message"
              with:
                team_id: "executive-team"
                channel_id: "urgent"
                message: "PRODUCT RECALL: {{material_number}} (batches {{batch_range_start}}-{{batch_range_end}}). Reason: {{recall_reason}}. {{identify-batches.count}} batches, {{get-distribution.rowCount}} distribution points. Case: {{create-recall-case.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batches
          path: "/A_Batch?$filter=Material eq '{{material}}' and Batch ge '{{batch_start}}' and Batch le '{{batch_end}}'"
          inputParameters:
            - name: material
              in: query
            - name: batch_start
              in: query
            - name: batch_end
              in: query
          operations:
            - name: query-batches
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: recall-notifications
          path: "/sobjects/Recall_Notification__c"
          operations:
            - name: create-recall-notification
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Plans retail promotions by creating a promotion record in Salesforce, generating a SAP pricing condition, uploading promotional materials to SharePoint, and notifying the sales team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Retail Promotion Planning Workflow"
  description: "Plans retail promotions by creating a promotion record in Salesforce, generating a SAP pricing condition, uploading promotional materials to SharePoint, and notifying the sales team via Microsoft Teams."
  tags:
    - sales
    - promotions
    - salesforce
    - sap
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: promotion-planning
      port: 8080
      tools:
        - name: plan-retail-promotion
          description: "Given promotion details, create records across Salesforce, SAP, and SharePoint, then notify sales."
          inputParameters:
            - name: promotion_name
              in: body
              type: string
              description: "Name of the promotion."
            - name: retailer_account_id
              in: body
              type: string
              description: "The Salesforce retailer account ID."
            - name: discount_percentage
              in: body
              type: string
              description: "Discount percentage."
            - name: start_date
              in: body
              type: string
              description: "Promotion start date."
            - name: end_date
              in: body
              type: string
              description: "Promotion end date."
          steps:
            - name: create-promotion
              type: call
              call: "salesforce.create-promotion"
              with:
                name: "{{promotion_name}}"
                account_id: "{{retailer_account_id}}"
                discount: "{{discount_percentage}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: create-pricing-condition
              type: call
              call: "sap.create-pricing"
              with:
                promotion_id: "{{create-promotion.id}}"
                discount: "{{discount_percentage}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: upload-materials
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "sales_site"
                folder_path: "Promotions/{{promotion_name}}"
            - name: notify-sales
              type: call
              call: "msteams.post-message"
              with:
                team_id: "sales-team"
                channel_id: "promotions"
                message: "Promotion '{{promotion_name}}' created. {{discount_percentage}}% off from {{start_date}} to {{end_date}}. Salesforce: {{create-promotion.id}}. Materials: {{upload-materials.webUrl}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: promotions
          path: "/sobjects/Promotion__c"
          operations:
            - name: create-promotion
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/SD_PRICING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: pricing-conditions
          path: "/A_PricingCondition"
          operations:
            - name: create-pricing
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Queries Snowflake for planogram compliance scores by retailer and category, returning compliance percentage, out-of-stock rate, and facing count accuracy.

naftiko: "0.5"
info:
  label: "Retailer Planogram Compliance Check"
  description: "Queries Snowflake for planogram compliance scores by retailer and category, returning compliance percentage, out-of-stock rate, and facing count accuracy."
  tags:
    - retail
    - planogram
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: planogram-compliance
      port: 8080
      tools:
        - name: check-planogram-compliance
          description: "Query planogram compliance data by retailer and product category."
          inputParameters:
            - name: retailer_id
              in: body
              type: string
              description: "The retailer account ID."
            - name: category
              in: body
              type: string
              description: "Product category (e.g., biscuits, chocolate, gum)."
          call: "snowflake.execute-query"
          with:
            retailer_id: "{{retailer_id}}"
            category: "{{category}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves a retail account's details from Salesforce including account name, region, segment, and annual revenue for sales planning.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves a retail account's details from Salesforce including account name, region, segment, and annual revenue for sales planning."
  tags:
    - sales
    - salesforce
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: sales-accounts
      port: 8080
      tools:
        - name: get-retail-account
          description: "Look up a Salesforce account by account ID. Returns account name, region, segment, and annual revenue."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

Retrieves trade spend data from Salesforce for a retailer account and fiscal quarter, returning total spend, accruals, and remaining budget for trade promotion management.

naftiko: "0.5"
info:
  label: "Salesforce Trade Spend Lookup"
  description: "Retrieves trade spend data from Salesforce for a retailer account and fiscal quarter, returning total spend, accruals, and remaining budget for trade promotion management."
  tags:
    - trade-spend
    - salesforce
    - finance
capability:
  exposes:
    - type: mcp
      namespace: trade-spend
      port: 8080
      tools:
        - name: get-trade-spend
          description: "Look up trade spend by retailer and fiscal quarter. Returns total spend, accruals, and remaining budget."
          inputParameters:
            - name: retailer_account_id
              in: body
              type: string
              description: "The Salesforce retailer account ID."
            - name: fiscal_quarter
              in: body
              type: string
              description: "The fiscal quarter (e.g., Q1-2026, Q2-2026)."
          call: "salesforce.query-trade-spend"
          with:
            retailer_account_id: "{{retailer_account_id}}"
            fiscal_quarter: "{{fiscal_quarter}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: trade-spend
          path: "/query/?q=SELECT+Total_Spend__c,Accruals__c,Remaining_Budget__c+FROM+Trade_Spend__c+WHERE+Account__c='{{retailer_account_id}}'+AND+Fiscal_Quarter__c='{{fiscal_quarter}}'"
          inputParameters:
            - name: retailer_account_id
              in: query
            - name: fiscal_quarter
              in: query
          operations:
            - name: query-trade-spend
              method: GET

Retrieves current cocoa commodity pricing from SAP for a specified origin and grade, returning price per metric ton, currency, and last update timestamp for procurement planning.

naftiko: "0.5"
info:
  label: "SAP Cocoa Price Monitoring"
  description: "Retrieves current cocoa commodity pricing from SAP for a specified origin and grade, returning price per metric ton, currency, and last update timestamp for procurement planning."
  tags:
    - commodities
    - cocoa
    - sap
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: commodity-pricing
      port: 8080
      tools:
        - name: get-cocoa-price
          description: "Look up current cocoa pricing by origin and grade from SAP. Returns price per metric ton and currency."
          inputParameters:
            - name: origin
              in: body
              type: string
              description: "Cocoa origin country (e.g., Ghana, Ivory Coast, Ecuador)."
            - name: grade
              in: body
              type: string
              description: "Cocoa grade classification."
          call: "sap.get-commodity-price"
          with:
            origin: "{{origin}}"
            grade: "{{grade}}"
          outputParameters:
            - name: price_per_mt
              type: string
              mapping: "$.d.PricePerMetricTon"
            - name: currency
              type: string
              mapping: "$.d.Currency"
            - name: last_updated
              type: string
              mapping: "$.d.LastUpdated"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_COMMODITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: commodity-prices
          path: "/A_CommodityPrice(Origin='{{origin}}',Grade='{{grade}}')"
          inputParameters:
            - name: origin
              in: path
            - name: grade
              in: path
          operations:
            - name: get-commodity-price
              method: GET

Checks the status of a SAP Concur expense report by report ID, returning approval state, total amount, and submission date.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Status"
  description: "Checks the status of a SAP Concur expense report by report ID, returning approval state, total amount, and submission date."
  tags:
    - finance
    - sap-concur
    - expense
capability:
  exposes:
    - type: mcp
      namespace: expense-mgmt
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a SAP Concur expense report by report ID."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET

Retrieves demand forecast data from SAP APO for a material and planning horizon, returning forecast quantities by period for supply planning.

naftiko: "0.5"
info:
  label: "SAP Demand Forecast Retrieval"
  description: "Retrieves demand forecast data from SAP APO for a material and planning horizon, returning forecast quantities by period for supply planning."
  tags:
    - supply-chain
    - demand-planning
    - sap
capability:
  exposes:
    - type: mcp
      namespace: demand-forecast
      port: 8080
      tools:
        - name: get-demand-forecast
          description: "Look up demand forecast for a material over a planning horizon. Returns forecast quantities by period."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: planning_horizon_weeks
              in: body
              type: string
              description: "Number of weeks in the planning horizon."
          call: "sap.get-forecast"
          with:
            material_number: "{{material_number}}"
            planning_horizon_weeks: "{{planning_horizon_weeks}}"
          outputParameters:
            - name: forecast_periods
              type: string
              mapping: "$.d.results"
            - name: total_forecast_qty
              type: string
              mapping: "$.d.TotalForecastQuantity"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/APO_FORECAST_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: forecasts
          path: "/A_DemandForecast(Material='{{material_number}}',Horizon='{{planning_horizon_weeks}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: planning_horizon_weeks
              in: path
          operations:
            - name: get-forecast
              method: GET

Queries SAP S/4HANA for current inventory levels of a material by plant and storage location, returning available stock and reserved quantities.

naftiko: "0.5"
info:
  label: "SAP Material Inventory Lookup"
  description: "Queries SAP S/4HANA for current inventory levels of a material by plant and storage location, returning available stock and reserved quantities."
  tags:
    - supply-chain
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: get-material-inventory
          description: "Look up inventory for a material number at a specific plant. Returns available stock, reserved stock, and unit of measure."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant
              in: body
              type: string
              description: "The SAP plant code."
          call: "sap.get-inventory"
          with:
            material_number: "{{material_number}}"
            plant: "{{plant}}"
          outputParameters:
            - name: available_stock
              type: string
              mapping: "$.d.AvailableStock"
            - name: reserved_stock
              type: string
              mapping: "$.d.ReservedStock"
            - name: unit
              type: string
              mapping: "$.d.BaseUnit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: material-stock
          path: "/A_MaterialStock(Material='{{material_number}}',Plant='{{plant}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant
              in: path
          operations:
            - name: get-inventory
              method: GET

Queries SAP Plant Maintenance for equipment status by functional location, returning equipment ID, description, condition, and last maintenance date.

naftiko: "0.5"
info:
  label: "SAP Plant Equipment Status"
  description: "Queries SAP Plant Maintenance for equipment status by functional location, returning equipment ID, description, condition, and last maintenance date."
  tags:
    - manufacturing
    - maintenance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: equipment-status
      port: 8080
      tools:
        - name: get-equipment-status
          description: "Look up equipment at a SAP functional location. Returns equipment ID, description, condition, and last maintenance date."
          inputParameters:
            - name: functional_location
              in: body
              type: string
              description: "The SAP functional location ID."
          call: "sap.get-equipment"
          with:
            functional_location: "{{functional_location}}"
          outputParameters:
            - name: equipment_id
              type: string
              mapping: "$.d.Equipment"
            - name: description
              type: string
              mapping: "$.d.EquipmentDescription"
            - name: condition
              type: string
              mapping: "$.d.ConditionRating"
            - name: last_maintenance
              type: string
              mapping: "$.d.LastMaintenanceDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: equipment
          path: "/A_Equipment?$filter=FunctionalLocation eq '{{functional_location}}'"
          inputParameters:
            - name: functional_location
              in: query
          operations:
            - name: get-equipment
              method: GET

Looks up a SAP S/4HANA production order by number and returns order status, planned quantity, actual quantity, and completion date for manufacturing operations.

naftiko: "0.5"
info:
  label: "SAP Production Order Status"
  description: "Looks up a SAP S/4HANA production order by number and returns order status, planned quantity, actual quantity, and completion date for manufacturing operations."
  tags:
    - manufacturing
    - sap
    - production
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: get-production-order
          description: "Look up a SAP production order by order number. Returns status, planned quantity, actual quantity, and scheduled completion."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "The SAP production order number."
          call: "sap.get-production-order"
          with:
            order_number: "{{order_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OrderStatus"
            - name: planned_qty
              type: string
              mapping: "$.d.PlannedQuantity"
            - name: actual_qty
              type: string
              mapping: "$.d.ActualQuantity"
            - name: completion_date
              type: string
              mapping: "$.d.ScheduledCompletionDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/PP_ORDER_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: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET

Queries SAP S/4HANA for the procurement status of a raw material purchase order, returning vendor, delivery date, quantity, and goods receipt status.

naftiko: "0.5"
info:
  label: "SAP Raw Material Procurement Status"
  description: "Queries SAP S/4HANA for the procurement status of a raw material purchase order, returning vendor, delivery date, quantity, and goods receipt status."
  tags:
    - procurement
    - supply-chain
    - sap
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-procurement-status
          description: "Look up a SAP purchase order for raw materials. Returns vendor, delivery date, ordered quantity, and goods receipt status."
          inputParameters:
            - name: purchase_order
              in: body
              type: string
              description: "The SAP purchase order number."
          call: "sap.get-purchase-order"
          with:
            purchase_order: "{{purchase_order}}"
          outputParameters:
            - name: vendor
              type: string
              mapping: "$.d.Vendor"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
            - name: ordered_qty
              type: string
              mapping: "$.d.OrderedQuantity"
            - name: gr_status
              type: string
              mapping: "$.d.GoodsReceiptStatus"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_PO_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{purchase_order}}')"
          inputParameters:
            - name: purchase_order
              in: path
          operations:
            - name: get-purchase-order
              method: GET

Retrieves an IT incident from ServiceNow by incident number, returning priority, assigned group, status, and short description.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves an IT incident from ServiceNow by incident number, returning priority, assigned group, status, and short description."
  tags:
    - it-service
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-incidents
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number. Returns priority, state, assigned group, and description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: priority
              type: string
              mapping: "$.result[0].priority"
            - name: state
              type: string
              mapping: "$.result[0].state"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves metadata for a document stored in SharePoint by site and file path, returning file name, last modified date, and author.

naftiko: "0.5"
info:
  label: "SharePoint Document Retrieval"
  description: "Retrieves metadata for a document stored in SharePoint by site and file path, returning file name, last modified date, and author."
  tags:
    - document-management
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: get-document-metadata
          description: "Retrieve SharePoint document metadata by site and file path."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID."
            - name: file_path
              in: body
              type: string
              description: "The file path relative to drive root."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 1"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-1
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-1"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 11"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-11
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 12"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-12
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-12"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "snacks.workflow_12"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 13"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-13
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-13"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-13
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 14"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-14
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-14"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-14
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 15"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-15
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-15"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#snacks"
                text: "Completed workflow 15: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 17"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-17
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 19"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-19
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-19"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "snacks"
                message: "Workflow 19 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 2"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-2
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-2"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 20"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-20
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-20
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mondelez-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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 21"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-21
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-21"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 23"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-23
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 24"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-24
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-24"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "snacks.workflow_24"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 25"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-25
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-25"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-25
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 26"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-26
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-26"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-26
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 27"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-27
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-27"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#snacks"
                text: "Completed workflow 27: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 29"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-29
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 3"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-3
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-3"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#snacks"
                text: "Completed workflow 3: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 31"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-31
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-31"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "snacks"
                message: "Workflow 31 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 32"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-32
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-32
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mondelez-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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 33"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-33
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-33"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 35"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-35
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 5"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-5
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

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

Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 7"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-7
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-7"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "snacks"
                message: "Workflow 7 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 8"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-8
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-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: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-8
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://mondelez-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 snacks operations including data retrieval, processing, and automated notification for Mondelez.

naftiko: "0.5"
info:
  label: "Mondelez Workflow 9"
  description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
  tags:
    - snacks
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: snacks
      port: 8080
      tools:
        - name: mondelez-workflow-9
          description: "Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "mondelez-ops.run-workflow-9"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: mondelez-ops
      baseUri: "https://api.mondelez.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 1"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-1
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-1"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 10"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-10
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-10"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 11"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-11
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-11"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 12"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-12
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-12"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 13"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-13
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-13"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 14"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-14
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-14"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 15"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-15
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-15"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 2"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-2
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-2"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 3"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-3
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-3"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 4"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-4
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-4"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 5"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-5
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-5"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 6"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-6
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-6"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 7"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-7
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-7"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

naftiko: "0.5"
info:
  label: "Mondelez Data Lookup 8"
  description: "Retrieves operational data for Mondelez snacks workflows."
  tags:
    - snacks
    - operations
capability:
  exposes:
    - type: mcp
      namespace: mondelez-data
      port: 8080
      tools:
        - name: get-data-8
          description: "Retrieves operational data for Mondelez snacks workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "mondelez-data.get-data-8"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: mondelez-data
      baseUri: "https://api.mondelez.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mondelez_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 Mondelez snacks workflows.

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

Executes a parameterized query against the Snowflake data warehouse to retrieve aggregate sales volumes by product category and region.

naftiko: "0.5"
info:
  label: "Snowflake Sales Data Query"
  description: "Executes a parameterized query against the Snowflake data warehouse to retrieve aggregate sales volumes by product category and region."
  tags:
    - data-warehouse
    - snowflake
    - sales
capability:
  exposes:
    - type: mcp
      namespace: sales-warehouse
      port: 8080
      tools:
        - name: query-sales-summary
          description: "Query Snowflake for aggregate sales data by product category and region."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "Product category (e.g., biscuits, chocolate, gum)."
            - name: region
              in: body
              type: string
              description: "Sales region."
          call: "snowflake.execute-query"
          with:
            category: "{{category}}"
            region: "{{region}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Queries Snowflake for products approaching shelf life expiry within a specified number of days, returning material number, batch, expiry date, and warehouse location.

naftiko: "0.5"
info:
  label: "Snowflake Shelf Life Expiry Report"
  description: "Queries Snowflake for products approaching shelf life expiry within a specified number of days, returning material number, batch, expiry date, and warehouse location."
  tags:
    - quality
    - shelf-life
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: shelf-life-monitoring
      port: 8080
      tools:
        - name: query-expiring-products
          description: "Query Snowflake for products expiring within a given number of days at a specific warehouse."
          inputParameters:
            - name: days_until_expiry
              in: body
              type: string
              description: "Number of days until expiry threshold."
            - name: warehouse_code
              in: body
              type: string
              description: "The warehouse location code."
          call: "snowflake.execute-query"
          with:
            days_until_expiry: "{{days_until_expiry}}"
            warehouse_code: "{{warehouse_code}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Onboards a new ingredient supplier by creating a SAP vendor master record, a Salesforce supplier account, a Jira onboarding checklist, uploading contracts to SharePoint, and notifying the procurement team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supplier Onboarding Pipeline"
  description: "Onboards a new ingredient supplier by creating a SAP vendor master record, a Salesforce supplier account, a Jira onboarding checklist, uploading contracts to SharePoint, and notifying the procurement team via Microsoft Teams."
  tags:
    - procurement
    - supplier
    - sap
    - salesforce
    - jira
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supplier-onboarding
      port: 8080
      tools:
        - name: onboard-supplier
          description: "Given supplier details, create records in SAP, Salesforce, Jira, and SharePoint, then notify procurement."
          inputParameters:
            - name: supplier_name
              in: body
              type: string
              description: "The supplier company name."
            - name: ingredient_category
              in: body
              type: string
              description: "The ingredient category (e.g., cocoa, sugar, wheat flour)."
            - name: country
              in: body
              type: string
              description: "Supplier country of origin."
          steps:
            - name: create-vendor-master
              type: call
              call: "sap.create-vendor"
              with:
                supplier_name: "{{supplier_name}}"
                category: "{{ingredient_category}}"
                country: "{{country}}"
            - name: create-supplier-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{supplier_name}}"
                type: "Supplier"
                category: "{{ingredient_category}}"
            - name: create-onboarding-checklist
              type: call
              call: "jira.create-issue"
              with:
                project: "PROC"
                summary: "Supplier Onboarding: {{supplier_name}} ({{ingredient_category}})"
                description: "Onboard {{supplier_name}} from {{country}} for {{ingredient_category}}. SAP vendor: {{create-vendor-master.VendorNumber}}. Salesforce: {{create-supplier-account.id}}."
                issuetype: "Epic"
            - name: create-contract-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "procurement-site"
                folder_path: "Suppliers/{{supplier_name}}"
            - name: notify-procurement
              type: call
              call: "msteams.post-message"
              with:
                team_id: "procurement-team"
                channel_id: "onboarding"
                message: "New supplier onboarding: {{supplier_name}} ({{ingredient_category}}, {{country}}). SAP: {{create-vendor-master.VendorNumber}}. Salesforce: {{create-supplier-account.id}}. Jira: {{create-onboarding-checklist.key}}. Contracts: {{create-contract-folder.webUrl}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_VENDOR_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_Vendor"
          operations:
            - name: create-vendor
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://mondelez.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Responds to supply chain disruptions by querying SAP for affected purchase orders, creating a ServiceNow incident, notifying the logistics team via Microsoft Teams, and updating the disruption tracker in Salesforce.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Response"
  description: "Responds to supply chain disruptions by querying SAP for affected purchase orders, creating a ServiceNow incident, notifying the logistics team via Microsoft Teams, and updating the disruption tracker in Salesforce."
  tags:
    - supply-chain
    - disruption
    - sap
    - servicenow
    - microsoft-teams
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-disruption
      port: 8080
      tools:
        - name: respond-to-disruption
          description: "Given a supplier ID and disruption type, identify affected POs, create incident, notify logistics, and update tracker."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP supplier ID."
            - name: disruption_type
              in: body
              type: string
              description: "Type of disruption (e.g., delay, shortage, quality_issue)."
            - name: affected_plant
              in: body
              type: string
              description: "The affected manufacturing plant code."
          steps:
            - name: get-affected-pos
              type: call
              call: "sap.query-open-pos"
              with:
                supplier_id: "{{supplier_id}}"
                plant: "{{affected_plant}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supply chain disruption: {{disruption_type}} - Supplier {{supplier_id}}"
                category: "supply_chain"
                description: "Disruption type: {{disruption_type}}. Supplier: {{supplier_id}}. Plant: {{affected_plant}}. Affected POs: {{get-affected-pos.count}}."
            - name: notify-logistics
              type: call
              call: "msteams.post-message"
              with:
                team_id: "supply-chain-team"
                channel_id: "disruptions"
                message: "ALERT: {{disruption_type}} from supplier {{supplier_id}} affecting plant {{affected_plant}}. {{get-affected-pos.count}} POs impacted. Incident: {{create-incident.number}}."
            - name: update-tracker
              type: call
              call: "salesforce.create-disruption"
              with:
                supplier_id: "{{supplier_id}}"
                disruption_type: "{{disruption_type}}"
                incident_number: "{{create-incident.number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder?$filter=Supplier eq '{{supplier_id}}' and Plant eq '{{plant}}' and Status eq 'Open'"
          inputParameters:
            - name: supplier_id
              in: query
            - name: plant
              in: query
          operations:
            - name: query-open-pos
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: disruptions
          path: "/sobjects/Supply_Chain_Disruption__c"
          operations:
            - name: create-disruption
              method: POST

Compiles sustainability metrics by querying energy and waste data from Snowflake, pulling sourcing data from SAP, uploading the report to SharePoint, and notifying the sustainability team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Sustainability Reporting Pipeline"
  description: "Compiles sustainability metrics by querying energy and waste data from Snowflake, pulling sourcing data from SAP, uploading the report to SharePoint, and notifying the sustainability team via Microsoft Teams."
  tags:
    - sustainability
    - reporting
    - snowflake
    - sap
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sustainability-reporting
      port: 8080
      tools:
        - name: generate-sustainability-report
          description: "Given a reporting period and scope, compile sustainability data and generate the report."
          inputParameters:
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period (e.g., 2025-annual)."
            - name: scope
              in: body
              type: string
              description: "Report scope (e.g., global, region, plant)."
          steps:
            - name: query-environmental-data
              type: call
              call: "snowflake.execute-query"
              with:
                reporting_period: "{{reporting_period}}"
                scope: "{{scope}}"
            - name: get-sourcing-data
              type: call
              call: "sap.get-sourcing-metrics"
              with:
                period: "{{reporting_period}}"
            - name: upload-report
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "sustainability_site"
                folder_path: "Reports/{{reporting_period}}/{{scope}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "sustainability-team"
                channel_id: "reports"
                message: "Sustainability report for {{reporting_period}} ({{scope}}) generated. Environmental data: {{query-environmental-data.rowCount}} records. Report: {{upload-report.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_SOURCING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sourcing-metrics
          path: "/A_SourcingMetrics?$filter=Period eq '{{period}}'"
          inputParameters:
            - name: period
              in: query
          operations:
            - name: get-sourcing-metrics
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves metadata for a Tableau workbook including owner, last refresh time, and data source connections.

naftiko: "0.5"
info:
  label: "Tableau Workbook Metadata"
  description: "Retrieves metadata for a Tableau workbook including owner, last refresh time, and data source connections."
  tags:
    - analytics
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: bi-metadata
      port: 8080
      tools:
        - name: get-workbook-metadata
          description: "Retrieve Tableau workbook metadata by workbook ID."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook ID."
          call: "tableau.get-workbook"
          with:
            workbook_id: "{{workbook_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://mondelez.online.tableau.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}"
          inputParameters:
            - name: workbook_id
              in: path
          operations:
            - name: get-workbook
              method: GET

Analyzes trade spend by pulling promotion spend from Salesforce, comparing against SAP actuals, building analytics in Snowflake, refreshing Power BI dashboards, and notifying finance.

naftiko: "0.5"
info:
  label: "Trade Spend Analysis Pipeline"
  description: "Analyzes trade spend by pulling promotion spend from Salesforce, comparing against SAP actuals, building analytics in Snowflake, refreshing Power BI dashboards, and notifying finance."
  tags:
    - finance
    - trade-spend
    - salesforce
    - sap
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: trade-spend
      port: 8080
      tools:
        - name: analyze-trade-spend
          description: "Given a brand and period, analyze trade spend across planned vs actual."
          inputParameters:
            - name: brand
              in: body
              type: string
              description: "The brand to analyze."
            - name: period
              in: body
              type: string
              description: "The analysis period (e.g., Q1-2026)."
          steps:
            - name: get-planned-spend
              type: call
              call: "salesforce.get-trade-plans"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: get-actual-spend
              type: call
              call: "sap.get-trade-actuals"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: run-analysis
              type: call
              call: "snowflake.execute-query"
              with:
                brand: "{{brand}}"
                period: "{{period}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "trade-spend-dataset"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://mondelez.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: trade-plans
          path: "/query/?q=SELECT+Brand__c,Planned_Spend__c+FROM+Trade_Plan__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'"
          inputParameters:
            - name: brand
              in: query
            - name: period
              in: query
          operations:
            - name: get-trade-plans
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/FI_TRADE_SPEND_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: trade-actuals
          path: "/A_TradeSpend?$filter=Brand eq '{{brand}}' and Period eq '{{period}}'"
          inputParameters:
            - name: brand
              in: query
            - name: period
              in: query
          operations:
            - name: get-trade-actuals
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              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}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Generates vendor scorecards by pulling delivery performance from SAP, quality metrics from ServiceNow, and cost data from Snowflake, then uploading the scorecard to SharePoint and notifying procurement.

naftiko: "0.5"
info:
  label: "Vendor Scorecard Generator"
  description: "Generates vendor scorecards by pulling delivery performance from SAP, quality metrics from ServiceNow, and cost data from Snowflake, then uploading the scorecard to SharePoint and notifying procurement."
  tags:
    - procurement
    - vendor-management
    - sap
    - servicenow
    - snowflake
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: vendor-scorecards
      port: 8080
      tools:
        - name: generate-vendor-scorecard
          description: "Given a vendor ID and period, compile delivery, quality, and cost metrics into a scorecard."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "The SAP vendor ID."
            - name: period
              in: body
              type: string
              description: "The evaluation period (e.g., Q1-2026)."
          steps:
            - name: get-delivery-metrics
              type: call
              call: "sap.get-vendor-deliveries"
              with:
                vendor_id: "{{vendor_id}}"
                period: "{{period}}"
            - name: get-quality-metrics
              type: call
              call: "servicenow.query-vendor-incidents"
              with:
                vendor_id: "{{vendor_id}}"
            - name: get-cost-metrics
              type: call
              call: "snowflake.execute-query"
              with:
                vendor_id: "{{vendor_id}}"
                period: "{{period}}"
            - name: upload-scorecard
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "procurement_site"
                folder_path: "Scorecards/{{vendor_id}}/{{period}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendor-deliveries
          path: "/A_PurchaseOrder?$filter=Supplier eq '{{vendor_id}}'"
          inputParameters:
            - name: vendor_id
              in: query
          operations:
            - name: get-vendor-deliveries
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://mondelez.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: vendor-incidents
          path: "/table/incident?sysparm_query=vendor={{vendor_id}}"
          inputParameters:
            - name: vendor_id
              in: query
          operations:
            - name: query-vendor-incidents
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST

Plans warehouse capacity by querying current stock levels from SAP, forecasting inbound shipments from Snowflake, and alerting the logistics team via Microsoft Teams when capacity thresholds are at risk.

naftiko: "0.5"
info:
  label: "Warehouse Capacity Planning"
  description: "Plans warehouse capacity by querying current stock levels from SAP, forecasting inbound shipments from Snowflake, and alerting the logistics team via Microsoft Teams when capacity thresholds are at risk."
  tags:
    - supply-chain
    - warehouse
    - sap
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: warehouse-planning
      port: 8080
      tools:
        - name: assess-warehouse-capacity
          description: "Given a warehouse code, assess current capacity and forecast inbound volumes."
          inputParameters:
            - name: warehouse_code
              in: body
              type: string
              description: "The SAP warehouse/storage location code."
            - name: forecast_days
              in: body
              type: string
              description: "Number of days to forecast."
          steps:
            - name: get-current-stock
              type: call
              call: "sap.get-warehouse-stock"
              with:
                warehouse: "{{warehouse_code}}"
            - name: forecast-inbound
              type: call
              call: "snowflake.execute-query"
              with:
                warehouse: "{{warehouse_code}}"
                days: "{{forecast_days}}"
            - name: alert-logistics
              type: call
              call: "msteams.post-message"
              with:
                team_id: "logistics-team"
                channel_id: "capacity"
                message: "Warehouse {{warehouse_code}} capacity: Current stock {{get-current-stock.TotalQuantity}} units. {{forecast_days}}-day inbound forecast: {{forecast-inbound.projected_inbound}} units."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_WAREHOUSE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: warehouse-stock
          path: "/A_WarehouseStock?$filter=StorageLocation eq '{{warehouse}}'"
          inputParameters:
            - name: warehouse
              in: query
          operations:
            - name: get-warehouse-stock
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://mondelez.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Fetches an employee's profile from Workday by worker ID, including department, title, manager, and location for HR operations.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Fetches an employee's profile from Workday by worker ID, including department, title, manager, and location for HR operations."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-employee
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Retrieve a Workday employee profile by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_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: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET