Nestlé Capabilities

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

Sort
Expand

Pulls page-level engagement metrics from Adobe Analytics for a Nestlé brand property, including page views, unique visitors, and average time on page.

naftiko: "0.5"
info:
  label: "Adobe Analytics Brand Page Metrics"
  description: "Pulls page-level engagement metrics from Adobe Analytics for a Nestlé brand property, including page views, unique visitors, and average time on page."
  tags:
    - marketing
    - analytics
    - adobe-analytics
capability:
  exposes:
    - type: mcp
      namespace: brand-analytics
      port: 8080
      tools:
        - name: get-page-metrics
          description: "Retrieve page-level engagement metrics from Adobe Analytics for a specified report suite and date range."
          inputParameters:
            - name: report_suite_id
              in: body
              type: string
              description: "The Adobe Analytics report suite ID for the brand property."
            - name: date_range
              in: body
              type: string
              description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
          call: "adobe.get-report"
          with:
            rsid: "{{report_suite_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: page_views
              type: string
              mapping: "$.rows[0].value"
            - name: unique_visitors
              type: string
              mapping: "$.rows[1].value"
            - name: avg_time_on_page
              type: string
              mapping: "$.rows[2].value"
  consumes:
    - type: http
      namespace: adobe
      baseUri: "https://analytics.adobe.io/api/nestle"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/reports"
          operations:
            - name: get-report
              method: POST

# ---------- 7. Datadog Factory System Health (simple) ----------

Retrieves product recipe data from SAP, cross-references allergen declarations with the regulatory database in Informatica, and creates a ServiceNow compliance task if discrepancies are detected.

naftiko: "0.5"
info:
  label: "Allergen Label Compliance Checker"
  description: "Retrieves product recipe data from SAP, cross-references allergen declarations with the regulatory database in Informatica, and creates a ServiceNow compliance task if discrepancies are detected."
  tags:
    - quality
    - food-safety
    - sap
    - informatica
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: allergen-compliance
      port: 8080
      tools:
        - name: check-allergen-compliance
          description: "Given a material number, retrieve recipe allergens from SAP, validate against Informatica regulatory data, and flag issues in ServiceNow."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number for the finished product."
            - name: target_market
              in: body
              type: string
              description: "The target market country code (ISO 3166)."
          steps:
            - name: get-recipe
              type: call
              call: "sap.get-recipe-allergens"
              with:
                material: "{{material_number}}"
            - name: get-regulations
              type: call
              call: "informatica.get-allergen-reqs"
              with:
                country: "{{target_market}}"
                allergens: "{{get-recipe.allergen_list}}"
            - name: create-compliance-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Allergen compliance review: {{material_number}} for {{target_market}}"
                description: "Material: {{material_number}}. Allergens declared: {{get-recipe.allergen_list}}. Target market: {{target_market}}. Regulatory requirements: {{get-regulations.required_declarations}}. Gaps: {{get-regulations.gaps}}."
                assigned_group: "Regulatory_Affairs"
                category: "allergen_compliance"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_RECIPE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: recipes
          path: "/A_RecipeAllergen?$filter=Material eq '{{material}}'"
          inputParameters:
            - name: material
              in: query
          operations:
            - name: get-recipe-allergens
              method: GET
    - type: http
      namespace: informatica
      baseUri: "https://nestle.informaticacloud.com/active-bpel/rt/v1"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: allergen-regulations
          path: "/regulatory/allergens"
          operations:
            - name: get-allergen-reqs
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 44. Retail Promotion Calendar Sync (orchestrated) ----------

Checks the status of an Azure Data Factory pipeline run, and if failed, creates a ServiceNow incident and alerts the data engineering team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Azure Data Factory Pipeline Monitor"
  description: "Checks the status of an Azure Data Factory pipeline run, and if failed, creates a ServiceNow incident and alerts the data engineering team in Microsoft Teams."
  tags:
    - data
    - monitoring
    - azure-data-factory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data-pipeline-monitor
      port: 8080
      tools:
        - name: check-pipeline-status
          description: "Given an ADF pipeline run ID, check status and escalate failures to ServiceNow and Microsoft Teams."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The Azure Data Factory pipeline run ID."
            - name: pipeline_name
              in: body
              type: string
              description: "The pipeline name for context."
          steps:
            - name: get-run
              type: call
              call: "adf.get-pipeline-run"
              with:
                run_id: "{{run_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "ADF pipeline failure: {{pipeline_name}}"
                description: "Pipeline: {{pipeline_name}}. Run ID: {{run_id}}. Status: {{get-run.status}}. Error: {{get-run.message}}. Duration: {{get-run.durationInMs}}ms."
                priority: "2"
                category: "data_pipeline"
                assigned_group: "Data_Engineering"
            - name: alert-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "data-engineering"
                channel_id: "pipeline-alerts"
                text: "ADF Pipeline Failed: {{pipeline_name}} (run {{run_id}}). Status: {{get-run.status}}. Error: {{get-run.message}}. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/nestle-data-rg/providers/Microsoft.DataFactory/factories/nestle-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: pipeline-runs
          path: "/pipelineruns/{{run_id}}?api-version=2018-06-01"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-pipeline-run
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.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-channel
              method: POST

# ---------- 34. Distributor Order Sync Pipeline (orchestrated) ----------

Retrieves a product listing from Nestlé's BigCommerce e-commerce store by product ID, returning name, SKU, price, and inventory level.

naftiko: "0.5"
info:
  label: "BigCommerce Product Catalog Lookup"
  description: "Retrieves a product listing from Nestlé's BigCommerce e-commerce store by product ID, returning name, SKU, price, and inventory level."
  tags:
    - e-commerce
    - catalog
    - bigcommerce
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-catalog
      port: 8080
      tools:
        - name: get-product
          description: "Fetch a BigCommerce product by ID. Returns name, SKU, price, and inventory."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The BigCommerce product ID."
          call: "bigcommerce.get-product"
          with:
            product_id: "{{product_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.data.name"
            - name: sku
              type: string
              mapping: "$.data.sku"
            - name: price
              type: string
              mapping: "$.data.price"
            - name: inventory_level
              type: string
              mapping: "$.data.inventory_level"
  consumes:
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/nestle-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      inputParameters:
        - name: X-Auth-Token
          in: header
          value: "$secrets.bigcommerce_access_token"
      resources:
        - name: products
          path: "/catalog/products/{{product_id}}"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET

# ---------- 13. Circana Market Share Report (simple) ----------

Initiates a new brand campaign by creating an Adobe Campaign workflow, setting up Google Tag Manager tracking, and notifying the brand team via Microsoft Teams with campaign links.

naftiko: "0.5"
info:
  label: "Brand Campaign Launch Orchestrator"
  description: "Initiates a new brand campaign by creating an Adobe Campaign workflow, setting up Google Tag Manager tracking, and notifying the brand team via Microsoft Teams with campaign links."
  tags:
    - marketing
    - campaign-management
    - adobe-campaign
    - google-tag-manager
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: campaign-launch
      port: 8080
      tools:
        - name: launch-campaign
          description: "Given campaign name, brand, and target URL, create an Adobe Campaign workflow, set up GTM tracking, and notify the brand team."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The campaign name."
            - name: brand
              in: body
              type: string
              description: "The Nestlé brand (e.g. Nescafé, KitKat, Purina)."
            - name: landing_url
              in: body
              type: string
              description: "The campaign landing page URL."
          steps:
            - name: create-campaign
              type: call
              call: "adobe-campaign.create-workflow"
              with:
                label: "{{campaign_name}} - {{brand}}"
                type: "campaign"
                folder_id: "brand_campaigns"
            - name: setup-tracking
              type: call
              call: "gtm.create-tag"
              with:
                account_id: "nestle-global"
                container_id: "{{brand}}-web"
                tag_name: "{{campaign_name}}_tracking"
                firing_url: "{{landing_url}}"
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "brand-marketing-{{brand}}"
                channel_id: "campaigns"
                text: "Campaign '{{campaign_name}}' launched for {{brand}}. Adobe Campaign ID: {{create-campaign.workflow_id}}. GTM tag: {{setup-tracking.tag_id}}. Landing: {{landing_url}}"
  consumes:
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/nestle/campaign"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: workflows
          path: "/profileAndServicesExt/workflow"
          operations:
            - name: create-workflow
              method: POST
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: tags
          path: "/accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags"
          inputParameters:
            - name: account_id
              in: path
            - name: container_id
              in: path
          operations:
            - name: create-tag
              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-channel
              method: POST

# ---------- 21. Sustainability Metrics Reporting Pipeline (orchestrated) ----------

When a marketing designer submits a Canva design for review, uploads the exported asset to Box, creates a ServiceNow approval task, and notifies the brand manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Canva Brand Asset Approval Workflow"
  description: "When a marketing designer submits a Canva design for review, uploads the exported asset to Box, creates a ServiceNow approval task, and notifies the brand manager in Microsoft Teams."
  tags:
    - marketing
    - design
    - canva
    - box
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: brand-asset-approval
      port: 8080
      tools:
        - name: submit-asset-for-approval
          description: "Given a Canva design ID and brand, export the asset, upload to Box, create an approval task, and notify the brand manager."
          inputParameters:
            - name: design_id
              in: body
              type: string
              description: "The Canva design ID."
            - name: brand
              in: body
              type: string
              description: "The Nestlé brand name."
            - name: designer_name
              in: body
              type: string
              description: "The name of the submitting designer."
          steps:
            - name: export-design
              type: call
              call: "canva.export-design"
              with:
                design_id: "{{design_id}}"
                format: "pdf"
            - name: upload-to-box
              type: call
              call: "box.upload-file"
              with:
                parent_folder_id: "brand_assets_{{brand}}"
                file_name: "{{design_id}}_review.pdf"
                file_url: "{{export-design.download_url}}"
            - name: create-approval
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Brand asset approval: {{brand}} design {{design_id}}"
                description: "Designer: {{designer_name}}. Brand: {{brand}}. Design ID: {{design_id}}. Box link: {{upload-to-box.shared_link}}. Please review for brand guidelines compliance."
                assigned_group: "Brand_Management_{{brand}}"
                category: "brand_asset_approval"
            - name: notify-manager
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "brand-marketing-{{brand}}"
                channel_id: "asset-approvals"
                text: "New asset for review from {{designer_name}}: {{brand}} design {{design_id}}. Preview: {{upload-to-box.shared_link}}. Approval task: {{create-approval.number}}."
  consumes:
    - type: http
      namespace: canva
      baseUri: "https://api.canva.com/rest/v1"
      authentication:
        type: bearer
        token: "$secrets.canva_token"
      resources:
        - name: exports
          path: "/designs/{{design_id}}/export"
          inputParameters:
            - name: design_id
              in: path
          operations:
            - name: export-design
              method: POST
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: uploads
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

# ---------- 48. Elasticsearch Product Search Index Refresh (orchestrated) ----------

Pulls market share data from Circana (formerly IRI) for a specified Nestlé product category, geography, and time period. Used by brand strategy teams to benchmark competitive positioning.

naftiko: "0.5"
info:
  label: "Circana Market Share Report"
  description: "Pulls market share data from Circana (formerly IRI) for a specified Nestlé product category, geography, and time period. Used by brand strategy teams to benchmark competitive positioning."
  tags:
    - analytics
    - market-research
    - circana
capability:
  exposes:
    - type: mcp
      namespace: market-intelligence
      port: 8080
      tools:
        - name: get-market-share
          description: "Query Circana for market share data by category, geography, and time period."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "The product category identifier."
            - name: geography
              in: body
              type: string
              description: "The geographic market code."
            - name: period
              in: body
              type: string
              description: "The time period (e.g. 4W, 12W, 52W)."
          call: "circana.get-share-data"
          with:
            category: "{{category}}"
            geography: "{{geography}}"
            period: "{{period}}"
          outputParameters:
            - name: dollar_share
              type: string
              mapping: "$.data.dollar_share"
            - name: unit_share
              type: string
              mapping: "$.data.unit_share"
            - name: share_change
              type: string
              mapping: "$.data.share_change_vs_ya"
  consumes:
    - type: http
      namespace: circana
      baseUri: "https://api.circana.com/v2"
      authentication:
        type: bearer
        token: "$secrets.circana_token"
      resources:
        - name: market-share
          path: "/market-measurement/share"
          operations:
            - name: get-share-data
              method: POST

# ---------- 14. Confluence Factory SOP Search (simple) ----------

When a cold chain sensor reports a temperature excursion, retrieves shipment details from SAP transportation, creates a quality hold in ServiceNow, and alerts the logistics team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Cold Chain Temperature Excursion Handler"
  description: "When a cold chain sensor reports a temperature excursion, retrieves shipment details from SAP transportation, creates a quality hold in ServiceNow, and alerts the logistics team in Microsoft Teams."
  tags:
    - supply-chain
    - quality
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cold-chain
      port: 8080
      tools:
        - name: handle-temperature-excursion
          description: "Given a shipment number and excursion details, retrieve SAP shipment data, create a quality hold, and alert logistics."
          inputParameters:
            - name: shipment_number
              in: body
              type: string
              description: "The SAP shipment number."
            - name: max_temperature
              in: body
              type: string
              description: "The maximum recorded temperature during excursion."
            - name: excursion_duration_minutes
              in: body
              type: string
              description: "Duration of the temperature excursion in minutes."
          steps:
            - name: get-shipment
              type: call
              call: "sap.get-shipment"
              with:
                shipment_number: "{{shipment_number}}"
            - name: create-hold
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Cold chain excursion: Shipment {{shipment_number}}"
                description: "Shipment: {{shipment_number}}. Origin: {{get-shipment.origin}}. Destination: {{get-shipment.destination}}. Product: {{get-shipment.material_description}}. Max temp: {{max_temperature}}C (limit: {{get-shipment.temp_limit}}C). Duration: {{excursion_duration_minutes}} min. Quality hold required."
                priority: "1"
                assigned_group: "Quality_Cold_Chain"
                category: "temperature_excursion"
            - name: alert-logistics
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "logistics-operations"
                channel_id: "cold-chain-alerts"
                text: "COLD CHAIN ALERT: Shipment {{shipment_number}} excursion detected. Product: {{get-shipment.material_description}}. Max temp: {{max_temperature}}C for {{excursion_duration_minutes}} min. Quality hold: {{create-hold.number}}. Immediate disposition required."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: shipments
          path: "/A_Shipment('{{shipment_number}}')"
          inputParameters:
            - name: shipment_number
              in: path
          operations:
            - name: get-shipment
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

# ---------- 47. Canva Brand Asset Approval Workflow (orchestrated) ----------

Searches Nestlé's Confluence knowledge base for standard operating procedures relevant to a manufacturing query. Returns matching page titles, excerpts, and links.

naftiko: "0.5"
info:
  label: "Confluence Factory SOP Search"
  description: "Searches Nestlé's Confluence knowledge base for standard operating procedures relevant to a manufacturing query. Returns matching page titles, excerpts, and links."
  tags:
    - manufacturing
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: factory-knowledge
      port: 8080
      tools:
        - name: search-sops
          description: "Search Confluence for factory standard operating procedures by keyword."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search keyword or phrase."
            - name: space_key
              in: body
              type: string
              description: "The Confluence space key for the factory SOP library."
          call: "confluence.search"
          with:
            cql: "space={{space_key}} AND type=page AND text~\"{{query}}\""
          outputParameters:
            - name: results
              type: string
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://nestle.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql={{cql}}"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search
              method: GET

# ---------- 15. Oracle Cloud Inventory Balance (simple) ----------

Receives a consumer complaint from Salesforce Service Cloud, enriches with product batch data from SAP, classifies severity via Azure Machine Learning, and routes a ServiceNow case to the appropriate quality team.

naftiko: "0.5"
info:
  label: "Consumer Complaint Triage"
  description: "Receives a consumer complaint from Salesforce Service Cloud, enriches with product batch data from SAP, classifies severity via Azure Machine Learning, and routes a ServiceNow case to the appropriate quality team."
  tags:
    - quality
    - customer-service
    - salesforce
    - sap
    - azure-machine-learning
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: complaint-triage
      port: 8080
      tools:
        - name: triage-complaint
          description: "Given a Salesforce case ID, enrich with SAP batch data, classify severity, and route to ServiceNow."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce case ID."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: get-batch
              type: call
              call: "sap.get-batch"
              with:
                batch_number: "{{get-case.batch_number}}"
                material_number: "{{get-case.product_code}}"
            - name: classify-severity
              type: call
              call: "azureml.classify-complaint"
              with:
                complaint_text: "{{get-case.description}}"
                product_category: "{{get-batch.material_group}}"
            - name: create-quality-case
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Consumer complaint: {{get-case.subject}} — Severity {{classify-severity.severity_level}}"
                description: "Salesforce case: {{case_id}}. Consumer: {{get-case.contact_name}}. Product: {{get-batch.material_description}} (batch {{get-case.batch_number}}). Plant: {{get-batch.plant}}. Severity: {{classify-severity.severity_level}}. Classification: {{classify-severity.category}}."
                assigned_group: "Quality_Consumer_Affairs"
                priority: "{{classify-severity.priority}}"
                category: "consumer_complaint"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://nestle.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: batches
          path: "/A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: batch_number
              in: path
          operations:
            - name: get-batch
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://nestle-ml.westeurope.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_token"
      resources:
        - name: complaint-classifier
          path: "/score"
          operations:
            - name: classify-complaint
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 39. Product Launch Readiness Checker (orchestrated) ----------

Queries Datadog for infrastructure host health metrics at a Nestlé manufacturing facility, returning CPU, memory, and alert counts for the last hour.

naftiko: "0.5"
info:
  label: "Datadog Factory System Health"
  description: "Queries Datadog for infrastructure host health metrics at a Nestlé manufacturing facility, returning CPU, memory, and alert counts for the last hour."
  tags:
    - manufacturing
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: factory-monitoring
      port: 8080
      tools:
        - name: get-host-metrics
          description: "Retrieve CPU, memory, and active alert counts for a Datadog-monitored factory host."
          inputParameters:
            - name: host_name
              in: body
              type: string
              description: "The Datadog hostname for the factory system."
          call: "datadog.get-host-totals"
          with:
            filter: "{{host_name}}"
          outputParameters:
            - name: cpu_usage
              type: string
              mapping: "$.host_list[0].metrics.cpu"
            - name: memory_usage
              type: string
              mapping: "$.host_list[0].metrics.memory"
            - name: active_alerts
              type: string
              mapping: "$.host_list[0].alerts_count"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: hosts
          path: "/hosts?filter={{filter}}"
          inputParameters:
            - name: filter
              in: query
          operations:
            - name: get-host-totals
              method: GET

# ---------- 8. SAP Purchase Order Status (simple) ----------

Pulls demand forecast data from Azure Databricks, converts to a planned order in SAP, and notifies the production planning team in Microsoft Teams with the scheduling details.

naftiko: "0.5"
info:
  label: "Demand Forecast to Production Planning"
  description: "Pulls demand forecast data from Azure Databricks, converts to a planned order in SAP, and notifies the production planning team in Microsoft Teams with the scheduling details."
  tags:
    - supply-chain
    - forecasting
    - azure-databricks
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: demand-planning
      port: 8080
      tools:
        - name: convert-forecast-to-plan
          description: "Given a forecast run ID and material number, retrieve the forecast from Databricks, create a planned order in SAP, and notify the planning team."
          inputParameters:
            - name: forecast_run_id
              in: body
              type: string
              description: "The Databricks forecast run identifier."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code."
          steps:
            - name: get-forecast
              type: call
              call: "databricks.get-forecast"
              with:
                run_id: "{{forecast_run_id}}"
                material: "{{material_number}}"
            - name: create-planned-order
              type: call
              call: "sap.create-planned-order"
              with:
                material: "{{material_number}}"
                plant: "{{plant_code}}"
                quantity: "{{get-forecast.recommended_quantity}}"
                start_date: "{{get-forecast.production_start}}"
                end_date: "{{get-forecast.production_end}}"
            - name: notify-planners
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "supply-planning"
                channel_id: "production-orders"
                text: "Planned order created from forecast: Material {{material_number}} at plant {{plant_code}}. Qty: {{get-forecast.recommended_quantity}}. Production window: {{get-forecast.production_start}} to {{get-forecast.production_end}}. SAP order: {{create-planned-order.order_number}}."
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://nestle-adb.azuredatabricks.net/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/runs/get-output?run_id={{run_id}}"
          inputParameters:
            - name: run_id
              in: query
          operations:
            - name: get-forecast
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_PLANNED_ORDERS"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: planned-orders
          path: "/A_PlannedOrder"
          operations:
            - name: create-planned-order
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

# ---------- 25. Trade Promotion Effectiveness Analyzer (orchestrated) ----------

Syncs incoming distributor orders from Oracle E-Business Suite into SAP as sales orders, and updates the Salesforce opportunity stage with order confirmation details.

naftiko: "0.5"
info:
  label: "Distributor Order Sync Pipeline"
  description: "Syncs incoming distributor orders from Oracle E-Business Suite into SAP as sales orders, and updates the Salesforce opportunity stage with order confirmation details."
  tags:
    - supply-chain
    - sales
    - oracle-e-business-suite
    - sap
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: distributor-orders
      port: 8080
      tools:
        - name: sync-distributor-order
          description: "Given an Oracle EBS order number and Salesforce opportunity ID, retrieve order details, create a SAP sales order, and update Salesforce."
          inputParameters:
            - name: ebs_order_number
              in: body
              type: string
              description: "The Oracle EBS order number."
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
          steps:
            - name: get-ebs-order
              type: call
              call: "oracle-ebs.get-order"
              with:
                order_number: "{{ebs_order_number}}"
            - name: create-sales-order
              type: call
              call: "sap.create-sales-order"
              with:
                sold_to: "{{get-ebs-order.customer_number}}"
                material: "{{get-ebs-order.item_number}}"
                quantity: "{{get-ebs-order.ordered_quantity}}"
                requested_date: "{{get-ebs-order.request_date}}"
            - name: update-opportunity
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
                stage: "Closed Won"
                sap_order: "{{create-sales-order.sales_order_number}}"
  consumes:
    - type: http
      namespace: oracle-ebs
      baseUri: "https://nestle-ebs.oraclecloud.com/webservices/rest/order"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: orders
          path: "/{{order_number}}"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: sales-orders
          path: "/A_SalesOrder"
          operations:
            - name: create-sales-order
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://nestle.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH

# ---------- 35. LinkedIn Brand Recruitment Campaign (orchestrated) ----------

Retrieves a BigCommerce order, checks shipment status via SAP delivery tracking, and updates the Salesforce opportunity with fulfillment data for B2B e-commerce orders.

naftiko: "0.5"
info:
  label: "E-Commerce Order Fulfillment Tracker"
  description: "Retrieves a BigCommerce order, checks shipment status via SAP delivery tracking, and updates the Salesforce opportunity with fulfillment data for B2B e-commerce orders."
  tags:
    - e-commerce
    - supply-chain
    - bigcommerce
    - sap
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-fulfillment
      port: 8080
      tools:
        - name: track-order-fulfillment
          description: "Given a BigCommerce order ID and Salesforce opportunity ID, fetch order details, check SAP shipment status, and update the Salesforce opportunity."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The BigCommerce order ID."
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID linked to this order."
          steps:
            - name: get-order
              type: call
              call: "bigcommerce.get-order"
              with:
                order_id: "{{order_id}}"
            - name: get-delivery
              type: call
              call: "sap.get-delivery"
              with:
                sales_order: "{{get-order.staff_notes}}"
            - name: update-opportunity
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
                shipment_status: "{{get-delivery.overall_status}}"
                tracking_number: "{{get-delivery.tracking_number}}"
                estimated_delivery: "{{get-delivery.planned_delivery_date}}"
  consumes:
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/nestle-store/v2"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      inputParameters:
        - name: X-Auth-Token
          in: header
          value: "$secrets.bigcommerce_access_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      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://nestle.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH

# ---------- 19. Manufacturing Line Downtime Alerter (orchestrated) ----------

Retrieves updated product catalog data from SAP, pushes it to an Elasticsearch index for the e-commerce search engine, and logs the refresh status to a Google Sheets audit trail.

naftiko: "0.5"
info:
  label: "Elasticsearch Product Search Index Refresh"
  description: "Retrieves updated product catalog data from SAP, pushes it to an Elasticsearch index for the e-commerce search engine, and logs the refresh status to a Google Sheets audit trail."
  tags:
    - e-commerce
    - search
    - sap
    - elasticsearch
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: search-index
      port: 8080
      tools:
        - name: refresh-product-index
          description: "Given a material group, pull updated products from SAP, index in Elasticsearch, and log to audit sheet."
          inputParameters:
            - name: material_group
              in: body
              type: string
              description: "The SAP material group to refresh."
            - name: audit_spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets ID for index refresh audit."
          steps:
            - name: get-products
              type: call
              call: "sap.get-products-by-group"
              with:
                material_group: "{{material_group}}"
            - name: bulk-index
              type: call
              call: "elasticsearch.bulk-index"
              with:
                index: "nestle-product-catalog"
                documents: "{{get-products.results}}"
            - name: log-refresh
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{audit_spreadsheet_id}}"
                range: "IndexRefresh!A:E"
                values: "{{material_group}},{{get-products.count}},{{bulk-index.indexed_count}},{{bulk-index.error_count}},{{bulk-index.timestamp}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: products
          path: "/A_Product?$filter=MaterialGroup eq '{{material_group}}'"
          inputParameters:
            - name: material_group
              in: query
          operations:
            - name: get-products-by-group
              method: GET
    - type: http
      namespace: elasticsearch
      baseUri: "https://nestle-es.westeurope.azure.elastic-cloud.com"
      authentication:
        type: basic
        username: "$secrets.elasticsearch_user"
        password: "$secrets.elasticsearch_password"
      resources:
        - name: bulk
          path: "/{{index}}/_bulk"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: bulk-index
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

# ---------- 49. NiFi Data Pipeline Failure Escalation (orchestrated) ----------

Retrieves quality inspection results from SAP QM, logs findings to a Google Sheets tracker, and creates a ServiceNow follow-up task if any results are out of specification.

naftiko: "0.5"
info:
  label: "Factory Quality Inspection Results Sync"
  description: "Retrieves quality inspection results from SAP QM, logs findings to a Google Sheets tracker, and creates a ServiceNow follow-up task if any results are out of specification."
  tags:
    - quality
    - manufacturing
    - sap
    - google-sheets
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: quality-inspection
      port: 8080
      tools:
        - name: sync-inspection-results
          description: "Given an SAP inspection lot number, retrieve results, log to Google Sheets, and create a ServiceNow task if out-of-spec."
          inputParameters:
            - name: inspection_lot
              in: body
              type: string
              description: "The SAP inspection lot number."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets ID for the quality tracker."
          steps:
            - name: get-results
              type: call
              call: "sap.get-inspection-results"
              with:
                inspection_lot: "{{inspection_lot}}"
            - name: log-results
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "InspectionLog!A:G"
                values: "{{inspection_lot}},{{get-results.material}},{{get-results.plant}},{{get-results.inspection_date}},{{get-results.overall_result}},{{get-results.defect_count}},{{get-results.inspector}}"
            - name: create-followup
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "QC follow-up: Inspection lot {{inspection_lot}} — {{get-results.overall_result}}"
                description: "Material: {{get-results.material}}. Plant: {{get-results.plant}}. Result: {{get-results.overall_result}}. Defects: {{get-results.defect_count}}. Inspector: {{get-results.inspector}}."
                assigned_group: "Quality_Operations"
                category: "quality_inspection"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: inspection-lots
          path: "/A_InspectionLot('{{inspection_lot}}')/to_InspectionResult"
          inputParameters:
            - name: inspection_lot
              in: path
          operations:
            - name: get-inspection-results
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 32. Vendor Invoice Reconciliation (orchestrated) ----------

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

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

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

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

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Queries Google Analytics for campaign-level metrics including sessions, conversions, and revenue for a given date range. Used by Nestlé digital marketing to measure brand campaign effectiveness.

naftiko: "0.5"
info:
  label: "Google Analytics Campaign Performance"
  description: "Queries Google Analytics for campaign-level metrics including sessions, conversions, and revenue for a given date range. Used by Nestlé digital marketing to measure brand campaign effectiveness."
  tags:
    - marketing
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve campaign performance metrics from Google Analytics for a specified date range."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The GA4 property ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "ga.run-report"
          with:
            property_id: "{{property_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: sessions
              type: string
              mapping: "$.rows[0].metricValues[0].value"
            - name: conversions
              type: string
              mapping: "$.rows[0].metricValues[1].value"
            - name: revenue
              type: string
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST

# ---------- 4. ServiceNow Incident Lookup (simple) ----------

Retrieves warehouse locations from Oracle Cloud, calculates optimal delivery routes using Google Maps Distance Matrix, and updates the SAP transportation plan with route assignments and ETAs.

naftiko: "0.5"
info:
  label: "Google Maps Distribution Network Optimizer"
  description: "Retrieves warehouse locations from Oracle Cloud, calculates optimal delivery routes using Google Maps Distance Matrix, and updates the SAP transportation plan with route assignments and ETAs."
  tags:
    - supply-chain
    - logistics
    - oracle-cloud
    - google-maps
    - sap
capability:
  exposes:
    - type: mcp
      namespace: distribution-routing
      port: 8080
      tools:
        - name: optimize-delivery-routes
          description: "Given a distribution center code and delivery date, retrieve pending deliveries from Oracle, calculate optimal routes via Google Maps, and update SAP transportation."
          inputParameters:
            - name: dc_code
              in: body
              type: string
              description: "The distribution center code."
            - name: delivery_date
              in: body
              type: string
              description: "The delivery date in YYYY-MM-DD format."
          steps:
            - name: get-pending-deliveries
              type: call
              call: "oracle.get-pending-shipments"
              with:
                warehouse_code: "{{dc_code}}"
                ship_date: "{{delivery_date}}"
            - name: calculate-routes
              type: call
              call: "gmaps.distance-matrix"
              with:
                origins: "{{get-pending-deliveries.origin_address}}"
                destinations: "{{get-pending-deliveries.destination_addresses}}"
                departure_time: "{{delivery_date}}T06:00:00Z"
            - name: update-transport-plan
              type: call
              call: "sap.update-shipment-routes"
              with:
                dc_code: "{{dc_code}}"
                delivery_date: "{{delivery_date}}"
                route_assignments: "{{calculate-routes.optimal_sequence}}"
                total_distance_km: "{{calculate-routes.total_distance}}"
                estimated_duration: "{{calculate-routes.total_duration}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: shipments
          path: "/shipments?q=WarehouseCode={{warehouse_code}};ShipDate={{ship_date}};Status=PENDING"
          inputParameters:
            - name: warehouse_code
              in: query
            - name: ship_date
              in: query
          operations:
            - name: get-pending-shipments
              method: GET
    - type: http
      namespace: gmaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: bearer
        token: "$secrets.google_maps_api_key"
      resources:
        - name: distance-matrix
          path: "/distancematrix/json?origins={{origins}}&destinations={{destinations}}&departure_time={{departure_time}}"
          inputParameters:
            - name: origins
              in: query
            - name: destinations
              in: query
            - name: departure_time
              in: query
          operations:
            - name: distance-matrix
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: shipments
          path: "/A_ShipmentRoute"
          operations:
            - name: update-shipment-routes
              method: POST

Initiates a HACCP food safety audit by retrieving the plant's critical control point data from SAP, pulling the latest SOP from Confluence, and creating a ServiceNow audit task with checklist links.

naftiko: "0.5"
info:
  label: "HACCP Audit Workflow"
  description: "Initiates a HACCP food safety audit by retrieving the plant's critical control point data from SAP, pulling the latest SOP from Confluence, and creating a ServiceNow audit task with checklist links."
  tags:
    - quality
    - food-safety
    - sap
    - confluence
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: food-safety-audit
      port: 8080
      tools:
        - name: initiate-haccp-audit
          description: "Given a plant code and production line, retrieve CCP data from SAP, find the relevant SOP in Confluence, and create an audit task in ServiceNow."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The Nestlé plant code."
            - name: production_line
              in: body
              type: string
              description: "The production line identifier."
          steps:
            - name: get-ccps
              type: call
              call: "sap.get-ccp-data"
              with:
                plant: "{{plant_code}}"
                line: "{{production_line}}"
            - name: find-sop
              type: call
              call: "confluence.search"
              with:
                cql: "space=HACCP AND type=page AND text~\"{{plant_code}} {{production_line}} CCP\""
            - name: create-audit
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "HACCP audit: {{plant_code}} line {{production_line}}"
                description: "HACCP audit for plant {{plant_code}}, line {{production_line}}. CCPs: {{get-ccps.ccp_count}}. Critical limits: {{get-ccps.critical_limits_summary}}. SOP reference: {{find-sop.results[0].title}} ({{find-sop.results[0]._links.webui}})."
                assigned_group: "Quality_Food_Safety"
                category: "haccp_audit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_QUALITY_MANAGEMENT"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: ccps
          path: "/CriticalControlPoints?$filter=Plant eq '{{plant}}' and ProductionLine eq '{{line}}'"
          inputParameters:
            - name: plant
              in: query
            - name: line
              in: query
          operations:
            - name: get-ccp-data
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://nestle.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql={{cql}}"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 27. Retail Shelf-Share Competitive Monitor (orchestrated) ----------

When a HubSpot marketing qualified lead converts, creates a Salesforce opportunity, assigns the account owner, and notifies the sales rep in Microsoft Teams.

naftiko: "0.5"
info:
  label: "HubSpot Lead to Salesforce Opportunity Sync"
  description: "When a HubSpot marketing qualified lead converts, creates a Salesforce opportunity, assigns the account owner, and notifies the sales rep in Microsoft Teams."
  tags:
    - sales
    - marketing
    - hubspot
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: lead-sync
      port: 8080
      tools:
        - name: sync-lead-to-opportunity
          description: "Given a HubSpot contact ID, create a Salesforce opportunity and notify the assigned sales rep."
          inputParameters:
            - name: hubspot_contact_id
              in: body
              type: string
              description: "The HubSpot contact ID."
            - name: deal_value
              in: body
              type: string
              description: "The estimated deal value."
          steps:
            - name: get-contact
              type: call
              call: "hubspot.get-contact"
              with:
                contact_id: "{{hubspot_contact_id}}"
            - name: create-opportunity
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "{{get-contact.company}} — {{get-contact.lead_source}}"
                amount: "{{deal_value}}"
                stage: "Qualification"
                contact_email: "{{get-contact.email}}"
            - name: notify-rep
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{create-opportunity.owner_email}}"
                text: "New MQL converted to opportunity: {{get-contact.company}} ({{get-contact.firstname}} {{get-contact.lastname}}). Deal value: ${{deal_value}}. Salesforce opp: {{create-opportunity.id}}. Source: {{get-contact.lead_source}}."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://nestle.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

# ---------- 43. Allergen Label Compliance Checker (orchestrated) ----------

When a new ingredient supplier is proposed, retrieves the vendor record from SAP, checks compliance documents in SharePoint, and opens a ServiceNow qualification task for the quality team.

naftiko: "0.5"
info:
  label: "Ingredient Supplier Qualification Pipeline"
  description: "When a new ingredient supplier is proposed, retrieves the vendor record from SAP, checks compliance documents in SharePoint, and opens a ServiceNow qualification task for the quality team."
  tags:
    - quality
    - procurement
    - sap
    - sharepoint
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: supplier-qualification
      port: 8080
      tools:
        - name: qualify-supplier
          description: "Given a SAP vendor number, check for compliance documentation in SharePoint and open a ServiceNow qualification task."
          inputParameters:
            - name: vendor_number
              in: body
              type: string
              description: "The SAP vendor number for the ingredient supplier."
            - name: ingredient_name
              in: body
              type: string
              description: "The ingredient being sourced."
          steps:
            - name: get-vendor
              type: call
              call: "sap.get-vendor"
              with:
                vendor_number: "{{vendor_number}}"
            - name: check-docs
              type: call
              call: "sharepoint.search-files"
              with:
                site_id: "supplier_qualification_site"
                search_term: "{{get-vendor.vendor_name}} certificate"
            - name: open-qualification
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Supplier qualification: {{get-vendor.vendor_name}} for {{ingredient_name}}"
                description: "Vendor: {{get-vendor.vendor_name}} ({{vendor_number}}). Ingredient: {{ingredient_name}}. Compliance docs found: {{check-docs.total_count}}. Country: {{get-vendor.country}}."
                assigned_group: "Quality_Supplier_Mgmt"
                category: "supplier_qualification"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: vendors
          path: "/A_Supplier('{{vendor_number}}')"
          inputParameters:
            - name: vendor_number
              in: path
          operations:
            - name: get-vendor
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: search
          path: "/{{site_id}}/drive/root/search(q='{{search_term}}')"
          inputParameters:
            - name: site_id
              in: path
            - name: search_term
              in: path
          operations:
            - name: search-files
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 17. Product Recall Notification Orchestrator (orchestrated) ----------

When a ServiceNow change request is submitted, looks up the requestor in Workday to resolve the approval chain, posts an approval request to the CAB Microsoft Teams channel, and updates the change ticket.

naftiko: "0.5"
info:
  label: "IT Change Request Approval Pipeline"
  description: "When a ServiceNow change request is submitted, looks up the requestor in Workday to resolve the approval chain, posts an approval request to the CAB Microsoft Teams channel, and updates the change ticket."
  tags:
    - operations
    - itsm
    - servicenow
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: route-change-approval
          description: "Given a ServiceNow change number and requestor employee ID, resolve the approver chain and post to the CAB Teams channel."
          inputParameters:
            - name: change_number
              in: body
              type: string
              description: "The ServiceNow change request number."
            - name: requestor_id
              in: body
              type: string
              description: "The Workday employee ID of the requestor."
          steps:
            - name: get-change
              type: call
              call: "servicenow.get-change"
              with:
                change_number: "{{change_number}}"
            - name: get-requestor
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requestor_id}}"
            - name: post-cab-review
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "it-change-advisory-board"
                channel_id: "change-reviews"
                text: "Change request {{change_number}} submitted by {{get-requestor.full_name}} ({{get-requestor.job_title}}). Summary: {{get-change.short_description}}. Risk: {{get-change.risk}}. Planned start: {{get-change.start_date}}. Please review and approve."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request?sysparm_query=number={{change_number}}"
          inputParameters:
            - name: change_number
              in: path
          operations:
            - name: get-change
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

# ---------- 46. Cold Chain Temperature Excursion Handler (orchestrated) ----------

Creates a LinkedIn sponsored job posting for a Nestlé role, syncs the requisition to Workday, and notifies the hiring manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "LinkedIn Brand Recruitment Campaign"
  description: "Creates a LinkedIn sponsored job posting for a Nestlé role, syncs the requisition to Workday, and notifies the hiring manager in Microsoft Teams."
  tags:
    - hr
    - recruitment
    - linkedin
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: launch-recruitment-post
          description: "Given a Workday requisition ID and hiring manager ID, create a LinkedIn job posting and notify the hiring manager."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
            - name: hiring_manager_id
              in: body
              type: string
              description: "The Workday worker ID of the hiring manager."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{hiring_manager_id}}"
            - name: create-job-post
              type: call
              call: "linkedin.create-job-posting"
              with:
                title: "{{get-requisition.job_title}}"
                description: "{{get-requisition.job_description}}"
                location: "{{get-requisition.location}}"
                company_id: "nestle"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-manager.work_email}}"
                text: "Your requisition '{{get-requisition.job_title}}' is now live on LinkedIn. Job post ID: {{create-job-post.post_id}}. Link: {{create-job-post.apply_url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/simpleJobPostings"
          operations:
            - name: create-job-posting
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

# ---------- 36. Production Batch Traceability (orchestrated) ----------

Retrieves campaign metrics from MailChimp for a Nestlé consumer newsletter, enriches with Google Analytics landing page data, and posts a performance summary to the brand team's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "MailChimp Consumer Newsletter Performance"
  description: "Retrieves campaign metrics from MailChimp for a Nestlé consumer newsletter, enriches with Google Analytics landing page data, and posts a performance summary to the brand team's Microsoft Teams channel."
  tags:
    - marketing
    - email-marketing
    - mailchimp
    - google-analytics
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: email-performance
      port: 8080
      tools:
        - name: review-newsletter-performance
          description: "Given a MailChimp campaign ID and GA property, pull email metrics, landing page conversion data, and post a summary to Teams."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The MailChimp campaign ID."
            - name: ga_property_id
              in: body
              type: string
              description: "The Google Analytics 4 property ID."
            - name: brand
              in: body
              type: string
              description: "The Nestlé brand name."
          steps:
            - name: get-campaign-stats
              type: call
              call: "mailchimp.get-campaign-report"
              with:
                campaign_id: "{{campaign_id}}"
            - name: get-landing-metrics
              type: call
              call: "ga.run-report"
              with:
                property_id: "{{ga_property_id}}"
                start_date: "{{get-campaign-stats.send_time}}"
                end_date: "{{get-campaign-stats.send_time}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "brand-marketing-{{brand}}"
                channel_id: "email-metrics"
                text: "Newsletter performance for {{brand}}: Open rate: {{get-campaign-stats.open_rate}}%, Click rate: {{get-campaign-stats.click_rate}}%, Unsubscribes: {{get-campaign-stats.unsubscribes}}. Landing page sessions: {{get-landing-metrics.sessions}}, Conversions: {{get-landing-metrics.conversions}}."
  consumes:
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: reports
          path: "/reports/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-report
              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"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              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-channel
              method: POST

# ---------- 30. Raw Material Price Alert Workflow (orchestrated) ----------

