Kellanova Capabilities
Naftiko 0.5 capability definitions for Kellanova - 100 capabilities showing integration workflows and service orchestrations.
Retrieves a payroll summary from ADP for a given employee and pay period.
naftiko: "0.5"
info:
label: "ADP Payroll Summary Lookup"
description: "Retrieves a payroll summary from ADP for a given employee and pay period."
tags:
- hr
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll-summary
description: "Look up payroll summary from ADP."
inputParameters:
- name: employee_id
in: body
type: string
description: "The ADP employee ID."
- name: pay_period
in: body
type: string
description: "The pay period identifier."
call: "adp.get-payroll"
with:
employee_id: "{{employee_id}}"
pay_period: "{{pay_period}}"
outputParameters:
- name: gross_pay
type: string
mapping: "$.payStatement.grossPayAmount"
- name: net_pay
type: string
mapping: "$.payStatement.netPayAmount"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: pay-statements
path: "/workers/{{employee_id}}/pay-statements?payPeriod={{pay_period}}"
inputParameters:
- name: employee_id
in: path
- name: pay_period
in: query
operations:
- name: get-payroll
method: GET
Retrieves product innovation pipeline entries from Airtable.
naftiko: "0.5"
info:
label: "Airtable Innovation Pipeline Lookup"
description: "Retrieves product innovation pipeline entries from Airtable."
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-innovation
port: 8080
tools:
- name: get-data
description: "Retrieves product innovation pipeline entries from Airtable."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "airtable-innovation.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: airtable-innovation
baseUri: "https://api.airtable.com/v0/appKellanova"
authentication:
type: bearer
token: "$secrets.airtable_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box.
naftiko: "0.5"
info:
label: "Allergen Compliance Pipeline"
description: "Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box."
tags:
- compliance
- sap
- google-sheets
- box
capability:
exposes:
- type: mcp
namespace: allergen-compliance-pipeline
port: 8080
tools:
- name: execute
description: "Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "google-sheets.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "box.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "box.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/v1"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.
naftiko: "0.5"
info:
label: "Annual Budget Planning Pipeline"
description: "Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams."
tags:
- finance
- sap
- snowflake
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: annual-budget-planning-pipeline
port: 8080
tools:
- name: execute
description: "Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves product launch project status from Asana.
naftiko: "0.5"
info:
label: "Asana Product Launch Lookup"
description: "Retrieves product launch project status from Asana."
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-launches
port: 8080
tools:
- name: get-data
description: "Retrieves product launch project status from Asana."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "asana-launches.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: asana-launches
baseUri: "https://app.asana.com/api/1.0"
authentication:
type: bearer
token: "$secrets.asana_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves the latest build status from Azure DevOps for a given pipeline.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status"
description: "Retrieves the latest build status from Azure DevOps for a given pipeline."
tags:
- devops
- azure-devops
capability:
exposes:
- type: mcp
namespace: ci-cd
port: 8080
tools:
- name: get-build-status
description: "Get the latest build status from Azure DevOps."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The Azure DevOps pipeline ID."
call: "azuredevops.get-latest-build"
with:
pipeline_id: "{{pipeline_id}}"
outputParameters:
- name: result
type: string
mapping: "$.value[0].result"
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/kellanova"
authentication:
type: basic
username: ""
password: "$secrets.azuredevops_pat"
resources:
- name: builds
path: "/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
inputParameters:
- name: pipeline_id
in: query
operations:
- name: get-latest-build
method: GET
Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake.
naftiko: "0.5"
info:
label: "Batch Quality Hold Pipeline"
description: "Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake."
tags:
- quality
- sap
- servicenow
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: batch-quality-hold-pipeline
port: 8080
tools:
- name: execute
description: "Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "servicenow.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "slack.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "snowflake.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: "https://api.servicenow.com/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves an e-commerce order from BigCommerce by order ID, returning status, total, and shipping details.
naftiko: "0.5"
info:
label: "BigCommerce Order Status Lookup"
description: "Retrieves an e-commerce order from BigCommerce by order ID, returning status, total, and shipping details."
tags:
- e-commerce
- bigcommerce
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order-status
description: "Look up a BigCommerce order by order ID."
inputParameters:
- name: order_id
in: body
type: string
description: "The BigCommerce order ID."
call: "bigcommerce.get-order"
with:
order_id: "{{order_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: total
type: string
mapping: "$.total_inc_tax"
- name: shipping_method
type: string
mapping: "$.shipping_addresses[0].shipping_method"
consumes:
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v2"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: orders
path: "/orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Archives a regulatory compliance document to Box in the appropriate folder.
naftiko: "0.5"
info:
label: "Box Regulatory Document Archive"
description: "Archives a regulatory compliance document to Box in the appropriate folder."
tags:
- compliance
- box
capability:
exposes:
- type: mcp
namespace: regulatory-docs
port: 8080
tools:
- name: archive-document
description: "Upload a regulatory document to the Box compliance archive."
inputParameters:
- name: file_name
in: body
type: string
description: "The document file name."
- name: folder_id
in: body
type: string
description: "The Box target folder ID."
call: "box.upload-file"
with:
folder_id: "{{folder_id}}"
file_name: "{{file_name}}"
consumes:
- type: http
namespace: box
baseUri: "https://upload.box.com/api/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files/content"
operations:
- name: upload-file
method: POST
Pulls market data from Circana, analyzes in Snowflake, generates insights in Confluence, and shares via Microsoft Teams.
naftiko: "0.5"
info:
label: "Competitive Intelligence Pipeline"
description: "Pulls market data from Circana, analyzes in Snowflake, generates insights in Confluence, and shares via Microsoft Teams."
tags:
- intelligence
- circana
- snowflake
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: competitive-intelligence-pipeline
port: 8080
tools:
- name: execute
description: "Pulls market data from Circana, analyzes in Snowflake, generates insights in Confluence, and shares via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "circana.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "confluence.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: circana
baseUri: "https://api.circana.com/v1"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: "https://api.confluence.com/v1"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Searches Confluence for SOPs and knowledge base articles by keyword.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Search"
description: "Searches Confluence for SOPs and knowledge base articles by keyword."
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-knowledge-base
description: "Search Confluence for SOPs and knowledge base articles."
inputParameters:
- name: keyword
in: body
type: string
description: "The search keyword."
call: "confluence.search"
with:
cql: "type=page AND text~'{{keyword}}'"
outputParameters:
- name: results
type: string
mapping: "$.results"
- name: total_size
type: string
mapping: "$.totalSize"
consumes:
- type: http
namespace: confluence
baseUri: "https://kellanova.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
Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake.
naftiko: "0.5"
info:
label: "Consumer Complaint Resolution Orchestrator"
description: "Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake."
tags:
- quality
- zendesk
- jira
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: consumer-complaint-resolution-orchestrator
port: 8080
tools:
- name: execute
description: "Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "zendesk.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "jira.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "slack.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "snowflake.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: zendesk
baseUri: "https://api.zendesk.com/v1"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: "https://api.jira.com/v1"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When a consumer complaint arrives in Zendesk, identifies the affected product batch in SAP, creates a quality investigation in ServiceNow, and notifies the quality team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Consumer Complaint Resolution Pipeline"
description: "When a consumer complaint arrives in Zendesk, identifies the affected product batch in SAP, creates a quality investigation in ServiceNow, and notifies the quality team via Microsoft Teams."
tags:
- quality-control
- customer-service
- zendesk
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-resolution
port: 8080
tools:
- name: investigate-complaint
description: "Given a Zendesk ticket ID and product details, trace the batch, create an investigation, and notify QA."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
- name: product_upc
in: body
type: string
description: "The product UPC code."
- name: batch_code
in: body
type: string
description: "The batch code from the package."
steps:
- name: get-ticket
type: call
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
- name: trace-batch
type: call
call: "sap.get-batch-details"
with:
batch_code: "{{batch_code}}"
upc: "{{product_upc}}"
- name: create-investigation
type: call
call: "servicenow.create-incident"
with:
short_description: "Consumer complaint investigation: {{get-ticket.subject}}"
category: "quality"
description: "Zendesk ticket: {{ticket_id}}. Product UPC: {{product_upc}}. Batch: {{batch_code}}. Plant: {{trace-batch.plant}}. Production date: {{trace-batch.production_date}}."
- name: notify-qa
type: call
call: "msteams.send-message"
with:
channel_id: "quality-assurance"
text: "Consumer complaint investigation: {{get-ticket.subject}}. Batch: {{batch_code}} from {{trace-batch.plant}}. ServiceNow: {{create-investigation.number}}."
consumes:
- type: http
namespace: zendesk
baseUri: "https://kellanova.zendesk.com/api/v2"
authentication:
type: basic
username: "$secrets.zendesk_user"
password: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: batches
path: "/Batches(BatchCode='{{batch_code}}',UPC='{{upc}}')"
inputParameters:
- name: batch_code
in: path
- name: upc
in: path
operations:
- name: get-batch-details
method: GET
- type: http
namespace: servicenow
baseUri: "https://kellanova.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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "Content Localization Pipeline"
description: "Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams."
tags:
- localization
- sharepoint
- microsoft-azure
- google-drive
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: content-localization-pipeline
port: 8080
tools:
- name: execute
description: "Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sharepoint.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "microsoft-azure.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-drive.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://api.sharepoint.com/v1"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-azure
baseUri: "https://api.microsoftazure.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_azure_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-drive
baseUri: "https://api.googledrive.com/v1"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets.
naftiko: "0.5"
info:
label: "Contract Renewal Pipeline"
description: "Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets."
tags:
- legal
- salesforce
- jira
- microsoft-outlook
- google-sheets
capability:
exposes:
- type: mcp
namespace: contract-renewal-pipeline
port: 8080
tools:
- name: execute
description: "Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "salesforce.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "jira.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "microsoft-outlook.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: "https://api.jira.com/v1"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: "https://api.microsoftoutlook.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_outlook_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Analyzes purchase data in Snowflake, generates recommendations via Azure ML, syncs to Salesforce, and emails via MailChimp.
naftiko: "0.5"
info:
label: "Cross-Sell Recommendation Pipeline"
description: "Analyzes purchase data in Snowflake, generates recommendations via Azure ML, syncs to Salesforce, and emails via MailChimp."
tags:
- e-commerce
- snowflake
- azure-machine-learning
- salesforce
- mailchimp
capability:
exposes:
- type: mcp
namespace: cross-sell-recommendation-pipeline
port: 8080
tools:
- name: execute
description: "Analyzes purchase data in Snowflake, generates recommendations via Azure ML, syncs to Salesforce, and emails via MailChimp."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "azure-machine-learning.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "salesforce.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "mailchimp.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: "https://api.azuremachinelearning.com/v1"
authentication:
type: bearer
token: "$secrets.azure_machine_learning_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: "https://api.mailchimp.com/v1"
authentication:
type: bearer
token: "$secrets.mailchimp_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
naftiko: "0.5"
info:
label: "Customer Feedback Analysis Pipeline"
description: "Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence."
tags:
- feedback
- zendesk
- azure-machine-learning
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: customer-feedback-analysis-pipeline
port: 8080
tools:
- name: execute
description: "Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "zendesk.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "azure-machine-learning.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "snowflake.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "confluence.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: zendesk
baseUri: "https://api.zendesk.com/v1"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: "https://api.azuremachinelearning.com/v1"
authentication:
type: bearer
token: "$secrets.azure_machine_learning_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: "https://api.confluence.com/v1"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake.
naftiko: "0.5"
info:
label: "Customer Loyalty Pipeline"
description: "Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake."
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-loyalty-pipeline
port: 8080
tools:
- name: execute
description: "Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "salesforce.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "stripe.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "mailchimp.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "snowflake.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: "https://api.stripe.com/v1"
authentication:
type: bearer
token: "$secrets.stripe_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: "https://api.mailchimp.com/v1"
authentication:
type: bearer
token: "$secrets.mailchimp_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
naftiko: "0.5"
info:
label: "Data Privacy Compliance Pipeline"
description: "Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack."
tags:
- compliance
- snowflake
- google-sheets
- sharepoint
- slack
capability:
exposes:
- type: mcp
namespace: data-privacy-compliance-pipeline
port: 8080
tools:
- name: execute
description: "Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "google-sheets.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "sharepoint.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: "https://api.sharepoint.com/v1"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Pulls sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies the supply chain team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Demand Forecast Pipeline"
description: "Pulls sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies the supply chain team via Microsoft Teams."
tags:
- supply-chain
- forecasting
- sap-bw
- azure-databricks
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: run-demand-forecast
description: "Given a product category and time horizon, generate demand forecasts and update inventory plans."
inputParameters:
- name: product_category
in: body
type: string
description: "The product category (e.g., snacks, cereals, frozen)."
- name: forecast_horizon_weeks
in: body
type: string
description: "The forecast horizon in weeks."
- name: region
in: body
type: string
description: "The geographic region for the forecast."
steps:
- name: extract-sales
type: call
call: "sapbw.get-sales-data"
with:
category: "{{product_category}}"
region: "{{region}}"
weeks: "{{forecast_horizon_weeks}}"
- name: run-forecast
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM demand_forecast('{{product_category}}', '{{region}}', {{forecast_horizon_weeks}})"
- name: update-inventory
type: call
call: "sap.update-inventory-plan"
with:
category: "{{product_category}}"
region: "{{region}}"
forecast: "{{run-forecast.results}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "supply-chain-planning"
text: "Demand forecast updated for {{product_category}} in {{region}} ({{forecast_horizon_weeks}}w horizon). Projected demand: {{run-forecast.total_units}}. Inventory plans updated."
consumes:
- type: http
namespace: sapbw
baseUri: "https://kellanova-bw.sap.com/sap/opu/odata/sap/BW_SALES_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-data
path: "/SalesHistory?$filter=Category eq '{{category}}' and Region eq '{{region}}'"
inputParameters:
- name: category
in: query
- name: region
in: query
operations:
- name: get-sales-data
method: GET
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/INVENTORY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory-plans
path: "/InventoryPlans"
operations:
- name: update-inventory-plan
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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets.
naftiko: "0.5"
info:
label: "Digital Marketing Campaign Pipeline"
description: "Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets."
tags:
- marketing
- hubspot
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: digital-marketing-campaign-pipeline
port: 8080
tools:
- name: execute
description: "Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "hubspot.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "facebook.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-analytics.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubspot.com/v1"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: "https://api.facebook.com/v1"
authentication:
type: bearer
token: "$secrets.facebook_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: "https://api.googleanalytics.com/v1"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves current inventory levels at a distribution center from SAP by material number and plant code.
naftiko: "0.5"
info:
label: "Distribution Center Inventory Lookup"
description: "Retrieves current inventory levels at a distribution center from SAP by material number and plant code."
tags:
- distribution
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-dc-inventory
description: "Look up inventory levels at a distribution center in SAP."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: plant_code
in: body
type: string
description: "The distribution center plant code."
call: "sap.get-inventory"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
outputParameters:
- name: available_quantity
type: string
mapping: "$.d.AvailableStock"
- name: reserved_quantity
type: string
mapping: "$.d.ReservedStock"
- name: unit_of_measure
type: string
mapping: "$.d.BaseUnit"
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory
path: "/MaterialStock(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-inventory
method: GET
Retrieves the status of a DocuSign supplier agreement envelope.
naftiko: "0.5"
info:
label: "DocuSign Supplier Agreement Lookup"
description: "Retrieves the status of a DocuSign supplier agreement envelope."
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-agreements
port: 8080
tools:
- name: get-data
description: "Retrieves the status of a DocuSign supplier agreement envelope."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "docusign-agreements.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: docusign-agreements
baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/kellanova"
authentication:
type: bearer
token: "$secrets.docusign_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves application performance metrics from Dynatrace for a given service.
naftiko: "0.5"
info:
label: "Dynatrace Application Health Check"
description: "Retrieves application performance metrics from Dynatrace for a given service."
tags:
- monitoring
- dynatrace
capability:
exposes:
- type: mcp
namespace: app-monitoring
port: 8080
tools:
- name: get-app-health
description: "Retrieve application health metrics from Dynatrace."
inputParameters:
- name: service_name
in: body
type: string
description: "The Dynatrace service name."
call: "dynatrace.get-service-metrics"
with:
service_name: "{{service_name}}"
outputParameters:
- name: response_time
type: string
mapping: "$.result[0].data[0].values[0]"
- name: error_rate
type: string
mapping: "$.result[1].data[0].values[0]"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://kellanova.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: metrics
path: "/metrics/query?metricSelector=builtin:service.response.time,builtin:service.errors.total.rate&entitySelector=type(SERVICE),entityName({{service_name}})"
inputParameters:
- name: service_name
in: query
operations:
- name: get-service-metrics
method: GET
When a BigCommerce order is placed, creates a delivery in SAP, updates the order status in BigCommerce, and sends a shipping confirmation via MailChimp.
naftiko: "0.5"
info:
label: "E-Commerce Order Fulfillment Pipeline"
description: "When a BigCommerce order is placed, creates a delivery in SAP, updates the order status in BigCommerce, and sends a shipping confirmation via MailChimp."
tags:
- e-commerce
- fulfillment
- bigcommerce
- sap
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: "Given an order ID, create a delivery, update status, and send shipping confirmation."
inputParameters:
- name: order_id
in: body
type: string
description: "The BigCommerce order ID."
- name: customer_email
in: body
type: string
description: "The customer email address."
steps:
- name: get-order
type: call
call: "bigcommerce.get-order"
with:
order_id: "{{order_id}}"
- name: create-delivery
type: call
call: "sap.create-delivery"
with:
order_id: "{{order_id}}"
items: "{{get-order.products}}"
shipping_address: "{{get-order.shipping_addresses}}"
- name: update-status
type: call
call: "bigcommerce.update-order-status"
with:
order_id: "{{order_id}}"
status: "shipped"
tracking_number: "{{create-delivery.tracking_number}}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template: "shipping-confirmation"
recipient_email: "{{customer_email}}"
tracking_number: "{{create-delivery.tracking_number}}"
consumes:
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v2"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: orders
path: "/orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: update-order-status
method: PUT
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/Deliveries"
operations:
- name: create-delivery
method: POST
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: transactional
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box.
naftiko: "0.5"
info:
label: "Employee Offboarding Pipeline"
description: "Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box."
tags:
- hr
- workday
- azure-active-directory
- servicenow
- box
capability:
exposes:
- type: mcp
namespace: employee-offboarding-pipeline
port: 8080
tools:
- name: execute
description: "Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "workday.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "azure-active-directory.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "box.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: azure-active-directory
baseUri: "https://api.azureactivedirectory.com/v1"
authentication:
type: bearer
token: "$secrets.azure_active_directory_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: "https://api.servicenow.com/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/v1"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence 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 Kellanova, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready 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://kellanova.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
Enrolls employees from Workday, provisions in Stripe, sends welcome via MailChimp, and tracks in Google Sheets.
naftiko: "0.5"
info:
label: "Employee Wellness Program Pipeline"
description: "Enrolls employees from Workday, provisions in Stripe, sends welcome via MailChimp, and tracks in Google Sheets."
tags:
- hr
- workday
- stripe
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: employee-wellness-program-pipeline
port: 8080
tools:
- name: execute
description: "Enrolls employees from Workday, provisions in Stripe, sends welcome via MailChimp, and tracks in Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "workday.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "stripe.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "mailchimp.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: "https://api.stripe.com/v1"
authentication:
type: bearer
token: "$secrets.stripe_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: "https://api.mailchimp.com/v1"
authentication:
type: bearer
token: "$secrets.mailchimp_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves a Figma packaging design file by key.
naftiko: "0.5"
info:
label: "Figma Packaging Design Lookup"
description: "Retrieves a Figma packaging design file by key."
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma-packaging
port: 8080
tools:
- name: get-data
description: "Retrieves a Figma packaging design file by key."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "figma-packaging.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: figma-packaging
baseUri: "https://api.figma.com/v1"
authentication:
type: bearer
token: "$secrets.figma_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Financial Close Pipeline"
description: "Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams."
tags:
- finance
- sap
- power-bi
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: financial-close-pipeline
port: 8080
tools:
- name: execute
description: "Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "power-bi.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "box.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/v1"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When a food safety issue is detected, identifies affected batches in SAP, creates a recall case in ServiceNow, alerts retail partners via Salesforce, and notifies the crisis team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Food Safety Recall Pipeline"
description: "When a food safety issue is detected, identifies affected batches in SAP, creates a recall case in ServiceNow, alerts retail partners via Salesforce, and notifies the crisis team via Microsoft Teams."
tags:
- food-safety
- recall
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food-safety
port: 8080
tools:
- name: initiate-recall
description: "Given a product and issue description, identify affected batches, create a recall case, and alert stakeholders."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number of the affected product."
- name: issue_description
in: body
type: string
description: "Description of the food safety issue."
- name: severity
in: body
type: string
description: "Severity level (class-I, class-II, class-III)."
steps:
- name: find-batches
type: call
call: "sap.find-affected-batches"
with:
material_number: "{{material_number}}"
- name: create-recall-case
type: call
call: "servicenow.create-case"
with:
short_description: "Food safety recall: {{material_number}} - {{severity}}"
category: "food_safety"
priority: "critical"
description: "{{issue_description}}. Affected batches: {{find-batches.batch_count}}."
- name: alert-retailers
type: call
call: "salesforce.create-recall-alert"
with:
material_number: "{{material_number}}"
batches: "{{find-batches.batch_ids}}"
severity: "{{severity}}"
- name: notify-crisis-team
type: call
call: "msteams.send-message"
with:
channel_id: "crisis-management"
text: "FOOD SAFETY RECALL initiated. Product: {{material_number}}. Severity: {{severity}}. Affected batches: {{find-batches.batch_count}}. Case: {{create-recall-case.number}}. Retail alerts sent."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: batch-trace
path: "/BatchTrace?$filter=Material eq '{{material_number}}'"
inputParameters:
- name: material_number
in: query
operations:
- name: find-affected-batches
method: GET
- type: http
namespace: servicenow
baseUri: "https://kellanova.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: recall-alerts
path: "/sobjects/RecallAlert__c"
operations:
- name: create-recall-alert
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: channel_id
in: path
operations:
- name: send-message
method: POST
Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams.
naftiko: "0.5"
info:
label: "Global Pricing Update Pipeline"
description: "Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams."
tags:
- pricing
- sap
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: global-pricing-update-pipeline
port: 8080
tools:
- name: execute
description: "Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "salesforce.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "snowflake.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Searches Google Drive for brand guidelines and creative assets.
naftiko: "0.5"
info:
label: "Google Drive Brand Asset Search"
description: "Searches Google Drive for brand guidelines and creative assets."
tags:
- marketing
- google-drive
capability:
exposes:
- type: mcp
namespace: brand-assets
port: 8080
tools:
- name: search-brand-assets
description: "Search Google Drive for brand assets."
inputParameters:
- name: keyword
in: body
type: string
description: "The search keyword."
call: "google-drive.search-files"
with:
query: "name contains '{{keyword}}'"
outputParameters:
- name: files
type: string
mapping: "$.files"
consumes:
- type: http
namespace: google-drive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files?q={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Searches Google Drive for product recipe and formulation documents by keyword.
naftiko: "0.5"
info:
label: "Google Drive Recipe Document Search"
description: "Searches Google Drive for product recipe and formulation documents by keyword."
tags:
- product-development
- google-drive
capability:
exposes:
- type: mcp
namespace: recipe-management
port: 8080
tools:
- name: search-recipes
description: "Search Google Drive for recipe and formulation documents."
inputParameters:
- name: keyword
in: body
type: string
description: "The search keyword."
call: "google-drive.search-files"
with:
query: "name contains '{{keyword}}' and '{{folder_id}}' in parents"
outputParameters:
- name: files
type: string
mapping: "$.files"
consumes:
- type: http
namespace: google-drive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files?q={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Retrieves nearby retail locations carrying Kellanova products using Google Maps.
naftiko: "0.5"
info:
label: "Google Maps Store Locator"
description: "Retrieves nearby retail locations carrying Kellanova products using Google Maps."
tags:
- retail
- google-maps
capability:
exposes:
- type: mcp
namespace: store-locator
port: 8080
tools:
- name: find-nearby-stores
description: "Find retail stores carrying Kellanova products near a location."
inputParameters:
- name: address
in: body
type: string
description: "The consumer address or zip code."
- name: brand
in: body
type: string
description: "The brand to search for."
call: "google-maps.search-places"
with:
query: "{{brand}} near {{address}}"
outputParameters:
- name: stores
type: string
mapping: "$.results"
consumes:
- type: http
namespace: google-maps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apikey
key: "$secrets.google_maps_key"
resources:
- name: places
path: "/place/textsearch/json?query={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-places
method: GET
Retrieves search performance data from Google Search Console for Kellanova properties.
naftiko: "0.5"
info:
label: "Google Search Console SEO Lookup"
description: "Retrieves search performance data from Google Search Console for Kellanova properties."
tags:
- seo
- google-search-console
capability:
exposes:
- type: mcp
namespace: gsc-seo
port: 8080
tools:
- name: get-data
description: "Retrieves search performance data from Google Search Console for Kellanova properties."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "gsc-seo.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: gsc-seo
baseUri: "https://www.googleapis.com/webmasters/v3"
authentication:
type: bearer
token: "$secrets.google_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves promotion data from a Google Sheets tracker used by the trade marketing team.
naftiko: "0.5"
info:
label: "Google Sheets Promotion Tracker"
description: "Retrieves promotion data from a Google Sheets tracker used by the trade marketing team."
tags:
- marketing
- promotions
- google-sheets
capability:
exposes:
- type: mcp
namespace: trade-marketing
port: 8080
tools:
- name: get-promotion-data
description: "Retrieve promotion tracking data from Google Sheets."
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: "The Google Sheets spreadsheet ID."
- name: range
in: body
type: string
description: "The cell range to retrieve (e.g., Sheet1!A1:Z100)."
call: "google-sheets.get-values"
with:
spreadsheet_id: "{{spreadsheet_id}}"
range: "{{range}}"
outputParameters:
- name: values
type: string
mapping: "$.values"
consumes:
- type: http
namespace: google-sheets
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
Retrieves new retail lead details from HubSpot CRM for the sales development team.
naftiko: "0.5"
info:
label: "HubSpot Retail Lead Tracking"
description: "Retrieves new retail lead details from HubSpot CRM for the sales development team."
tags:
- sales
- hubspot
capability:
exposes:
- type: mcp
namespace: sales-leads
port: 8080
tools:
- name: get-retail-lead
description: "Look up a retail lead in HubSpot by company name."
inputParameters:
- name: company_name
in: body
type: string
description: "The retail company name."
call: "hubspot.search-contacts"
with:
query: "{{company_name}}"
outputParameters:
- name: contact_name
type: string
mapping: "$.results[0].properties.firstname"
- name: email
type: string
mapping: "$.results[0].properties.email"
- name: lifecycle_stage
type: string
mapping: "$.results[0].properties.lifecyclestage"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/crm/v3/objects/contacts/search"
operations:
- name: search-contacts
method: POST
Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.
naftiko: "0.5"
info:
label: "Influencer Partnership Pipeline"
description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics."
tags:
- marketing
- hubspot
- docusign
- asana
- instagram
capability:
exposes:
- type: mcp
namespace: influencer-partnership-pipeline
port: 8080
tools:
- name: execute
description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "hubspot.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "docusign.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "asana.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "instagram.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubspot.com/v1"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: "https://api.docusign.com/v1"
authentication:
type: bearer
token: "$secrets.docusign_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: asana
baseUri: "https://api.asana.com/v1"
authentication:
type: bearer
token: "$secrets.asana_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: "https://api.instagram.com/v1"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets.
naftiko: "0.5"
info:
label: "Ingredient Sourcing Optimization Pipeline"
description: "Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets."
tags:
- sourcing
- sap
- snowflake
- google-sheets
capability:
exposes:
- type: mcp
namespace: ingredient-sourcing-optimization-pipeline
port: 8080
tools:
- name: execute
description: "Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves engagement metrics for Kellanova brand Instagram posts.
naftiko: "0.5"
info:
label: "Instagram Brand Metrics Lookup"
description: "Retrieves engagement metrics for Kellanova brand Instagram posts."
tags:
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: instagram-brand
port: 8080
tools:
- name: get-data
description: "Retrieves engagement metrics for Kellanova brand Instagram posts."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "instagram-brand.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: instagram-brand
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge.
naftiko: "0.5"
info:
label: "IT Incident Response Pipeline"
description: "On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge."
tags:
- incident
- dynatrace
- servicenow
- slack
- zoom
capability:
exposes:
- type: mcp
namespace: it-incident-response-pipeline
port: 8080
tools:
- name: execute
description: "On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "dynatrace.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "servicenow.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "slack.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "zoom.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://api.dynatrace.com/v1"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: "https://api.servicenow.com/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: zoom
baseUri: "https://api.zoom.com/v1"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves a Jira issue by key from the product development project, returning summary, status, assignee, and sprint.
naftiko: "0.5"
info:
label: "Jira Product Development Task Lookup"
description: "Retrieves a Jira issue by key from the product development project, returning summary, status, assignee, and sprint."
tags:
- product-development
- jira
capability:
exposes:
- type: mcp
namespace: product-dev
port: 8080
tools:
- name: get-jira-issue
description: "Look up a Jira issue by key from the product development project."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
consumes:
- type: http
namespace: jira
baseUri: "https://kellanova.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Creates a brand content post on LinkedIn for Kellanova's corporate page and logs it in Salesforce for tracking.
naftiko: "0.5"
info:
label: "LinkedIn Brand Content Post"
description: "Creates a brand content post on LinkedIn for Kellanova's corporate page and logs it in Salesforce for tracking."
tags:
- marketing
- social-media
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: social-content
port: 8080
tools:
- name: post-brand-content
description: "Given content details, create a LinkedIn post and log it in Salesforce."
inputParameters:
- name: content_text
in: body
type: string
description: "The post content text."
- name: campaign_id
in: body
type: string
description: "The associated Salesforce campaign ID."
steps:
- name: create-post
type: call
call: "linkedin.create-post"
with:
text: "{{content_text}}"
- name: log-post
type: call
call: "salesforce.create-activity"
with:
campaign_id: "{{campaign_id}}"
type: "social_post"
platform: "linkedin"
post_id: "{{create-post.post_id}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: posts
path: "/ugcPosts"
operations:
- name: create-post
method: POST
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: activities
path: "/sobjects/CampaignActivity__c"
operations:
- name: create-activity
method: POST
Creates and sends a consumer newsletter campaign in MailChimp targeting a specific brand audience segment.
naftiko: "0.5"
info:
label: "MailChimp Consumer Newsletter Campaign"
description: "Creates and sends a consumer newsletter campaign in MailChimp targeting a specific brand audience segment."
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: send-newsletter
description: "Create and send a MailChimp newsletter campaign."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name."
- name: list_id
in: body
type: string
description: "The MailChimp audience list ID."
- name: template_id
in: body
type: string
description: "The email template ID."
- name: subject
in: body
type: string
description: "The email subject line."
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
list_id: "{{list_id}}"
template_id: "{{template_id}}"
subject: "{{subject}}"
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: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
Pulls campaign data from Google Analytics, enriches with retail sales from Circana, creates a performance report in Power BI, and shares results with the marketing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Pipeline"
description: "Pulls campaign data from Google Analytics, enriches with retail sales from Circana, creates a performance report in Power BI, and shares results with the marketing team via Microsoft Teams."
tags:
- marketing
- analytics
- google-analytics
- circana
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: analyze-campaign
description: "Given a campaign ID, pull digital and retail data, refresh the dashboard, and notify the marketing team."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The marketing campaign identifier."
- name: start_date
in: body
type: string
description: "Campaign start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Campaign end date in YYYY-MM-DD format."
steps:
- name: get-digital-metrics
type: call
call: "google-analytics.get-report"
with:
property_id: "kellanova-brand-site"
campaign_id: "{{campaign_id}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: get-retail-lift
type: call
call: "circana.get-sales-lift"
with:
campaign_id: "{{campaign_id}}"
period: "{{start_date}}_{{end_date}}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "marketing-campaign-performance"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "marketing"
text: "Campaign {{campaign_id}} performance: Digital impressions: {{get-digital-metrics.impressions}}. Retail lift: {{get-retail-lift.lift_percent}}%. Dashboard refreshed."
consumes:
- type: http
namespace: google-analytics
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: get-report
method: POST
- type: http
namespace: circana
baseUri: "https://api.circana.com/v1"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: sales-lift
path: "/campaigns/{{campaign_id}}/lift"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-sales-lift
method: GET
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves financial data from SAP BW and generates a formatted Excel report stored in SharePoint.
naftiko: "0.5"
info:
label: "Microsoft Excel Financial Report"
description: "Retrieves financial data from SAP BW and generates a formatted Excel report stored in SharePoint."
tags:
- finance
- reporting
- sap-bw
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-reporting
port: 8080
tools:
- name: generate-financial-report
description: "Given a report type and period, pull data from SAP BW and create an Excel report in SharePoint."
inputParameters:
- name: report_type
in: body
type: string
description: "The report type (e.g., p-and-l, balance-sheet, cost-center)."
- name: period
in: body
type: string
description: "The fiscal period."
steps:
- name: extract-data
type: call
call: "sapbw.get-financial-data"
with:
report_type: "{{report_type}}"
period: "{{period}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "finance-reports"
folder_path: "FinancialReports/{{report_type}}"
file_name: "{{report_type}}_{{period}}.xlsx"
content: "{{extract-data.results}}"
consumes:
- type: http
namespace: sapbw
baseUri: "https://kellanova-bw.sap.com/sap/opu/odata/sap/BW_FINANCE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: financial-data
path: "/FinancialData?$filter=ReportType eq '{{report_type}}' and Period eq '{{period}}'"
inputParameters:
- name: report_type
in: query
- name: period
in: query
operations:
- name: get-financial-data
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "New Market Entry Pipeline"
description: "Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams."
tags:
- expansion
- salesforce
- airtable
- figma
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: new-market-entry-pipeline
port: 8080
tools:
- name: execute
description: "Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "salesforce.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "airtable.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "figma.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: "https://api.airtable.com/v1"
authentication:
type: bearer
token: "$secrets.airtable_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: figma
baseUri: "https://api.figma.com/v1"
authentication:
type: bearer
token: "$secrets.figma_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When launching a new product, creates the product master in SAP, sets up a Salesforce campaign, configures Google Tag Manager tracking, and announces to the sales team via Microsoft Teams.
naftiko: "0.5"
info:
label: "New Product Launch Pipeline"
description: "When launching a new product, creates the product master in SAP, sets up a Salesforce campaign, configures Google Tag Manager tracking, and announces to the sales team via Microsoft Teams."
tags:
- product-management
- sap
- salesforce
- google-tag-manager
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-product
description: "Given product details, create master data, set up marketing tracking, and notify the sales team."
inputParameters:
- name: product_name
in: body
type: string
description: "The new product name."
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: brand
in: body
type: string
description: "The brand name."
- name: launch_date
in: body
type: string
description: "The launch date in YYYY-MM-DD format."
steps:
- name: create-master
type: call
call: "sap.create-material"
with:
material_number: "{{material_number}}"
description: "{{product_name}}"
brand: "{{brand}}"
- name: create-campaign
type: call
call: "salesforce.create-campaign"
with:
name: "Launch: {{product_name}}"
brand: "{{brand}}"
start_date: "{{launch_date}}"
- name: setup-tracking
type: call
call: "gtm.create-tag"
with:
tag_name: "{{product_name}}_launch"
product_id: "{{material_number}}"
- name: announce-launch
type: call
call: "msteams.send-message"
with:
channel_id: "sales-team"
text: "New product launch: {{product_name}} ({{brand}}) on {{launch_date}}. SAP material: {{material_number}}. Salesforce campaign: {{create-campaign.campaign_id}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Material"
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/sobjects/Campaign"
operations:
- name: create-campaign
method: POST
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.gtm_token"
resources:
- name: tags
path: "/accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags"
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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves production system health metrics from New Relic.
naftiko: "0.5"
info:
label: "New Relic Production Health Lookup"
description: "Retrieves production system health metrics from New Relic."
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-prod
port: 8080
tools:
- name: get-data
description: "Retrieves production system health metrics from New Relic."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "newrelic-prod.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: newrelic-prod
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.newrelic_api_key"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Generates nutritional labels from SAP recipe data, validates against regulatory database, uploads to SharePoint, and notifies compliance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Nutritional Labeling Pipeline"
description: "Generates nutritional labels from SAP recipe data, validates against regulatory database, uploads to SharePoint, and notifies compliance team via Microsoft Teams."
tags:
- compliance
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nutritional-labeling
port: 8080
tools:
- name: execute
description: "Orchestrate nutritional labeling across SAP, SharePoint, and Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The product ID."
- name: context
in: body
type: string
description: "Additional context."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "sharepoint.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "microsoft-teams.execute-step-3"
with:
data: "{{step-2.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: "https://api.sharepoint.com/v1"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When a new packaging design is submitted, stores it in SharePoint, creates a review task in Jira, and notifies the team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Packaging Design Review Pipeline"
description: "When a new packaging design is submitted, stores it in SharePoint, creates a review task in Jira, and notifies the team via Microsoft Teams."
tags:
- product-development
- packaging
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: packaging-design
port: 8080
tools:
- name: submit-design-review
description: "Given packaging design details, store the design, create a review task, and notify."
inputParameters:
- name: product_name
in: body
type: string
description: "The product name."
- name: design_version
in: body
type: string
description: "The design version."
steps:
- name: store-design
type: call
call: "sharepoint.upload-file"
with:
site_id: "packaging-designs"
folder_path: "Designs/{{product_name}}/{{design_version}}"
file_name: "packaging_{{design_version}}.pdf"
- name: create-review
type: call
call: "jira.create-issue"
with:
project: "PKG"
summary: "Packaging review: {{product_name}} v{{design_version}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "packaging-design"
text: "New packaging design for review: {{product_name}} v{{design_version}}. Jira: {{create-review.key}}."
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: "https://kellanova.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack.
naftiko: "0.5"
info:
label: "Plant Energy Monitoring Pipeline"
description: "Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack."
tags:
- operations
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: plant-energy-monitoring-pipeline
port: 8080
tools:
- name: execute
description: "Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "power-bi.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When equipment requires maintenance, creates a work order in SAP, assigns a technician via ServiceNow, and notifies the plant manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Plant Maintenance Work Order Pipeline"
description: "When equipment requires maintenance, creates a work order in SAP, assigns a technician via ServiceNow, and notifies the plant manager via Microsoft Teams."
tags:
- manufacturing
- maintenance
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: create-maintenance-order
description: "Given equipment details, create a work order, assign a technician, and notify management."
inputParameters:
- name: equipment_id
in: body
type: string
description: "The SAP equipment identifier."
- name: plant_code
in: body
type: string
description: "The manufacturing plant code."
- name: issue_description
in: body
type: string
description: "Description of the maintenance issue."
- name: priority
in: body
type: string
description: "Priority level (emergency, high, medium, low)."
steps:
- name: create-order
type: call
call: "sap.create-maintenance-order"
with:
equipment_id: "{{equipment_id}}"
plant: "{{plant_code}}"
description: "{{issue_description}}"
priority: "{{priority}}"
- name: assign-technician
type: call
call: "servicenow.create-work-order"
with:
short_description: "Equipment maintenance: {{equipment_id}} at {{plant_code}}"
priority: "{{priority}}"
description: "{{issue_description}}. SAP order: {{create-order.order_number}}."
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "plant-ops-{{plant_code}}"
text: "Maintenance order created for equipment {{equipment_id}} at {{plant_code}}. Priority: {{priority}}. SAP order: {{create-order.order_number}}. ServiceNow: {{assign-technician.number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrders"
operations:
- name: create-maintenance-order
method: POST
- type: http
namespace: servicenow
baseUri: "https://kellanova.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: work-orders
path: "/table/wm_order"
operations:
- name: create-work-order
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves team training progress from Pluralsight for a given course.
naftiko: "0.5"
info:
label: "Pluralsight Training Progress Lookup"
description: "Retrieves team training progress from Pluralsight for a given course."
tags:
- training
- pluralsight
capability:
exposes:
- type: mcp
namespace: learning
port: 8080
tools:
- name: get-training-progress
description: "Look up team training progress in Pluralsight."
inputParameters:
- name: team_name
in: body
type: string
description: "The team name."
- name: course_name
in: body
type: string
description: "The course name."
call: "pluralsight.get-team-progress"
with:
team: "{{team_name}}"
course: "{{course_name}}"
outputParameters:
- name: completion_rate
type: string
mapping: "$.completionRate"
- name: enrolled_count
type: string
mapping: "$.enrolledCount"
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: team-progress
path: "/teams/{{team}}/courses/{{course}}/progress"
inputParameters:
- name: team
in: path
- name: course
in: path
operations:
- name: get-team-progress
method: GET
Retrieves Power BI manufacturing performance dashboard refresh status.
naftiko: "0.5"
info:
label: "Power BI Manufacturing Dashboard"
description: "Retrieves Power BI manufacturing performance dashboard refresh status."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi-mfg
port: 8080
tools:
- name: get-data
description: "Retrieves Power BI manufacturing performance dashboard refresh status."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "powerbi-mfg.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: powerbi-mfg
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Triggers a refresh of the sales performance Power BI dataset to ensure dashboards reflect the latest retail data.
naftiko: "0.5"
info:
label: "Power BI Sales Dashboard Refresh"
description: "Triggers a refresh of the sales performance Power BI dataset to ensure dashboards reflect the latest retail data."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: refresh-sales-dashboard
description: "Trigger a Power BI dataset refresh for the sales performance dashboard."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset identifier."
call: "powerbi.refresh-dataset"
with:
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable.
naftiko: "0.5"
info:
label: "Product Photography Pipeline"
description: "Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable."
tags:
- creative
- asana
- google-drive
- airtable
capability:
exposes:
- type: mcp
namespace: product-photography-pipeline
port: 8080
tools:
- name: execute
description: "Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "asana.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "google-drive.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "airtable.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "airtable.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: asana
baseUri: "https://api.asana.com/v1"
authentication:
type: bearer
token: "$secrets.asana_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-drive
baseUri: "https://api.googledrive.com/v1"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: "https://api.airtable.com/v1"
authentication:
type: bearer
token: "$secrets.airtable_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker.
naftiko: "0.5"
info:
label: "Production Line Changeover Pipeline"
description: "Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker."
tags:
- manufacturing
- sap
- servicenow
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: production-line-changeover-pipeline
port: 8080
tools:
- name: execute
description: "Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "servicenow.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "slack.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: "https://api.servicenow.com/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves the current status of a manufacturing production line from SAP, including throughput rate, downtime, and batch in progress.
naftiko: "0.5"
info:
label: "Production Line Status Lookup"
description: "Retrieves the current status of a manufacturing production line from SAP, including throughput rate, downtime, and batch in progress."
tags:
- manufacturing
- production
- sap
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: get-production-line-status
description: "Look up a production line status in SAP by line ID."
inputParameters:
- name: line_id
in: body
type: string
description: "The SAP production line identifier."
call: "sap.get-production-line"
with:
line_id: "{{line_id}}"
outputParameters:
- name: status
type: string
mapping: "$.d.LineStatus"
- name: throughput_rate
type: string
mapping: "$.d.ThroughputRate"
- name: current_batch
type: string
mapping: "$.d.CurrentBatchId"
- name: downtime_minutes
type: string
mapping: "$.d.DowntimeMinutes"
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: production-lines
path: "/ProductionLines('{{line_id}}')"
inputParameters:
- name: line_id
in: path
operations:
- name: get-production-line
method: GET
Pulls demand forecasts from Azure Databricks, creates production orders in SAP, and notifies plant managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Production Scheduling Pipeline"
description: "Pulls demand forecasts from Azure Databricks, creates production orders in SAP, and notifies plant managers via Microsoft Teams."
tags:
- manufacturing
- scheduling
- azure-databricks
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: production-scheduling
port: 8080
tools:
- name: schedule-production
description: "Given a plant and period, generate production schedule from demand forecasts."
inputParameters:
- name: plant_code
in: body
type: string
description: "The manufacturing plant code."
- name: period
in: body
type: string
description: "The scheduling period."
steps:
- name: get-forecast
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM demand_forecast WHERE plant = '{{plant_code}}' AND period = '{{period}}'"
- name: create-orders
type: call
call: "sap.create-production-orders"
with:
plant: "{{plant_code}}"
forecast: "{{get-forecast.results}}"
- name: notify-plant
type: call
call: "msteams.send-message"
with:
channel_id: "plant-ops-{{plant_code}}"
text: "Production schedule for {{plant_code}} ({{period}}): {{create-orders.order_count}} orders created."
consumes:
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: production-orders
path: "/ProductionOrders"
operations:
- name: create-production-orders
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: channel_id
in: path
operations:
- name: send-message
method: POST
When a production batch completes in SAP, runs quality checks, updates batch status, creates a release certificate in SharePoint, and notifies the QA team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Quality Control Batch Release Pipeline"
description: "When a production batch completes in SAP, runs quality checks, updates batch status, creates a release certificate in SharePoint, and notifies the QA team via Microsoft Teams."
tags:
- manufacturing
- quality-control
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-control
port: 8080
tools:
- name: process-batch-release
description: "Given a batch ID, run quality checks, generate release certificate, and notify QA."
inputParameters:
- name: batch_id
in: body
type: string
description: "The SAP production batch identifier."
- name: plant_code
in: body
type: string
description: "The manufacturing plant code."
steps:
- name: get-batch
type: call
call: "sap.get-batch"
with:
batch_id: "{{batch_id}}"
- name: run-qa-checks
type: call
call: "sap.run-quality-inspection"
with:
batch_id: "{{batch_id}}"
plant: "{{plant_code}}"
- name: create-certificate
type: call
call: "sharepoint.create-document"
with:
site_id: "qa-documents"
folder_path: "BatchRelease/{{plant_code}}/{{batch_id}}"
content: "Batch {{batch_id}} - Plant {{plant_code}} - QA Result: {{run-qa-checks.result}} - Release Date: {{run-qa-checks.inspection_date}}"
- name: notify-qa
type: call
call: "msteams.send-message"
with:
channel_id: "quality-assurance"
text: "Batch {{batch_id}} from {{plant_code}}: QA {{run-qa-checks.result}}. Certificate: {{create-certificate.url}}. Product: {{get-batch.product_name}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: batches
path: "/Batches('{{batch_id}}')"
inputParameters:
- name: batch_id
in: path
operations:
- name: get-batch
method: GET
- name: inspections
path: "/QualityInspections"
operations:
- name: run-quality-inspection
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
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: channel_id
in: path
operations:
- name: send-message
method: POST
When raw material inventory falls below threshold, generates a purchase requisition in SAP, gets supplier quotes, and notifies the procurement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Raw Material Procurement Pipeline"
description: "When raw material inventory falls below threshold, generates a purchase requisition in SAP, gets supplier quotes, and notifies the procurement team via Microsoft Teams."
tags:
- supply-chain
- procurement
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: raw-materials
port: 8080
tools:
- name: trigger-reorder
description: "Given a material and plant, check inventory and trigger reorder if below threshold."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: plant_code
in: body
type: string
description: "The plant code."
- name: reorder_quantity
in: body
type: string
description: "The quantity to reorder."
steps:
- name: check-stock
type: call
call: "sap.get-inventory"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
- name: create-requisition
type: call
call: "sap.create-requisition"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
quantity: "{{reorder_quantity}}"
- name: notify-procurement
type: call
call: "msteams.send-message"
with:
channel_id: "procurement"
text: "Reorder triggered for {{material_number}} at {{plant_code}}. Current stock: {{check-stock.AvailableStock}}. Requisition: {{create-requisition.req_number}} for {{reorder_quantity}} units."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory
path: "/MaterialStock(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-inventory
method: GET
- name: requisitions
path: "/A_PurchaseRequisition"
operations:
- name: create-requisition
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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams.
naftiko: "0.5"
info:
label: "Recipe Formulation Pipeline"
description: "Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams."
tags:
- food-science
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recipe-formulation-pipeline
port: 8080
tools:
- name: execute
description: "Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "sharepoint.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "microsoft-teams.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: "https://api.sharepoint.com/v1"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: "https://api.microsoftteams.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_teams_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When a field rep completes a store visit, logs the visit in Salesforce, uploads photos to SharePoint, captures competitive data in Google Sheets, and notifies the regional manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Retail Execution Pipeline"
description: "When a field rep completes a store visit, logs the visit in Salesforce, uploads photos to SharePoint, captures competitive data in Google Sheets, and notifies the regional manager via Microsoft Teams."
tags:
- retail
- field-sales
- salesforce
- sharepoint
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-execution
port: 8080
tools:
- name: log-store-visit
description: "Given visit details, log the store visit, upload photos, capture data, and notify management."
inputParameters:
- name: store_id
in: body
type: string
description: "The store identifier."
- name: rep_name
in: body
type: string
description: "The field rep name."
- name: visit_notes
in: body
type: string
description: "Notes from the store visit."
- name: manager_email
in: body
type: string
description: "The regional manager email."
steps:
- name: log-visit
type: call
call: "salesforce.create-visit"
with:
store_id: "{{store_id}}"
rep: "{{rep_name}}"
notes: "{{visit_notes}}"
- name: upload-photos
type: call
call: "sharepoint.upload-file"
with:
site_id: "retail-execution"
folder_path: "StoreVisits/{{store_id}}"
file_name: "visit_{{log-visit.visit_id}}.zip"
- name: update-tracker
type: call
call: "google-sheets.append-row"
with:
spreadsheet_id: "retail-visits-tracker"
values: "{{store_id}},{{rep_name}},{{log-visit.visit_date}},{{visit_notes}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{manager_email}}"
text: "Store visit logged: {{store_id}} by {{rep_name}}. Notes: {{visit_notes}}. Photos: {{upload-photos.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: visits
path: "/sobjects/StoreVisit__c"
operations:
- name: create-visit
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: google-sheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW"
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
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
Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack.
naftiko: "0.5"
info:
label: "Retail Promotion Execution Pipeline"
description: "Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack."
tags:
- promotions
- sap
- salesforce
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: retail-promotion-execution-pipeline
port: 8080
tools:
- name: execute
description: "Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "salesforce.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Extracts planogram compliance data from Circana, creates follow-up actions in Salesforce for field reps, and notifies the category management team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Retailer Planogram Compliance Pipeline"
description: "Extracts planogram compliance data from Circana, creates follow-up actions in Salesforce for field reps, and notifies the category management team via Microsoft Teams."
tags:
- retail
- planogram
- circana
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: planogram-compliance
port: 8080
tools:
- name: check-planogram-compliance
description: "Given a retailer and category, check planogram compliance and create follow-up actions."
inputParameters:
- name: retailer
in: body
type: string
description: "The retailer name."
- name: category
in: body
type: string
description: "The product category."
steps:
- name: get-compliance
type: call
call: "circana.get-planogram-data"
with:
retailer: "{{retailer}}"
category: "{{category}}"
- name: create-actions
type: call
call: "salesforce.create-task"
with:
subject: "Planogram compliance follow-up: {{retailer}} - {{category}}"
description: "Compliance rate: {{get-compliance.compliance_rate}}%. Non-compliant stores: {{get-compliance.nc_store_count}}."
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "category-management"
text: "Planogram compliance for {{category}} at {{retailer}}: {{get-compliance.compliance_rate}}%. {{get-compliance.nc_store_count}} stores need attention. Task: {{create-actions.task_id}}."
consumes:
- type: http
namespace: circana
baseUri: "https://api.circana.com/v1"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: planogram
path: "/planogram/compliance?retailer={{retailer}}&category={{category}}"
inputParameters:
- name: retailer
in: query
- name: category
in: query
operations:
- name: get-planogram-data
method: GET
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Salesforce broker account by ID for retail distribution.
naftiko: "0.5"
info:
label: "Salesforce Broker Account Lookup"
description: "Retrieves a Salesforce broker account by ID for retail distribution."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-brokers
port: 8080
tools:
- name: get-data
description: "Retrieves a Salesforce broker account by ID for retail distribution."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sf-brokers.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sf-brokers
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a sales opportunity from Salesforce by opportunity ID.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Lookup"
description: "Retrieves a sales opportunity from Salesforce by opportunity ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-opportunities
port: 8080
tools:
- name: get-opportunity
description: "Look up a Salesforce opportunity by ID."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID."
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
outputParameters:
- name: stage
type: string
mapping: "$.StageName"
- name: amount
type: string
mapping: "$.Amount"
consumes:
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
Retrieves a retail account from Salesforce by account name, returning account status, region, and primary contact.
naftiko: "0.5"
info:
label: "Salesforce Retail Account Lookup"
description: "Retrieves a retail account from Salesforce by account name, returning account status, region, and primary contact."
tags:
- sales
- retail
- salesforce
capability:
exposes:
- type: mcp
namespace: retail-accounts
port: 8080
tools:
- name: get-retail-account
description: "Look up a retail account in Salesforce by name."
inputParameters:
- name: account_name
in: body
type: string
description: "The retail account name."
call: "salesforce.get-account"
with:
account_name: "{{account_name}}"
outputParameters:
- name: status
type: string
mapping: "$.records[0].Status__c"
- name: region
type: string
mapping: "$.records[0].Region__c"
- name: primary_contact
type: string
mapping: "$.records[0].Primary_Contact__r.Name"
consumes:
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/query/?q=SELECT+Id,Status__c,Region__c,Primary_Contact__r.Name+FROM+Account+WHERE+Name='{{account_name}}'"
inputParameters:
- name: account_name
in: query
operations:
- name: get-account
method: GET
Retrieves a travel expense report from SAP Concur by report ID.
naftiko: "0.5"
info:
label: "SAP Concur Travel Expense Lookup"
description: "Retrieves a travel expense report from SAP Concur by report ID."
tags:
- finance
- travel
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-expenses
port: 8080
tools:
- name: get-expense-report
description: "Look up a SAP Concur expense report by report ID."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
call: "concur.get-report"
with:
report_id: "{{report_id}}"
outputParameters:
- name: total_amount
type: string
mapping: "$.Total"
- name: approval_status
type: string
mapping: "$.ApprovalStatusName"
- name: submit_date
type: string
mapping: "$.SubmitDate"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Retrieves material master data from SAP by material number.
naftiko: "0.5"
info:
label: "SAP Material Master Lookup"
description: "Retrieves material master data from SAP by material number."
tags:
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: material-master
port: 8080
tools:
- name: get-material
description: "Look up a material in SAP by material number."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
call: "sap.get-material"
with:
material: "{{material_number}}"
outputParameters:
- name: description
type: string
mapping: "$.d.MaterialDescription"
- name: unit
type: string
mapping: "$.d.BaseUnit"
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Material('{{material}}')"
inputParameters:
- name: material
in: path
operations:
- name: get-material
method: GET
Retrieves production batch details from SAP by batch ID.
naftiko: "0.5"
info:
label: "SAP Production Batch Lookup"
description: "Retrieves production batch details from SAP by batch ID."
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: sap-batches
port: 8080
tools:
- name: get-data
description: "Retrieves production batch details from SAP by batch ID."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sap-batches.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sap-batches
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/ZBATCH_SRV"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for procurement tracking.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status"
description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for procurement tracking."
tags:
- procurement
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
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://kellanova-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches.
naftiko: "0.5"
info:
label: "Security Vulnerability Pipeline"
description: "Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches."
tags:
- security
- dynatrace
- jira
- slack
- azure-devops
capability:
exposes:
- type: mcp
namespace: security-vulnerability-pipeline
port: 8080
tools:
- name: execute
description: "Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "dynatrace.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "jira.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "slack.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "azure-devops.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://api.dynatrace.com/v1"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: "https://api.jira.com/v1"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: azure-devops
baseUri: "https://api.azuredevops.com/v1"
authentication:
type: bearer
token: "$secrets.azure_devops_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates website, and reports via Google Sheets.
naftiko: "0.5"
info:
label: "SEO Content Optimization Pipeline"
description: "Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates website, and reports via Google Sheets."
tags:
- seo
- google-search-console
- snowflake
- google-sheets
capability:
exposes:
- type: mcp
namespace: seo-content-optimization-pipeline
port: 8080
tools:
- name: execute
description: "Pulls search data from Google Search Console, identifies opportunities in Snowflake, updates website, and reports via Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "google-search-console.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: google-search-console
baseUri: "https://api.googlesearchconsole.com/v1"
authentication:
type: bearer
token: "$secrets.google_search_console_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves a ServiceNow incident by number and returns priority, status, assigned group, and resolution notes.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns priority, status, assigned group, and resolution notes."
tags:
- it-operations
- servicenow
capability:
exposes:
- type: mcp
namespace: it-support
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: priority
type: string
mapping: "$.result.priority"
- name: state
type: string
mapping: "$.result.state"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://kellanova.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
Monitors product shelf life in SAP, alerts distribution teams via Slack, updates retailer notifications in Salesforce, and logs expiring inventory in Snowflake.
naftiko: "0.5"
info:
label: "Shelf Life Monitoring Pipeline"
description: "Monitors product shelf life in SAP, alerts distribution teams via Slack, updates retailer notifications in Salesforce, and logs expiring inventory in Snowflake."
tags:
- quality
- sap
- slack
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: shelf-life-monitoring
port: 8080
tools:
- name: execute
description: "Orchestrate shelf life monitoring across SAP, Slack, Salesforce, and Snowflake."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "slack.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "salesforce.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "snowflake.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Sends a message to a Slack supply chain operations channel.
naftiko: "0.5"
info:
label: "Slack Supply Chain Message Sender"
description: "Sends a message to a Slack supply chain operations channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: slack-supplychain
port: 8080
tools:
- name: get-data
description: "Sends a message to a Slack supply chain operations channel."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "slack-supplychain.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: slack-supplychain
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Queries aggregated sales data from Snowflake by product line and region.
naftiko: "0.5"
info:
label: "Snowflake Sales Analytics Query"
description: "Queries aggregated sales data from Snowflake by product line and region."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: get-data
description: "Queries aggregated sales data from Snowflake by product line and region."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "snowflake-sales.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-sales
baseUri: "https://kellanova.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Monitors brand mentions across Instagram and Facebook via Meta APIs, analyzes sentiment in Azure Databricks, and alerts the brand team via Microsoft Teams if negative sentiment spikes.
naftiko: "0.5"
info:
label: "Social Media Brand Monitoring Pipeline"
description: "Monitors brand mentions across Instagram and Facebook via Meta APIs, analyzes sentiment in Azure Databricks, and alerts the brand team via Microsoft Teams if negative sentiment spikes."
tags:
- marketing
- social-media
- instagram
- facebook
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-monitoring
port: 8080
tools:
- name: monitor-brand-sentiment
description: "Given a brand name and date range, check social mentions, analyze sentiment, and alert if negative."
inputParameters:
- name: brand_name
in: body
type: string
description: "The brand name to monitor."
- 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."
steps:
- name: get-instagram-mentions
type: call
call: "instagram.get-mentions"
with:
brand: "{{brand_name}}"
since: "{{start_date}}"
until: "{{end_date}}"
- name: get-facebook-mentions
type: call
call: "facebook.get-mentions"
with:
brand: "{{brand_name}}"
since: "{{start_date}}"
until: "{{end_date}}"
- name: analyze-sentiment
type: call
call: "databricks.run-query"
with:
query: "SELECT sentiment_score, negative_pct FROM brand_sentiment WHERE brand = '{{brand_name}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'"
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "brand-management"
text: "Brand sentiment report for {{brand_name}} ({{start_date}} to {{end_date}}): Sentiment score: {{analyze-sentiment.sentiment_score}}. Negative: {{analyze-sentiment.negative_pct}}%. Instagram mentions: {{get-instagram-mentions.count}}. Facebook mentions: {{get-facebook-mentions.count}}."
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.meta_token"
resources:
- name: mentions
path: "/{{ig_user_id}}/tags"
operations:
- name: get-mentions
method: GET
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.meta_token"
resources:
- name: mentions
path: "/{{page_id}}/tagged"
operations:
- name: get-mentions
method: GET
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets.
naftiko: "0.5"
info:
label: "Social Media Campaign Pipeline"
description: "Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets."
tags:
- social-media
- hubspot
- instagram
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-media-campaign-pipeline
port: 8080
tools:
- name: execute
description: "Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "hubspot.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "instagram.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "facebook.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubspot.com/v1"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: "https://api.instagram.com/v1"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: "https://api.facebook.com/v1"
authentication:
type: bearer
token: "$secrets.facebook_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: "https://api.googleanalytics.com/v1"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves a Stripe payment for Kellanova direct-to-consumer orders.
naftiko: "0.5"
info:
label: "Stripe E-Commerce Payment Lookup"
description: "Retrieves a Stripe payment for Kellanova direct-to-consumer orders."
tags:
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: stripe-payments
port: 8080
tools:
- name: get-data
description: "Retrieves a Stripe payment for Kellanova direct-to-consumer orders."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "stripe-payments.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: stripe-payments
baseUri: "https://api.stripe.com/v1"
authentication:
type: bearer
token: "$secrets.stripe_secret_key"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves supplier audit results from SAP, creates compliance findings in ServiceNow, shares documentation in SharePoint, and notifies the procurement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Compliance Audit Pipeline"
description: "Retrieves supplier audit results from SAP, creates compliance findings in ServiceNow, shares documentation in SharePoint, and notifies the procurement team via Microsoft Teams."
tags:
- supply-chain
- compliance
- sap
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-compliance
port: 8080
tools:
- name: process-supplier-audit
description: "Given a supplier ID, process audit results, create findings, and notify procurement."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The SAP supplier identifier."
- name: audit_date
in: body
type: string
description: "The audit date in YYYY-MM-DD format."
- name: audit_type
in: body
type: string
description: "The type of audit (food-safety, quality, environmental)."
steps:
- name: get-audit-results
type: call
call: "sap.get-supplier-audit"
with:
supplier_id: "{{supplier_id}}"
audit_date: "{{audit_date}}"
- name: create-findings
type: call
call: "servicenow.create-incident"
with:
short_description: "Supplier audit findings: {{get-audit-results.supplier_name}} ({{audit_type}})"
category: "supplier_compliance"
description: "Audit score: {{get-audit-results.score}}. Findings: {{get-audit-results.findings_count}} items."
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "supplier-compliance"
folder_path: "Audits/{{supplier_id}}/{{audit_date}}"
file_name: "audit_report_{{audit_type}}.pdf"
- name: notify-procurement
type: call
call: "msteams.send-message"
with:
channel_id: "procurement"
text: "Supplier audit complete: {{get-audit-results.supplier_name}} ({{audit_type}}). Score: {{get-audit-results.score}}. Findings: {{get-audit-results.findings_count}}. Report: {{upload-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/SUPPLIER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: audits
path: "/SupplierAudits(SupplierId='{{supplier_id}}',AuditDate='{{audit_date}}')"
inputParameters:
- name: supplier_id
in: path
- name: audit_date
in: path
operations:
- name: get-supplier-audit
method: GET
- type: http
namespace: servicenow
baseUri: "https://kellanova.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: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: 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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Supplier Onboarding Pipeline"
description: "Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook."
tags:
- procurement
- sap
- docusign
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: supplier-onboarding-pipeline
port: 8080
tools:
- name: execute
description: "Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "docusign.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "box.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "microsoft-outlook.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: "https://api.docusign.com/v1"
authentication:
type: bearer
token: "$secrets.docusign_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/v1"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: "https://api.microsoftoutlook.com/v1"
authentication:
type: bearer
token: "$secrets.microsoft_outlook_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack.
naftiko: "0.5"
info:
label: "Supply Chain Visibility Pipeline"
description: "Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack."
tags:
- logistics
- sap
- snowflake
- tableau
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain-visibility-pipeline
port: 8080
tools:
- name: execute
description: "Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "snowflake.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "tableau.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: tableau
baseUri: "https://api.tableau.com/v1"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Extracts sustainability metrics from SAP, calculates carbon footprint in Azure Databricks, stores the report in SharePoint, and notifies the ESG team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Sustainability Reporting Pipeline"
description: "Extracts sustainability metrics from SAP, calculates carbon footprint in Azure Databricks, stores the report in SharePoint, and notifies the ESG team via Microsoft Teams."
tags:
- sustainability
- esg
- sap
- azure-databricks
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-sustainability-report
description: "Given a reporting period, extract sustainability data, calculate metrics, and distribute the report."
inputParameters:
- name: reporting_period
in: body
type: string
description: "The reporting period (e.g., 2025-Q4)."
- name: scope
in: body
type: string
description: "The reporting scope (scope-1, scope-2, scope-3)."
steps:
- name: extract-data
type: call
call: "sap.get-sustainability-data"
with:
period: "{{reporting_period}}"
scope: "{{scope}}"
- name: calculate-footprint
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM carbon_footprint_calc('{{reporting_period}}', '{{scope}}')"
- name: store-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "esg-reports"
folder_path: "Sustainability/{{reporting_period}}"
file_name: "sustainability_{{scope}}_{{reporting_period}}.pdf"
- name: notify-esg
type: call
call: "msteams.send-message"
with:
channel_id: "esg-team"
text: "Sustainability report for {{reporting_period}} ({{scope}}): Total emissions: {{calculate-footprint.total_emissions}} tCO2e. Report: {{store-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/SUSTAINABILITY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sustainability
path: "/SustainabilityData?$filter=Period eq '{{period}}' and Scope eq '{{scope}}'"
inputParameters:
- name: period
in: query
- name: scope
in: query
operations:
- name: get-sustainability-data
method: GET
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: 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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Tableau dashboard embed URL for retail sales analytics.
naftiko: "0.5"
info:
label: "Tableau Retail Analytics Dashboard"
description: "Retrieves a Tableau dashboard embed URL for retail sales analytics."
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: retail-analytics
port: 8080
tools:
- name: get-retail-dashboard
description: "Retrieve the embed URL for a Tableau retail analytics dashboard."
inputParameters:
- name: workbook_name
in: body
type: string
description: "The Tableau workbook name."
call: "tableau.get-workbook"
with:
workbook_name: "{{workbook_name}}"
outputParameters:
- name: embed_url
type: string
mapping: "$.workbook.contentUrl"
- name: updated_at
type: string
mapping: "$.workbook.updatedAt"
consumes:
- type: http
namespace: tableau
baseUri: "https://kellanova-tableau.online/api/3.14"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/{{site_id}}/workbooks?filter=name:eq:{{workbook_name}}"
inputParameters:
- name: workbook_name
in: query
operations:
- name: get-workbook
method: GET
Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack.
naftiko: "0.5"
info:
label: "Talent Acquisition Pipeline"
description: "Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack."
tags:
- recruiting
- linkedin
- workday
- zoom
- slack
capability:
exposes:
- type: mcp
namespace: talent-acquisition-pipeline
port: 8080
tools:
- name: execute
description: "Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "linkedin.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "workday.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "zoom.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v1"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: workday
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: zoom
baseUri: "https://api.zoom.com/v1"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Queries consumer purchase insights from Teradata data warehouse.
naftiko: "0.5"
info:
label: "Teradata Consumer Insights Query"
description: "Queries consumer purchase insights from Teradata data warehouse."
tags:
- analytics
- teradata
capability:
exposes:
- type: mcp
namespace: teradata-insights
port: 8080
tools:
- name: get-data
description: "Queries consumer purchase insights from Teradata data warehouse."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "teradata-insights.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: teradata-insights
baseUri: "https://kellanova.teradata.com/api/v1"
authentication:
type: bearer
token: "$secrets.teradata_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Pulls promotion execution data from SAP, enriches with Circana retail data, analyzes ROI in Azure Databricks, and shares results with the trade team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Trade Promotion Effectiveness Pipeline"
description: "Pulls promotion execution data from SAP, enriches with Circana retail data, analyzes ROI in Azure Databricks, and shares results with the trade team via Microsoft Teams."
tags:
- marketing
- trade-promotion
- sap
- circana
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-promotion
port: 8080
tools:
- name: analyze-promotion-roi
description: "Given a promotion ID, pull execution and retail data, analyze ROI, and share results."
inputParameters:
- name: promotion_id
in: body
type: string
description: "The trade promotion identifier."
- name: retailer
in: body
type: string
description: "The retailer name."
steps:
- name: get-promo-data
type: call
call: "sap.get-promotion"
with:
promotion_id: "{{promotion_id}}"
- name: get-retail-data
type: call
call: "circana.get-promo-performance"
with:
promotion_id: "{{promotion_id}}"
retailer: "{{retailer}}"
- name: calculate-roi
type: call
call: "databricks.run-query"
with:
query: "SELECT promotion_roi('{{promotion_id}}', '{{retailer}}') as roi"
- name: share-results
type: call
call: "msteams.send-message"
with:
channel_id: "trade-marketing"
text: "Promotion {{promotion_id}} at {{retailer}}: Spend: {{get-promo-data.spend}}. Incremental sales: {{get-retail-data.incremental_sales}}. ROI: {{calculate-roi.roi}}%."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/TPM_PROMOTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: promotions
path: "/Promotions('{{promotion_id}}')"
inputParameters:
- name: promotion_id
in: path
operations:
- name: get-promotion
method: GET
- type: http
namespace: circana
baseUri: "https://api.circana.com/v1"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: promo-performance
path: "/promotions/{{promotion_id}}/performance?retailer={{retailer}}"
inputParameters:
- name: promotion_id
in: path
- name: retailer
in: query
operations:
- name: get-promo-performance
method: GET
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
naftiko: "0.5"
info:
label: "Training Compliance Pipeline"
description: "Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack."
tags:
- training
- pluralsight
- workday
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: training-compliance-pipeline
port: 8080
tools:
- name: execute
description: "Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "pluralsight.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "workday.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: workday
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
When a shipment is ready, creates a transport order in SAP, updates the delivery status in Salesforce, and notifies the logistics team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Transportation Logistics Orchestrator"
description: "When a shipment is ready, creates a transport order in SAP, updates the delivery status in Salesforce, and notifies the logistics team via Microsoft Teams."
tags:
- distribution
- logistics
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: process-shipment
description: "Given shipment details, create transport order, update delivery tracking, and notify logistics."
inputParameters:
- name: delivery_number
in: body
type: string
description: "The SAP delivery number."
- name: destination
in: body
type: string
description: "The delivery destination."
- name: carrier
in: body
type: string
description: "The carrier name."
steps:
- name: create-transport
type: call
call: "sap.create-transport-order"
with:
delivery_number: "{{delivery_number}}"
destination: "{{destination}}"
carrier: "{{carrier}}"
- name: update-salesforce
type: call
call: "salesforce.update-delivery"
with:
delivery_number: "{{delivery_number}}"
transport_id: "{{create-transport.transport_id}}"
status: "in_transit"
- name: notify-logistics
type: call
call: "msteams.send-message"
with:
channel_id: "logistics"
text: "Shipment {{delivery_number}} dispatched via {{carrier}} to {{destination}}. Transport order: {{create-transport.transport_id}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/TM_TRANSPORT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: transport-orders
path: "/TransportOrders"
operations:
- name: create-transport-order
method: POST
- type: http
namespace: salesforce
baseUri: "https://kellanova.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: deliveries
path: "/sobjects/Delivery__c/{{delivery_number}}"
inputParameters:
- name: delivery_number
in: path
operations:
- name: update-delivery
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a vendor invoice arrives, validates against the SAP purchase order, routes for approval in Workday, and notifies accounts payable via Microsoft Teams.
naftiko: "0.5"
info:
label: "Vendor Invoice Processing Pipeline"
description: "When a vendor invoice arrives, validates against the SAP purchase order, routes for approval in Workday, and notifies accounts payable via Microsoft Teams."
tags:
- finance
- accounts-payable
- sap
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: invoice-processing
port: 8080
tools:
- name: process-invoice
description: "Given an invoice and PO number, validate, route for approval, and notify AP."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The vendor invoice number."
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
- name: amount
in: body
type: string
description: "The invoice amount."
- name: approver_id
in: body
type: string
description: "The Workday approver employee ID."
steps:
- name: validate-po
type: call
call: "sap.get-po"
with:
po_number: "{{po_number}}"
- name: route-approval
type: call
call: "workday.submit-approval"
with:
approver_id: "{{approver_id}}"
amount: "{{amount}}"
description: "Invoice {{invoice_number}} for PO {{po_number}}"
- name: notify-ap
type: call
call: "msteams.send-message"
with:
channel_id: "accounts-payable"
text: "Invoice {{invoice_number}} processed for PO {{po_number}}. Amount: ${{amount}}. Vendor: {{validate-po.Supplier.CompanyName}}. Approval routed to {{approver_id}}."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: approvals
path: "/approvals"
operations:
- name: submit-approval
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: channel_id
in: path
operations:
- name: send-message
method: POST
Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets.
naftiko: "0.5"
info:
label: "Vendor Invoice Reconciliation Pipeline"
description: "Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets."
tags:
- finance
- sap
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: vendor-invoice-reconciliation-pipeline
port: 8080
tools:
- name: execute
description: "Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "salesforce.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "google-sheets.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-sheets.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: "https://api.salesforce.com/v1"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: "https://api.googlesheets.com/v1"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Analyzes warehouse utilization data from SAP, runs optimization in Azure Databricks, updates slot assignments in SAP, and notifies the warehouse team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Warehouse Slot Optimization Pipeline"
description: "Analyzes warehouse utilization data from SAP, runs optimization in Azure Databricks, updates slot assignments in SAP, and notifies the warehouse team via Microsoft Teams."
tags:
- distribution
- warehouse
- sap
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-optimization
port: 8080
tools:
- name: optimize-warehouse-slots
description: "Given a warehouse code, analyze utilization, run optimization, and update slot assignments."
inputParameters:
- name: warehouse_code
in: body
type: string
description: "The SAP warehouse code."
steps:
- name: get-utilization
type: call
call: "sap.get-warehouse-data"
with:
warehouse: "{{warehouse_code}}"
- name: run-optimization
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM warehouse_optimization('{{warehouse_code}}')"
- name: update-slots
type: call
call: "sap.update-slot-assignments"
with:
warehouse: "{{warehouse_code}}"
assignments: "{{run-optimization.results}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "warehouse-ops"
text: "Slot optimization complete for warehouse {{warehouse_code}}. {{run-optimization.moves_count}} moves recommended. Utilization improved from {{get-utilization.current_pct}}% to {{run-optimization.projected_pct}}%."
consumes:
- type: http
namespace: sap
baseUri: "https://kellanova-s4.sap.com/sap/opu/odata/sap/WM_WAREHOUSE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: warehouse
path: "/WarehouseData('{{warehouse}}')"
inputParameters:
- name: warehouse
in: path
operations:
- name: get-warehouse-data
method: GET
- name: slots
path: "/SlotAssignments"
operations:
- name: update-slot-assignments
method: POST
- type: http
namespace: databricks
baseUri: "https://kellanova-analytics.azuredatabricks.net/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: sql-queries
path: "/sql/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.
naftiko: "0.5"
info:
label: "Weekly Sales Digest Pipeline"
description: "Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack."
tags:
- sales
- snowflake
- power-bi
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: weekly-sales-digest-pipeline
port: 8080
tools:
- name: execute
description: "Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
- name: context
in: body
type: string
description: "Additional context parameter."
steps:
- name: step-1
type: call
call: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "power-bi.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "confluence.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://api.snowflake.com/v1"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: "https://api.confluence.com/v1"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Retrieves employee benefits enrollment from Workday.
naftiko: "0.5"
info:
label: "Workday Benefits Enrollment Lookup"
description: "Retrieves employee benefits enrollment from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: workday-benefits
port: 8080
tools:
- name: get-data
description: "Retrieves employee benefits enrollment from Workday."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "workday-benefits.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: workday-benefits
baseUri: "https://wd5-impl-services1.workday.com/ccx/service/kellanova"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Looks up an employee in Workday by employee ID and returns name, department, title, and contact information.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Looks up an employee in Workday by employee ID and returns name, department, title, and contact information."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee
description: "Look up an employee by Workday worker ID."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.descriptor"
- name: department
type: string
mapping: "$.worker.primarySupervisoryOrganization.descriptor"
- name: title
type: string
mapping: "$.worker.businessTitle"
- name: email
type: string
mapping: "$.worker.primaryWorkEmail"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Retrieves a Zendesk consumer support ticket by ID.
naftiko: "0.5"
info:
label: "Zendesk Consumer Support Ticket Lookup"
description: "Retrieves a Zendesk consumer support ticket by ID."
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: consumer-support
port: 8080
tools:
- name: get-support-ticket
description: "Look up a Zendesk support ticket by ticket ID."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
outputParameters:
- name: subject
type: string
mapping: "$.ticket.subject"
- name: status
type: string
mapping: "$.ticket.status"
- name: priority
type: string
mapping: "$.ticket.priority"
consumes:
- type: http
namespace: zendesk
baseUri: "https://kellanova.zendesk.com/api/v2"
authentication:
type: basic
username: "$secrets.zendesk_user"
password: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET