Nestlé Capabilities
Naftiko 0.5 capability definitions for Nestlé - 100 capabilities showing integration workflows and service orchestrations.
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) ----------