When Datadog detects a factory line monitor breach, retrieves host details, creates a ServiceNow incident, and notifies the plant operations team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Manufacturing Line Downtime Alerter"
  description: "When Datadog detects a factory line monitor breach, retrieves host details, creates a ServiceNow incident, and notifies the plant operations team in Microsoft Teams."
  tags:
    - manufacturing
    - monitoring
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: factory-alerts
      port: 8080
      tools:
        - name: escalate-line-downtime
          description: "Given a Datadog monitor ID and plant code, retrieve alert details, create a ServiceNow incident, and notify the plant ops team."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor ID that triggered."
            - name: plant_code
              in: body
              type: string
              description: "The Nestlé plant code."
          steps:
            - name: get-monitor
              type: call
              call: "datadog.get-monitor"
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Line downtime alert: {{get-monitor.name}} at plant {{plant_code}}"
                description: "Monitor: {{get-monitor.name}}. Status: {{get-monitor.overall_state}}. Message: {{get-monitor.message}}. Plant: {{plant_code}}."
                priority: "2"
                category: "manufacturing_downtime"
                assigned_group: "Plant_Operations_{{plant_code}}"
            - name: notify-ops
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "plant-ops-{{plant_code}}"
                channel_id: "line-alerts"
                text: "LINE DOWNTIME: {{get-monitor.name}} is {{get-monitor.overall_state}}. Incident {{create-incident.number}} created. Please investigate immediately."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.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-channel
              method: POST

# ---------- 20. Brand Campaign Launch Orchestrator (orchestrated) ----------

Queries MuleSoft Anypoint Platform for API health metrics, correlates with Dynatrace application performance data, and posts a consolidated integration health summary to Microsoft Teams.

naftiko: "0.5"
info:
  label: "MuleSoft Integration Health Dashboard"
  description: "Queries MuleSoft Anypoint Platform for API health metrics, correlates with Dynatrace application performance data, and posts a consolidated integration health summary to Microsoft Teams."
  tags:
    - integration
    - monitoring
    - mulesoft
    - dynatrace
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: integration-health
      port: 8080
      tools:
        - name: report-integration-health
          description: "Given a MuleSoft environment and Dynatrace entity ID, collect API and APM metrics and post a health summary."
          inputParameters:
            - name: environment_id
              in: body
              type: string
              description: "The MuleSoft Anypoint environment ID."
            - name: dynatrace_entity_id
              in: body
              type: string
              description: "The Dynatrace monitored entity ID."
          steps:
            - name: get-api-stats
              type: call
              call: "mulesoft.get-api-metrics"
              with:
                environment_id: "{{environment_id}}"
            - name: get-apm-data
              type: call
              call: "dynatrace.get-entity"
              with:
                entity_id: "{{dynatrace_entity_id}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "integration-platform"
                channel_id: "health-dashboard"
                text: "Integration Health: MuleSoft env {{environment_id}} — Total requests: {{get-api-stats.total_requests}}, Error rate: {{get-api-stats.error_rate}}%, Avg latency: {{get-api-stats.avg_latency}}ms. Dynatrace: Health {{get-apm-data.health_state}}, Response time: {{get-apm-data.response_time}}ms, Failure rate: {{get-apm-data.failure_rate}}%."
  consumes:
    - type: http
      namespace: mulesoft
      baseUri: "https://anypoint.mulesoft.com/analytics/1.0/nestle"
      authentication:
        type: bearer
        token: "$secrets.mulesoft_token"
      resources:
        - name: api-metrics
          path: "/{{environment_id}}/dashboardSummary"
          inputParameters:
            - name: environment_id
              in: path
          operations:
            - name: get-api-metrics
              method: GET
    - type: http
      namespace: dynatrace
      baseUri: "https://nestle.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: entities
          path: "/entities/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-entity
              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-channel
              method: POST

# ---------- 41. Water Usage Sustainability Tracker (orchestrated) ----------

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

naftiko: "0.5"
info:
  label: "New Hire Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for training materials, 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 across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "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.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Nestlé, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Training docs are at {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

# ---------- 23. Social Media Brand Sentiment Aggregator (orchestrated) ----------

Monitors Apache NiFi process group status, and when a failure is detected, creates a ServiceNow incident and alerts the data operations team in Microsoft Teams with pipeline diagnostics.

naftiko: "0.5"
info:
  label: "NiFi Data Pipeline Failure Escalation"
  description: "Monitors Apache NiFi process group status, and when a failure is detected, creates a ServiceNow incident and alerts the data operations team in Microsoft Teams with pipeline diagnostics."
  tags:
    - data
    - monitoring
    - apache-nifi
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: nifi-monitoring
      port: 8080
      tools:
        - name: escalate-nifi-failure
          description: "Given a NiFi process group ID, check status and escalate failures to ServiceNow and Microsoft Teams."
          inputParameters:
            - name: process_group_id
              in: body
              type: string
              description: "The Apache NiFi process group ID."
            - name: pipeline_name
              in: body
              type: string
              description: "The human-readable pipeline name."
          steps:
            - name: get-status
              type: call
              call: "nifi.get-process-group"
              with:
                process_group_id: "{{process_group_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "NiFi pipeline failure: {{pipeline_name}}"
                description: "Pipeline: {{pipeline_name}}. Process group: {{process_group_id}}. Active threads: {{get-status.activeThreadCount}}. Queued: {{get-status.queued}}. Invalid: {{get-status.invalidCount}}. Stopped: {{get-status.stoppedCount}}."
                priority: "2"
                category: "data_pipeline"
                assigned_group: "Data_Operations"
            - name: alert-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "data-operations"
                channel_id: "pipeline-alerts"
                text: "NiFi Pipeline Alert: {{pipeline_name}} has failures. Queued: {{get-status.queued}}, Invalid: {{get-status.invalidCount}}. Incident: {{create-incident.number}}. Investigate immediately."
  consumes:
    - type: http
      namespace: nifi
      baseUri: "https://nestle-nifi.internal.nestle.com/nifi-api"
      authentication:
        type: bearer
        token: "$secrets.nifi_token"
      resources:
        - name: process-groups
          path: "/process-groups/{{process_group_id}}/status"
          inputParameters:
            - name: process_group_id
              in: path
          operations:
            - name: get-process-group
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.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-channel
              method: POST

# ---------- 50. Google Maps Distribution Network Optimizer (orchestrated) ----------

Retrieves on-hand inventory balance from Oracle Cloud for a specified item and warehouse. Used by Nestlé supply planners to verify raw material and finished goods stock levels.

naftiko: "0.5"
info:
  label: "Oracle Cloud Inventory Balance"
  description: "Retrieves on-hand inventory balance from Oracle Cloud for a specified item and warehouse. Used by Nestlé supply planners to verify raw material and finished goods stock levels."
  tags:
    - supply-chain
    - inventory
    - oracle-cloud
capability:
  exposes:
    - type: mcp
      namespace: inventory-management
      port: 8080
      tools:
        - name: get-inventory-balance
          description: "Fetch on-hand inventory for an item at a specific warehouse from Oracle Cloud."
          inputParameters:
            - name: item_number
              in: body
              type: string
              description: "The Oracle item number."
            - name: warehouse_code
              in: body
              type: string
              description: "The warehouse or subinventory code."
          call: "oracle.get-onhand"
          with:
            item_number: "{{item_number}}"
            warehouse_code: "{{warehouse_code}}"
          outputParameters:
            - name: on_hand_quantity
              type: string
              mapping: "$.items[0].OnhandQuantity"
            - name: uom
              type: string
              mapping: "$.items[0].UOMCode"
            - name: lot_number
              type: string
              mapping: "$.items[0].LotNumber"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: inventory
          path: "/inventoryOnhandBalances?q=ItemNumber={{item_number}};SubinventoryCode={{warehouse_code}}"
          inputParameters:
            - name: item_number
              in: query
            - name: warehouse_code
              in: query
          operations:
            - name: get-onhand
              method: GET

# ---------- 16. Ingredient Supplier Qualification Pipeline (orchestrated) ----------

When a packaging spec changes, updates the material BOM in SAP, uploads the new artwork brief to Box, and notifies the packaging design team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Packaging Specification Change Pipeline"
  description: "When a packaging spec changes, updates the material BOM in SAP, uploads the new artwork brief to Box, and notifies the packaging design team in Microsoft Teams."
  tags:
    - supply-chain
    - packaging
    - sap
    - box
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: packaging-change
      port: 8080
      tools:
        - name: process-packaging-change
          description: "Given a material number and updated spec details, update SAP BOM, upload artwork brief to Box, and notify the packaging team."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number for the product."
            - name: change_description
              in: body
              type: string
              description: "Description of the packaging specification change."
            - name: artwork_file_id
              in: body
              type: string
              description: "The Box file ID for the new artwork brief."
          steps:
            - name: get-bom
              type: call
              call: "sap.get-bom"
              with:
                material: "{{material_number}}"
            - name: upload-brief
              type: call
              call: "box.copy-file"
              with:
                file_id: "{{artwork_file_id}}"
                parent_folder_id: "packaging_active_specs"
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "packaging-design"
                channel_id: "spec-changes"
                text: "Packaging spec change for material {{material_number}}: {{change_description}}. Current BOM version: {{get-bom.bom_version}}. New artwork brief: {{upload-brief.shared_link}}. Please review and confirm."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: boms
          path: "/A_BillOfMaterial?$filter=Material eq '{{material}}'"
          inputParameters:
            - name: material
              in: query
          operations:
            - name: get-bom
              method: GET
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/{{file_id}}/copy"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: copy-file
              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-channel
              method: POST

# ---------- 29. MailChimp Consumer Newsletter Performance (orchestrated) ----------

Validates product launch readiness by checking SAP material master completeness, BigCommerce listing status, and Adobe Campaign email setup, then posts a readiness scorecard to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Product Launch Readiness Checker"
  description: "Validates product launch readiness by checking SAP material master completeness, BigCommerce listing status, and Adobe Campaign email setup, then posts a readiness scorecard to Microsoft Teams."
  tags:
    - product-development
    - e-commerce
    - sap
    - bigcommerce
    - adobe-campaign
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: launch-readiness
      port: 8080
      tools:
        - name: check-launch-readiness
          description: "Given a material number and brand, verify SAP master data, BigCommerce listing, and Adobe Campaign setup, then post a readiness summary."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number for the new product."
            - name: brand
              in: body
              type: string
              description: "The Nestlé brand name."
            - name: bigcommerce_product_id
              in: body
              type: string
              description: "The BigCommerce product ID."
          steps:
            - name: check-material
              type: call
              call: "sap.get-material"
              with:
                material_number: "{{material_number}}"
            - name: check-listing
              type: call
              call: "bigcommerce.get-product"
              with:
                product_id: "{{bigcommerce_product_id}}"
            - name: check-campaign
              type: call
              call: "adobe-campaign.get-workflows"
              with:
                label: "{{brand}}_launch_{{material_number}}"
            - name: post-scorecard
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "brand-marketing-{{brand}}"
                channel_id: "product-launches"
                text: "Launch readiness for {{check-material.description}} ({{material_number}}): SAP master: complete. BigCommerce: {{check-listing.availability_description}} (inventory: {{check-listing.inventory_level}}). Email campaign: {{check-campaign.state}}. Price: {{check-listing.price}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: materials
          path: "/A_Product('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              method: GET
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/nestle-store/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_token"
      inputParameters:
        - name: X-Auth-Token
          in: header
          value: "$secrets.bigcommerce_access_token"
      resources:
        - name: products
          path: "/catalog/products/{{product_id}}"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET
    - type: http
      namespace: adobe-campaign
      baseUri: "https://mc.adobe.io/nestle/campaign"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: workflows
          path: "/profileAndServicesExt/workflow?_lineCount=1&_filter={{label}}"
          inputParameters:
            - name: label
              in: query
          operations:
            - name: get-workflows
              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-channel
              method: POST

# ---------- 40. MuleSoft Integration Health Dashboard (orchestrated) ----------

When a product quality issue triggers a recall, retrieves the affected batch from SAP, creates a critical ServiceNow incident, and broadcasts an alert to the crisis management Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Product Recall Notification Orchestrator"
  description: "When a product quality issue triggers a recall, retrieves the affected batch from SAP, creates a critical ServiceNow incident, and broadcasts an alert to the crisis management Microsoft Teams channel."
  tags:
    - quality
    - manufacturing
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: recall-management
      port: 8080
      tools:
        - name: initiate-recall-notification
          description: "Given a batch number and material, retrieve batch details from SAP, create a critical incident in ServiceNow, and alert the crisis team in Microsoft Teams."
          inputParameters:
            - name: batch_number
              in: body
              type: string
              description: "The SAP batch number of the affected product."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: issue_description
              in: body
              type: string
              description: "Description of the quality issue."
          steps:
            - name: get-batch
              type: call
              call: "sap.get-batch"
              with:
                batch_number: "{{batch_number}}"
                material_number: "{{material_number}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "RECALL: {{get-batch.material_description}} batch {{batch_number}}"
                description: "Quality issue: {{issue_description}}. Material: {{material_number}}. Batch: {{batch_number}}. Production date: {{get-batch.production_date}}. Quantity: {{get-batch.batch_quantity}} {{get-batch.unit}}. Plant: {{get-batch.plant}}."
                priority: "1"
                category: "product_recall"
                assigned_group: "Quality_Crisis"
            - name: alert-crisis-team
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "crisis-management-team"
                channel_id: "product-recalls"
                text: "PRODUCT RECALL INITIATED: {{get-batch.material_description}} (batch {{batch_number}}). Issue: {{issue_description}}. Incident: {{create-incident.number}}. Immediate action required."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_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: batches
          path: "/A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: batch_number
              in: path
          operations:
            - name: get-batch
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.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-channel
              method: POST

# ---------- 18. E-Commerce Order Fulfillment Tracker (orchestrated) ----------

Traces a finished goods batch through the supply chain by querying SAP for batch genealogy, pulling warehouse movement data from Oracle Cloud, and logging the traceability report to SharePoint.

naftiko: "0.5"
info:
  label: "Production Batch Traceability"
  description: "Traces a finished goods batch through the supply chain by querying SAP for batch genealogy, pulling warehouse movement data from Oracle Cloud, and logging the traceability report to SharePoint."
  tags:
    - quality
    - supply-chain
    - sap
    - oracle-cloud
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: batch-traceability
      port: 8080
      tools:
        - name: trace-batch
          description: "Given a batch number and material, retrieve SAP batch genealogy, Oracle warehouse movements, and upload a traceability report to SharePoint."
          inputParameters:
            - name: batch_number
              in: body
              type: string
              description: "The SAP batch number."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          steps:
            - name: get-genealogy
              type: call
              call: "sap.get-batch-genealogy"
              with:
                batch: "{{batch_number}}"
                material: "{{material_number}}"
            - name: get-movements
              type: call
              call: "oracle.get-inventory-transactions"
              with:
                item_number: "{{material_number}}"
                lot_number: "{{batch_number}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "quality-traceability"
                file_path: "TraceReports/{{material_number}}_{{batch_number}}_trace.json"
                content: "Batch: {{batch_number}}, Material: {{material_number}}, Input batches: {{get-genealogy.input_batches}}, Production date: {{get-genealogy.production_date}}, Plant: {{get-genealogy.plant}}, Warehouse movements: {{get-movements.transaction_count}}, Last location: {{get-movements.current_warehouse}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: batch-genealogy
          path: "/A_Batch(Material='{{material}}',Batch='{{batch}}')/to_BatchGenealogy"
          inputParameters:
            - name: material
              in: path
            - name: batch
              in: path
          operations:
            - name: get-batch-genealogy
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: transactions
          path: "/inventoryTransactions?q=ItemNumber={{item_number}};LotNumber={{lot_number}}"
          inputParameters:
            - name: item_number
              in: query
            - name: lot_number
              in: query
          operations:
            - name: get-inventory-transactions
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT

# ---------- 37. Warehouse Replenishment Alert (orchestrated) ----------

Exports a Qlik Sense dashboard visualization as a PDF for a specified app and sheet. Used by Nestlé business intelligence teams to distribute manufacturing KPI reports.

naftiko: "0.5"
info:
  label: "Qlik Sense Dashboard Export"
  description: "Exports a Qlik Sense dashboard visualization as a PDF for a specified app and sheet. Used by Nestlé business intelligence teams to distribute manufacturing KPI reports."
  tags:
    - analytics
    - reporting
    - qlik-sense
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: export-dashboard
          description: "Export a Qlik Sense sheet as PDF given an app ID and sheet ID."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Qlik Sense app GUID."
            - name: sheet_id
              in: body
              type: string
              description: "The sheet ID within the app."
          call: "qlik.export-sheet"
          with:
            app_id: "{{app_id}}"
            sheet_id: "{{sheet_id}}"
          outputParameters:
            - name: download_url
              type: string
              mapping: "$.downloadUrl"
            - name: file_size
              type: string
              mapping: "$.fileSize"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://nestle.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_api_key"
      resources:
        - name: exports
          path: "/apps/{{app_id}}/sheets/{{sheet_id}}/export/pdf"
          inputParameters:
            - name: app_id
              in: path
            - name: sheet_id
              in: path
          operations:
            - name: export-sheet
              method: POST

# ---------- 11. SharePoint Quality Document Retrieval (simple) ----------

Monitors commodity price changes via SAP, compares against procurement contract thresholds in Oracle Cloud, and alerts the sourcing team in Microsoft Teams when thresholds are breached.

naftiko: "0.5"
info:
  label: "Raw Material Price Alert Workflow"
  description: "Monitors commodity price changes via SAP, compares against procurement contract thresholds in Oracle Cloud, and alerts the sourcing team in Microsoft Teams when thresholds are breached."
  tags:
    - procurement
    - supply-chain
    - sap
    - oracle-cloud
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: commodity-alerts
      port: 8080
      tools:
        - name: check-commodity-price
          description: "Given a commodity code and contract ID, fetch current market price from SAP, compare to Oracle contract terms, and alert sourcing if threshold exceeded."
          inputParameters:
            - name: commodity_code
              in: body
              type: string
              description: "The SAP commodity code (e.g. cocoa, milk powder, palm oil)."
            - name: contract_id
              in: body
              type: string
              description: "The Oracle Cloud procurement contract ID."
          steps:
            - name: get-market-price
              type: call
              call: "sap.get-commodity-price"
              with:
                commodity_code: "{{commodity_code}}"
            - name: get-contract
              type: call
              call: "oracle.get-contract"
              with:
                contract_id: "{{contract_id}}"
            - name: alert-sourcing
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "global-sourcing"
                channel_id: "commodity-alerts"
                text: "Commodity price alert: {{commodity_code}} current market price {{get-market-price.current_price}} {{get-market-price.currency}}/MT. Contract ceiling: {{get-contract.price_ceiling}} {{get-contract.currency}}/MT. Variance: {{get-market-price.variance_pct}}%. Contract: {{contract_id}} with {{get-contract.supplier_name}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_COMMODITY_PRICING"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: commodity-prices
          path: "/CommodityPrices('{{commodity_code}}')"
          inputParameters:
            - name: commodity_code
              in: path
          operations:
            - name: get-commodity-price
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: contracts
          path: "/purchaseAgreements/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              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-channel
              method: POST

# ---------- 31. Factory Quality Inspection Results Sync (orchestrated) ----------

Retrieves upcoming promotions from SAP Trade Promotion Management, syncs events to the sales team's Google Sheets calendar, and sends a Microsoft Outlook reminder to the field sales team.

naftiko: "0.5"
info:
  label: "Retail Promotion Calendar Sync"
  description: "Retrieves upcoming promotions from SAP Trade Promotion Management, syncs events to the sales team's Google Sheets calendar, and sends a Microsoft Outlook reminder to the field sales team."
  tags:
    - sales
    - trade-promotion
    - sap
    - google-sheets
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: promo-calendar
      port: 8080
      tools:
        - name: sync-promo-calendar
          description: "Given a customer group and date range, pull promotions from SAP, update Google Sheets calendar, and email the field team."
          inputParameters:
            - name: customer_group
              in: body
              type: string
              description: "The SAP customer group code."
            - 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."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets calendar spreadsheet ID."
          steps:
            - name: get-promotions
              type: call
              call: "sap.get-trade-promotions"
              with:
                customer_group: "{{customer_group}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: update-calendar
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "PromoCalendar!A:F"
                values: "{{get-promotions.summary}}"
            - name: email-field-team
              type: call
              call: "outlook.send-mail"
              with:
                to: "field-sales-{{customer_group}}@nestle.com"
                subject: "Updated promotion calendar: {{customer_group}} ({{start_date}} to {{end_date}})"
                body: "The promotion calendar has been updated with {{get-promotions.count}} promotions for customer group {{customer_group}}. Review the tracker: {{update-calendar.spreadsheet_url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_TRADE_PROMOTION"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: promotions
          path: "/A_TradePromotion?$filter=CustomerGroup eq '{{customer_group}}' and StartDate ge datetime'{{start_date}}' and EndDate le datetime'{{end_date}}'"
          inputParameters:
            - name: customer_group
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-trade-promotions
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

# ---------- 45. IT Change Request Approval Pipeline (orchestrated) ----------

Pulls competitive shelf-share data from Circana, compares against Salesforce account targets, and emails the field sales rep via Microsoft Outlook with a gap analysis.

naftiko: "0.5"
info:
  label: "Retail Shelf-Share Competitive Monitor"
  description: "Pulls competitive shelf-share data from Circana, compares against Salesforce account targets, and emails the field sales rep via Microsoft Outlook with a gap analysis."
  tags:
    - sales
    - market-research
    - circana
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: shelf-share-monitor
      port: 8080
      tools:
        - name: monitor-shelf-share
          description: "Given a retailer account ID and product category, pull Circana shelf-share, compare to Salesforce targets, and email the field rep."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID for the retailer."
            - name: category
              in: body
              type: string
              description: "The product category."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{account_id}}"
            - name: get-shelf-data
              type: call
              call: "circana.get-shelf-share"
              with:
                retailer: "{{get-account.name}}"
                category: "{{category}}"
            - name: email-rep
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-account.owner_email}}"
                subject: "Shelf-share alert: {{category}} at {{get-account.name}}"
                body: "Current shelf-share: {{get-shelf-data.nestle_share}}% (target: {{get-account.shelf_target}}%). Gap: {{get-shelf-data.gap_pct}}%. Top competitor: {{get-shelf-data.top_competitor}} at {{get-shelf-data.competitor_share}}%. Action may be needed for {{category}} at {{get-account.name}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://nestle.my.salesforce.com/services/data/v59.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: circana
      baseUri: "https://api.circana.com/v2"
      authentication:
        type: bearer
        token: "$secrets.circana_token"
      resources:
        - name: shelf-share
          path: "/shelf-share/retailer"
          operations:
            - name: get-shelf-share
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

# ---------- 28. Packaging Specification Change Pipeline (orchestrated) ----------

Fetches a Salesforce account record by account ID, returning name, industry, annual revenue, and primary contact. Used by Nestlé sales teams to review key retail and distributor accounts.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Fetches a Salesforce account record by account ID, returning name, industry, annual revenue, and primary contact. Used by Nestlé sales teams to review key retail and distributor accounts."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: crm-accounts
      port: 8080
      tools:
        - name: get-account
          description: "Look up a Salesforce account by ID. Returns name, industry, annual revenue, and owner."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID (18-character)."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: industry
              type: string
              mapping: "$.Industry"
            - name: annual_revenue
              type: string
              mapping: "$.AnnualRevenue"
            - name: owner_name
              type: string
              mapping: "$.Owner.Name"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://nestle.my.salesforce.com/services/data/v59.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

# ---------- 3. Google Analytics Campaign Performance (simple) ----------

Retrieves material master data from SAP S/4HANA by material number, returning description, base unit, material group, and shelf-life details. Used by supply chain and quality teams to verify product specifications.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves material master data from SAP S/4HANA by material number, returning description, base unit, material group, and shelf-life details. Used by supply chain and quality teams to verify product specifications."
  tags:
    - supply-chain
    - erp
    - sap
capability:
  exposes:
    - type: mcp
      namespace: erp-materials
      port: 8080
      tools:
        - name: get-material
          description: "Look up an SAP material master record by material number. Returns description, base unit of measure, material group, and shelf-life days."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number (18-character)."
          call: "sap.get-material"
          with:
            material_number: "{{material_number}}"
          outputParameters:
            - name: description
              type: string
              mapping: "$.d.MaterialDescription"
            - name: base_unit
              type: string
              mapping: "$.d.BaseUnit"
            - name: material_group
              type: string
              mapping: "$.d.MaterialGroup"
            - name: shelf_life_days
              type: string
              mapping: "$.d.MaximumStoragePeriod"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_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: materials
          path: "/A_Product('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              method: GET

# ---------- 2. Salesforce Account Lookup (simple) ----------

Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date. Used by Nestlé procurement to verify ingredient and packaging PO health.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date. Used by Nestlé procurement to verify ingredient and packaging PO health."
  tags:
    - procurement
    - erp
    - sap
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number. Returns status, vendor, total value, and delivery date."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

# ---------- 9. Teradata Sales Data Query (simple) ----------

Retrieves a ServiceNow incident by number and returns state, priority, assigned group, and resolution notes. Used by Nestlé IT and factory operations teams to track plant-floor system issues.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status"
  description: "Retrieves a ServiceNow incident by number and returns state, priority, assigned group, and resolution notes. Used by Nestlé IT and factory operations teams to track plant-floor system issues."
  tags:
    - operations
    - itsm
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm-incidents
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number. Returns state, priority, assigned group, and short description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g. INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
            - name: short_description
              type: string
              mapping: "$.result.short_description"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.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: path
          operations:
            - name: get-incident
              method: GET

# ---------- 5. Workday Employee Lookup (simple) ----------

Fetches a quality management document from SharePoint by site and file path. Used by Nestlé quality assurance teams to retrieve SOPs, HACCP plans, and audit checklists.

naftiko: "0.5"
info:
  label: "SharePoint Quality Document Retrieval"
  description: "Fetches a quality management document from SharePoint by site and file path. Used by Nestlé quality assurance teams to retrieve SOPs, HACCP plans, and audit checklists."
  tags:
    - quality
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: quality-docs
      port: 8080
      tools:
        - name: get-quality-document
          description: "Retrieve a quality document from SharePoint by site ID and file path."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID for the quality document library."
            - name: file_path
              in: body
              type: string
              description: "The relative file path within the document library."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
          outputParameters:
            - name: file_name
              type: string
              mapping: "$.name"
            - name: download_url
              type: string
              mapping: "$.@microsoft.graph.downloadUrl"
            - name: last_modified
              type: string
              mapping: "$.lastModifiedDateTime"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

# ---------- 12. BigCommerce Product Catalog Lookup (simple) ----------

Collects recent brand mentions from Instagram and Facebook via Meta APIs, runs sentiment scoring via Azure Machine Learning, and posts a daily digest to the brand team's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Social Media Brand Sentiment Aggregator"
  description: "Collects recent brand mentions from Instagram and Facebook via Meta APIs, runs sentiment scoring via Azure Machine Learning, and posts a daily digest to the brand team's Microsoft Teams channel."
  tags:
    - marketing
    - social-media
    - instagram
    - facebook
    - azure-machine-learning
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: brand-sentiment
      port: 8080
      tools:
        - name: aggregate-brand-sentiment
          description: "Given a brand name and date, collect social mentions, score sentiment, and post a digest to Microsoft Teams."
          inputParameters:
            - name: brand_name
              in: body
              type: string
              description: "The Nestlé brand name (e.g. Nescafé, KitKat)."
            - name: report_date
              in: body
              type: string
              description: "The date to aggregate in YYYY-MM-DD format."
          steps:
            - name: get-instagram-mentions
              type: call
              call: "meta.get-ig-mentions"
              with:
                hashtag: "{{brand_name}}"
                since: "{{report_date}}"
            - name: get-facebook-mentions
              type: call
              call: "meta.get-fb-mentions"
              with:
                page_name: "{{brand_name}}"
                since: "{{report_date}}"
            - name: score-sentiment
              type: call
              call: "azureml.score-sentiment"
              with:
                texts: "{{get-instagram-mentions.captions}},{{get-facebook-mentions.comments}}"
            - name: post-digest
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "brand-marketing-{{brand_name}}"
                channel_id: "social-insights"
                text: "Daily sentiment digest for {{brand_name}} ({{report_date}}): IG mentions: {{get-instagram-mentions.count}}, FB mentions: {{get-facebook-mentions.count}}. Avg sentiment: {{score-sentiment.average_score}}. Top positive: {{score-sentiment.top_positive}}. Top concern: {{score-sentiment.top_negative}}."
  consumes:
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_access_token"
      resources:
        - name: ig-hashtag
          path: "/ig_hashtag_search?q={{hashtag}}&since={{since}}"
          inputParameters:
            - name: hashtag
              in: query
            - name: since
              in: query
          operations:
            - name: get-ig-mentions
              method: GET
        - name: fb-page-feed
          path: "/{{page_name}}/feed?since={{since}}"
          inputParameters:
            - name: page_name
              in: path
            - name: since
              in: query
          operations:
            - name: get-fb-mentions
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://nestle-ml.westeurope.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_token"
      resources:
        - name: sentiment
          path: "/score"
          operations:
            - name: score-sentiment
              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-channel
              method: POST

# ---------- 24. Demand Forecast to Production Planning (orchestrated) ----------

Collects carbon emissions data from SAP environmental compliance, enriches with Teradata energy consumption trends, and publishes a summary report to a SharePoint sustainability library.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Reporting Pipeline"
  description: "Collects carbon emissions data from SAP environmental compliance, enriches with Teradata energy consumption trends, and publishes a summary report to a SharePoint sustainability library."
  tags:
    - sustainability
    - reporting
    - sap
    - teradata
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: sustainability-reporting
      port: 8080
      tools:
        - name: generate-sustainability-report
          description: "Given a plant code and reporting period, collect emissions data from SAP, energy trends from Teradata, and upload the summary to SharePoint."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The Nestlé plant code."
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period in YYYY-QN format (e.g. 2026-Q1)."
          steps:
            - name: get-emissions
              type: call
              call: "sap.get-emissions"
              with:
                plant: "{{plant_code}}"
                period: "{{reporting_period}}"
            - name: get-energy-trends
              type: call
              call: "teradata.query-energy"
              with:
                plant_code: "{{plant_code}}"
                period: "{{reporting_period}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "sustainability-reports"
                file_path: "{{plant_code}}/{{reporting_period}}_sustainability_summary.json"
                content: "Plant: {{plant_code}}, Period: {{reporting_period}}, CO2e: {{get-emissions.total_co2e}} tonnes, Scope1: {{get-emissions.scope1}}, Scope2: {{get-emissions.scope2}}, Energy: {{get-energy-trends.total_kwh}} kWh, Renewable%: {{get-energy-trends.renewable_pct}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_ENVIRONMENT_HEALTH_SAFETY"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: emissions
          path: "/EmissionsData?$filter=Plant eq '{{plant}}' and Period eq '{{period}}'"
          inputParameters:
            - name: plant
              in: query
            - name: period
              in: query
          operations:
            - name: get-emissions
              method: GET
    - type: http
      namespace: teradata
      baseUri: "https://nestle-tdrest.teradata.com/api/query/v1"
      authentication:
        type: basic
        username: "$secrets.teradata_user"
        password: "$secrets.teradata_password"
      resources:
        - name: queries
          path: "/systems/nestle_edw/queries"
          operations:
            - name: query-energy
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT

# ---------- 22. New Hire Onboarding Orchestrator (orchestrated) ----------

Executes a predefined sales volume query against Nestlé's Teradata data warehouse, returning total units sold, net revenue, and trade spend for a product category and time period.

naftiko: "0.5"
info:
  label: "Teradata Sales Data Query"
  description: "Executes a predefined sales volume query against Nestlé's Teradata data warehouse, returning total units sold, net revenue, and trade spend for a product category and time period."
  tags:
    - analytics
    - data-warehouse
    - teradata
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: query-sales-volume
          description: "Query Teradata for product category sales metrics for a given month."
          inputParameters:
            - name: category_code
              in: body
              type: string
              description: "The product category code."
            - name: year_month
              in: body
              type: string
              description: "The year-month in YYYY-MM format."
          call: "teradata.run-query"
          with:
            category_code: "{{category_code}}"
            year_month: "{{year_month}}"
          outputParameters:
            - name: units_sold
              type: string
              mapping: "$.results[0].units_sold"
            - name: net_revenue
              type: string
              mapping: "$.results[0].net_revenue"
            - name: trade_spend
              type: string
              mapping: "$.results[0].trade_spend"
  consumes:
    - type: http
      namespace: teradata
      baseUri: "https://nestle-tdrest.teradata.com/api/query/v1"
      authentication:
        type: basic
        username: "$secrets.teradata_user"
        password: "$secrets.teradata_password"
      resources:
        - name: queries
          path: "/systems/nestle_edw/queries"
          operations:
            - name: run-query
              method: POST

# ---------- 10. Qlik Sense Dashboard Export (simple) ----------

Retrieves trade promotion spend from SAP, pulls actual sales lift from Circana market data, calculates ROI, and posts results to a Google Sheets tracker for the revenue management team.

naftiko: "0.5"
info:
  label: "Trade Promotion Effectiveness Analyzer"
  description: "Retrieves trade promotion spend from SAP, pulls actual sales lift from Circana market data, calculates ROI, and posts results to a Google Sheets tracker for the revenue management team."
  tags:
    - sales
    - trade-promotion
    - sap
    - circana
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: trade-analytics
      port: 8080
      tools:
        - name: analyze-promotion
          description: "Given a SAP promotion ID and Circana category, retrieve spend, measure sales lift, and update the trade promotion tracker."
          inputParameters:
            - name: promotion_id
              in: body
              type: string
              description: "The SAP trade promotion ID."
            - name: category
              in: body
              type: string
              description: "The Circana product category."
            - name: geography
              in: body
              type: string
              description: "The geographic market."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID for the trade tracker."
          steps:
            - name: get-promo-spend
              type: call
              call: "sap.get-promotion"
              with:
                promotion_id: "{{promotion_id}}"
            - name: get-sales-lift
              type: call
              call: "circana.get-promo-lift"
              with:
                category: "{{category}}"
                geography: "{{geography}}"
                promo_period: "{{get-promo-spend.execution_period}}"
            - name: update-tracker
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "PromoTracker!A:H"
                values: "{{promotion_id}},{{get-promo-spend.description}},{{get-promo-spend.total_spend}},{{get-sales-lift.incremental_units}},{{get-sales-lift.incremental_revenue}},{{get-sales-lift.roi_pct}},{{category}},{{geography}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_TRADE_PROMOTION"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: promotions
          path: "/A_TradePromotion('{{promotion_id}}')"
          inputParameters:
            - name: promotion_id
              in: path
          operations:
            - name: get-promotion
              method: GET
    - type: http
      namespace: circana
      baseUri: "https://api.circana.com/v2"
      authentication:
        type: bearer
        token: "$secrets.circana_token"
      resources:
        - name: promo-lift
          path: "/promotion-effectiveness/lift"
          operations:
            - name: get-promo-lift
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

# ---------- 26. HACCP Audit Workflow (orchestrated) ----------

Retrieves vendor invoice data from SAP, cross-references with the purchase order and goods receipt, and opens a ServiceNow task for accounts payable when discrepancies are found.

naftiko: "0.5"
info:
  label: "Vendor Invoice Reconciliation"
  description: "Retrieves vendor invoice data from SAP, cross-references with the purchase order and goods receipt, and opens a ServiceNow task for accounts payable when discrepancies are found."
  tags:
    - finance
    - procurement
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: invoice-reconciliation
      port: 8080
      tools:
        - name: reconcile-invoice
          description: "Given an SAP invoice document number, compare against PO and goods receipt, and flag discrepancies to ServiceNow."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The SAP invoice document number."
            - name: po_number
              in: body
              type: string
              description: "The related SAP purchase order number."
          steps:
            - name: get-invoice
              type: call
              call: "sap.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: get-po
              type: call
              call: "sap.get-po"
              with:
                po_number: "{{po_number}}"
            - name: flag-discrepancy
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Invoice discrepancy: {{invoice_number}} vs PO {{po_number}}"
                description: "Invoice amount: {{get-invoice.total_amount}} {{get-invoice.currency}}. PO amount: {{get-po.total_value}} {{get-po.currency}}. Vendor: {{get-invoice.vendor_name}}. Invoice date: {{get-invoice.document_date}}. Variance requires AP review."
                assigned_group: "Accounts_Payable"
                category: "invoice_reconciliation"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: invoices
          path: "/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://nestle.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

# ---------- 33. Azure Data Factory Pipeline Monitor (orchestrated) ----------

Checks Oracle Cloud inventory levels against reorder points, creates a SAP purchase requisition for low-stock materials, and notifies the supply planner in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Warehouse Replenishment Alert"
  description: "Checks Oracle Cloud inventory levels against reorder points, creates a SAP purchase requisition for low-stock materials, and notifies the supply planner in Microsoft Teams."
  tags:
    - supply-chain
    - inventory
    - oracle-cloud
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: replenishment
      port: 8080
      tools:
        - name: trigger-replenishment
          description: "Given an item number and warehouse, check inventory level, create a purchase requisition if below reorder point, and notify the planner."
          inputParameters:
            - name: item_number
              in: body
              type: string
              description: "The Oracle/SAP item number."
            - name: warehouse_code
              in: body
              type: string
              description: "The warehouse or distribution center code."
            - name: planner_email
              in: body
              type: string
              description: "The supply planner's email address."
          steps:
            - name: check-inventory
              type: call
              call: "oracle.get-onhand"
              with:
                item_number: "{{item_number}}"
                warehouse_code: "{{warehouse_code}}"
            - name: create-pr
              type: call
              call: "sap.create-purchase-requisition"
              with:
                material: "{{item_number}}"
                plant: "{{warehouse_code}}"
                quantity: "{{check-inventory.reorder_quantity}}"
            - name: notify-planner
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{planner_email}}"
                text: "Replenishment triggered for {{item_number}} at {{warehouse_code}}. Current on-hand: {{check-inventory.on_hand_quantity}} {{check-inventory.uom}}. PR created: {{create-pr.requisition_number}} for qty {{check-inventory.reorder_quantity}}."
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: inventory
          path: "/inventoryOnhandBalances?q=ItemNumber={{item_number}};SubinventoryCode={{warehouse_code}}"
          inputParameters:
            - name: item_number
              in: query
            - name: warehouse_code
              in: query
          operations:
            - name: get-onhand
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: purchase-requisitions
          path: "/A_PurchaseRequisition"
          operations:
            - name: create-purchase-requisition
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

# ---------- 38. Consumer Complaint Triage (orchestrated) ----------

Collects water consumption data from SAP environmental modules, compares against reduction targets stored in Google Sheets, and posts a sustainability status update to the ESG team's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Water Usage Sustainability Tracker"
  description: "Collects water consumption data from SAP environmental modules, compares against reduction targets stored in Google Sheets, and posts a sustainability status update to the ESG team's Microsoft Teams channel."
  tags:
    - sustainability
    - manufacturing
    - sap
    - google-sheets
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: water-sustainability
      port: 8080
      tools:
        - name: track-water-usage
          description: "Given a plant code and reporting month, fetch water consumption from SAP, compare to targets in Google Sheets, and post status to Teams."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The Nestlé plant code."
            - name: year_month
              in: body
              type: string
              description: "The reporting month in YYYY-MM format."
            - name: targets_spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets ID containing water reduction targets."
          steps:
            - name: get-water-data
              type: call
              call: "sap.get-water-consumption"
              with:
                plant: "{{plant_code}}"
                period: "{{year_month}}"
            - name: get-targets
              type: call
              call: "gsheets.get-values"
              with:
                spreadsheet_id: "{{targets_spreadsheet_id}}"
                range: "WaterTargets!A:D"
            - name: post-status
              type: call
              call: "msteams.post-channel"
              with:
                team_id: "esg-sustainability"
                channel_id: "water-stewardship"
                text: "Water usage report for plant {{plant_code}} ({{year_month}}): Consumption: {{get-water-data.total_cubic_meters}} m3. Per-tonne: {{get-water-data.per_tonne}} m3/t. Recycled: {{get-water-data.recycled_pct}}%. Target compliance requires review against {{targets_spreadsheet_id}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://nestle-s4.sap.com/sap/opu/odata/sap/API_ENVIRONMENT_HEALTH_SAFETY"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: water
          path: "/WaterConsumption?$filter=Plant eq '{{plant}}' and Period eq '{{period}}'"
          inputParameters:
            - name: plant
              in: query
            - name: period
              in: query
          operations:
            - name: get-water-consumption
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: get-values
              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-channel
              method: POST

# ---------- 42. HubSpot Lead to Salesforce Opportunity Sync (orchestrated) ----------

Fetches an employee profile from Workday by worker ID, returning name, job title, cost center, and location. Used across Nestlé HR and people analytics functions.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Fetches an employee profile from Workday by worker ID, returning name, job title, cost center, and location. Used across Nestlé HR and people analytics functions."
  tags:
    - hr
    - employee
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-employees
      port: 8080
      tools:
        - name: get-employee
          description: "Retrieve employee profile from Workday 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}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.descriptor"
            - name: job_title
              type: string
              mapping: "$.primaryJob.jobTitle"
            - name: cost_center
              type: string
              mapping: "$.primaryJob.costCenter"
            - name: location
              type: string
              mapping: "$.primaryJob.location"
  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

# ---------- 6. Adobe Analytics Brand Page Metrics (simple) ----------