Lego Capabilities
Naftiko 0.5 capability definitions for Lego - 100 capabilities showing integration workflows and service orchestrations.
Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets.
naftiko: "0.5"
info:
label: "Adult Fan Community Newsletter Pipeline"
description: "Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets."
tags:
- community
- snowflake
- mailchimp
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: afol-newsletter
port: 8080
tools:
- name: execute
description: "Orchestrate adult fan community newsletter across Snowflake, MailChimp, Google Analytics, and Google Sheets."
inputParameters:
- name: input_id
in: body
type: string
description: "The newsletter edition ID."
- name: context
in: body
type: string
description: "Additional context."
steps:
- name: step-1
type: call
call: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "mailchimp.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: 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: 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-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 LEGO set roadmap entries from Airtable.
naftiko: "0.5"
info:
label: "Airtable Set Roadmap Lookup"
description: "Retrieves LEGO set roadmap entries from Airtable."
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-roadmap
port: 8080
tools:
- name: get-data
description: "Retrieves LEGO set roadmap entries from Airtable."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "airtable-roadmap.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: airtable-roadmap
baseUri: "https://api.airtable.com/v0/appLego"
authentication:
type: bearer
token: "$secrets.airtable_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves spend from SAP, builds forecasts in Snowflake, creates Google Sheets templates, and submits via Microsoft Teams.
naftiko: "0.5"
info:
label: "Annual Budget Planning Pipeline"
description: "Retrieves spend from SAP, builds forecasts in Snowflake, creates Google Sheets templates, 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 Google Sheets templates, 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 design project status from Asana.
naftiko: "0.5"
info:
label: "Asana Design Project Lookup"
description: "Retrieves design project status from Asana."
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-design
port: 8080
tools:
- name: get-data
description: "Retrieves design project status from Asana."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "asana-design.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: asana-design
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/lego"
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
Updates a product listing on BigCommerce with new pricing, description, or availability.
naftiko: "0.5"
info:
label: "BigCommerce Product Listing Update"
description: "Updates a product listing on BigCommerce with new pricing, description, or availability."
tags:
- e-commerce
- bigcommerce
capability:
exposes:
- type: mcp
namespace: ecommerce-management
port: 8080
tools:
- name: update-product-listing
description: "Update a BigCommerce product listing."
inputParameters:
- name: product_id
in: body
type: string
description: "The BigCommerce product ID."
- name: price
in: body
type: string
description: "The new price."
- name: availability
in: body
type: string
description: "The availability status."
call: "bigcommerce.update-product"
with:
product_id: "{{product_id}}"
price: "{{price}}"
availability: "{{availability}}"
consumes:
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v3"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: products
path: "/catalog/products/{{product_id}}"
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PUT
Archives a legal document to Box in the licensing compliance folder.
naftiko: "0.5"
info:
label: "Box Legal Document Archive"
description: "Archives a legal document to Box in the licensing compliance folder."
tags:
- licensing
- legal
- box
capability:
exposes:
- type: mcp
namespace: legal-archive
port: 8080
tools:
- name: archive-document
description: "Upload a legal document to Box."
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
Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, and tracks in Airtable.
naftiko: "0.5"
info:
label: "Brand Style Guide Pipeline"
description: "Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, and tracks in Airtable."
tags:
- brand
- sharepoint
- box
- microsoft-outlook
- airtable
capability:
exposes:
- type: mcp
namespace: brand-style-guide-pipeline
port: 8080
tools:
- name: execute
description: "Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, 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: "sharepoint.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "box.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: "airtable.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: 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
- 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
Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
naftiko: "0.5"
info:
label: "Brick Quality Control Pipeline"
description: "Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack."
tags:
- quality
- sap
- confluence
- airtable
- slack
capability:
exposes:
- type: mcp
namespace: brick-quality-control-pipeline
port: 8080
tools:
- name: execute
description: "Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies 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: "confluence.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: "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: 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: 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: slack
baseUri: "https://api.slack.com/v1"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
naftiko: "0.5"
info:
label: "Building Instruction Publishing Pipeline"
description: "Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack."
tags:
- content
- amazon-s3
- bigcommerce
- slack
capability:
exposes:
- type: mcp
namespace: building-instruction-publishing-pipeline
port: 8080
tools:
- name: execute
description: "Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies 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: "amazon-s3.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "bigcommerce.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: "slack.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: amazon-s3
baseUri: "https://api.amazons3.com/v1"
authentication:
type: bearer
token: "$secrets.amazon_s3_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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
Analyzes market data in Snowflake, generates Confluence insights, and shares via Microsoft Teams.
naftiko: "0.5"
info:
label: "Competitive Intelligence Pipeline"
description: "Analyzes market data in Snowflake, generates Confluence insights, and shares via Microsoft Teams."
tags:
- intelligence
- snowflake
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: competitive-intelligence-pipeline
port: 8080
tools:
- name: execute
description: "Analyzes market data in Snowflake, generates Confluence insights, 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: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "confluence.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: 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 internal knowledge base articles and product documentation.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Search"
description: "Searches Confluence for internal knowledge base articles and product documentation."
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-knowledge-base
description: "Search Confluence for 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://lego.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
Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Consumer Feedback Pipeline"
description: "Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams."
tags:
- product-design
- customer-feedback
- zendesk
- azure-databricks
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer-feedback
port: 8080
tools:
- name: analyze-feedback
description: "Given a product theme and date range, analyze consumer feedback and create improvement tasks."
inputParameters:
- name: theme
in: body
type: string
description: "The LEGO theme to analyze."
- name: start_date
in: body
type: string
description: "Start date."
- name: end_date
in: body
type: string
description: "End date."
steps:
- name: get-tickets
type: call
call: "zendesk.search-tickets"
with:
query: "type:ticket tags:{{theme}} created>{{start_date}} created<{{end_date}}"
- name: analyze-sentiment
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM feedback_sentiment WHERE theme = '{{theme}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'"
- name: create-improvement-task
type: call
call: "jira.create-issue"
with:
project: "DESIGN"
summary: "Consumer feedback insights: {{theme}} ({{start_date}} to {{end_date}})"
description: "Sentiment score: {{analyze-sentiment.avg_score}}. Top themes: {{analyze-sentiment.top_themes}}. Ticket count: {{get-tickets.count}}."
- name: notify-design
type: call
call: "msteams.send-message"
with:
channel_id: "product-design"
text: "Consumer feedback for {{theme}}: Avg sentiment: {{analyze-sentiment.avg_score}}. {{get-tickets.count}} tickets analyzed. Improvement task: {{create-improvement-task.key}}."
consumes:
- type: http
namespace: zendesk
baseUri: "https://lego.zendesk.com/api/v2"
authentication:
type: basic
username: "$secrets.zendesk_user"
password: "$secrets.zendesk_token"
resources:
- name: search
path: "/search.json?query={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-tickets
method: GET
- type: http
namespace: databricks
baseUri: "https://lego-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: jira
baseUri: "https://lego.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
Retrieves from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "Content Localization Pipeline"
description: "Retrieves 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 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 Salesforce, creates Jira tasks, sends Outlook reminders, and logs in Google Sheets.
naftiko: "0.5"
info:
label: "Contract Renewal Pipeline"
description: "Queries Salesforce, creates Jira tasks, sends Outlook reminders, 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 Salesforce, creates Jira tasks, sends Outlook reminders, 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 in Snowflake, generates via Azure ML, syncs to BigCommerce, and emails via MailChimp.
naftiko: "0.5"
info:
label: "Cross-Sell Recommendation Pipeline"
description: "Analyzes in Snowflake, generates via Azure ML, syncs to BigCommerce, and emails via MailChimp."
tags:
- e-commerce
- snowflake
- azure-machine-learning
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: cross-sell-recommendation-pipeline
port: 8080
tools:
- name: execute
description: "Analyzes in Snowflake, generates via Azure ML, syncs to BigCommerce, 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: "bigcommerce.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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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 from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
naftiko: "0.5"
info:
label: "Customer Feedback Pipeline"
description: "Collects 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-pipeline
port: 8080
tools:
- name: execute
description: "Collects 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 in Salesforce, creates Stripe record, triggers MailChimp welcome, and logs in Snowflake.
naftiko: "0.5"
info:
label: "Customer Loyalty Enrollment Pipeline"
description: "Enrolls in Salesforce, creates Stripe record, triggers MailChimp welcome, and logs in Snowflake."
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-loyalty-enrollment-pipeline
port: 8080
tools:
- name: execute
description: "Enrolls in Salesforce, creates Stripe record, 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
Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, and logs in Snowflake.
naftiko: "0.5"
info:
label: "Customer Returns Pipeline"
description: "Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, and logs in Snowflake."
tags:
- returns
- zendesk
- stripe
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-returns-pipeline
port: 8080
tools:
- name: execute
description: "Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, 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: "stripe.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "sap.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: 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: 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
Audits Snowflake, generates Google Sheets reports, archives in SharePoint, and notifies via Slack.
naftiko: "0.5"
info:
label: "Data Privacy Compliance Pipeline"
description: "Audits Snowflake, generates Google Sheets reports, archives in SharePoint, and notifies 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 Snowflake, generates Google Sheets reports, archives in SharePoint, and notifies 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 historical sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies supply chain via Microsoft Teams.
naftiko: "0.5"
info:
label: "Demand Forecasting Pipeline"
description: "Pulls historical sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies supply chain 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 theme and time horizon, generate demand forecasts and update plans."
inputParameters:
- name: theme
in: body
type: string
description: "The LEGO theme."
- name: forecast_horizon_weeks
in: body
type: string
description: "The forecast horizon in weeks."
- name: region
in: body
type: string
description: "The geographic region."
steps:
- name: extract-sales
type: call
call: "sapbw.get-sales-data"
with:
theme: "{{theme}}"
region: "{{region}}"
- name: run-forecast
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM demand_forecast('{{theme}}', '{{region}}', {{forecast_horizon_weeks}})"
- name: update-plans
type: call
call: "sap.update-inventory-plan"
with:
theme: "{{theme}}"
region: "{{region}}"
forecast: "{{run-forecast.results}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "supply-chain"
text: "Demand forecast updated for {{theme}} in {{region}}. Projected demand: {{run-forecast.total_units}} units over {{forecast_horizon_weeks}} weeks."
consumes:
- type: http
namespace: sapbw
baseUri: "https://lego-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=Theme eq '{{theme}}' and Region eq '{{region}}'"
inputParameters:
- name: theme
in: query
- name: region
in: query
operations:
- name: get-sales-data
method: GET
- type: http
namespace: databricks
baseUri: "https://lego-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://lego-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
Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
naftiko: "0.5"
info:
label: "Digital Experience Release Pipeline"
description: "Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce."
tags:
- digital
- azure-devops
- confluence
- slack
- bigcommerce
capability:
exposes:
- type: mcp
namespace: digital-experience-release-pipeline
port: 8080
tools:
- name: execute
description: "Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce."
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: "azure-devops.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "confluence.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: "bigcommerce.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- 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
- 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
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
naftiko: "0.5"
info:
label: "Digital Marketing Pipeline"
description: "Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets."
tags:
- marketing
- hubspot
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: digital-marketing-pipeline
port: 8080
tools:
- name: execute
description: "Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports 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: "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.
naftiko: "0.5"
info:
label: "Distribution Center Inventory Lookup"
description: "Retrieves current inventory levels at a distribution center from SAP."
tags:
- manufacturing
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-dc-inventory
description: "Look up inventory 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 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"
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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 DocuSign licensing agreement envelope status.
naftiko: "0.5"
info:
label: "DocuSign Licensing Agreement Lookup"
description: "Retrieves DocuSign licensing agreement envelope status."
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-licenses
port: 8080
tools:
- name: get-data
description: "Retrieves DocuSign licensing agreement envelope status."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "docusign-licenses.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: docusign-licenses
baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/lego"
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://lego.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 LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp.
naftiko: "0.5"
info:
label: "E-Commerce Fulfillment Pipeline"
description: "When a LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp."
tags:
- e-commerce
- fulfillment
- sap
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: "Given an order, create delivery, update status, and send 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."
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}}"
- name: update-status
type: call
call: "bigcommerce.update-order"
with:
order_id: "{{order_id}}"
status: "shipped"
tracking: "{{create-delivery.tracking_number}}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template: "shipping-confirmation"
recipient: "{{customer_email}}"
tracking: "{{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
method: PUT
- type: http
namespace: sap
baseUri: "https://lego-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
Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details.
naftiko: "0.5"
info:
label: "E-Commerce Order Status Lookup"
description: "Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details."
tags:
- e-commerce
- salesforce
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order-status
description: "Look up a LEGO.com order by order ID."
inputParameters:
- name: order_id
in: body
type: string
description: "The order ID."
call: "salesforce.get-order"
with:
order_id: "{{order_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: total
type: string
mapping: "$.TotalAmount"
- name: shipping_status
type: string
mapping: "$.ShippingStatus__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://lego.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: orders
path: "/sobjects/Order/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
naftiko: "0.5"
info:
label: "E-Commerce Cart Recovery Pipeline"
description: "Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics."
tags:
- e-commerce
- bigcommerce
- mailchimp
- snowflake
- google-analytics
capability:
exposes:
- type: mcp
namespace: ecommerce-cart-recovery-pipeline
port: 8080
tools:
- name: execute
description: "Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics."
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: "bigcommerce.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "mailchimp.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: "google-analytics.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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
- 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
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."
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"
- 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 LEGO, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}."
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://lego.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
Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
naftiko: "0.5"
info:
label: "Facebook Ad Campaign Pipeline"
description: "Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets."
tags:
- advertising
- facebook
- salesforce
- box
- google-sheets
capability:
exposes:
- type: mcp
namespace: facebook-ad-campaign-pipeline
port: 8080
tools:
- name: execute
description: "Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, 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: "facebook.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: "box.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: 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: 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: 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: 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
Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
naftiko: "0.5"
info:
label: "Fan Community Engagement Pipeline"
description: "Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram."
tags:
- community
- zendesk
- azure-machine-learning
- confluence
- instagram
capability:
exposes:
- type: mcp
namespace: fan-community-engagement-pipeline
port: 8080
tools:
- name: execute
description: "Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram."
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: "confluence.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: 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: 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: instagram
baseUri: "https://api.instagram.com/v1"
authentication:
type: bearer
token: "$secrets.instagram_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 Set Packaging 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 close, generates Power BI reports, archives in Box, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "Financial Close Pipeline"
description: "Triggers SAP close, generates Power BI reports, archives in Box, and notifies 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 close, generates Power BI reports, archives in Box, 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: "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
Updates pricing in SAP, syncs to BigCommerce, 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 BigCommerce, logs in Snowflake, and notifies sales via Microsoft Teams."
tags:
- pricing
- sap
- bigcommerce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: global-pricing-update-pipeline
port: 8080
tools:
- name: execute
description: "Updates pricing in SAP, syncs to BigCommerce, 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: "bigcommerce.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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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
Retrieves LEGO.com website engagement metrics from Google Analytics.
naftiko: "0.5"
info:
label: "Google Analytics Website Metrics"
description: "Retrieves LEGO.com website engagement metrics from Google Analytics."
tags:
- analytics
- e-commerce
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-website-metrics
description: "Retrieve website metrics from Google Analytics for a date range."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "google-analytics.get-report"
with:
property_id: "lego-dotcom"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: sessions
type: string
mapping: "$.rows[0].metricValues[0].value"
- name: conversion_rate
type: string
mapping: "$.rows[0].metricValues[1].value"
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
Searches Google Drive for product design assets and creative files.
naftiko: "0.5"
info:
label: "Google Drive Design Asset Search"
description: "Searches Google Drive for product design assets and creative files."
tags:
- product-design
- google-drive
capability:
exposes:
- type: mcp
namespace: design-assets
port: 8080
tools:
- name: search-design-assets
description: "Search Google Drive for design 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
Retrieves search performance for LEGO web properties.
naftiko: "0.5"
info:
label: "Google Search Console SEO Lookup"
description: "Retrieves search performance for LEGO web properties."
tags:
- seo
- google-search-console
capability:
exposes:
- type: mcp
namespace: gsc-seo
port: 8080
tools:
- name: get-data
description: "Retrieves search performance for LEGO web 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 a HubSpot contact by email for LEGO marketing.
naftiko: "0.5"
info:
label: "HubSpot Contact Lookup"
description: "Retrieves a HubSpot contact by email for LEGO marketing."
tags:
- marketing
- hubspot
capability:
exposes:
- type: mcp
namespace: hubspot-contacts
port: 8080
tools:
- name: get-data
description: "Retrieves a HubSpot contact by email for LEGO marketing."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "hubspot-contacts.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: hubspot-contacts
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors Instagram.
naftiko: "0.5"
info:
label: "Influencer Collaboration Pipeline"
description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors Instagram."
tags:
- marketing
- hubspot
- docusign
- asana
- instagram
capability:
exposes:
- type: mcp
namespace: influencer-collaboration-pipeline
port: 8080
tools:
- name: execute
description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors Instagram."
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
Retrieves engagement metrics for LEGO Instagram posts.
naftiko: "0.5"
info:
label: "Instagram Brand Metrics Lookup"
description: "Retrieves engagement metrics for LEGO Instagram posts."
tags:
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: instagram-brand
port: 8080
tools:
- name: get-data
description: "Retrieves engagement metrics for LEGO 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 design project.
naftiko: "0.5"
info:
label: "Jira Design Task Lookup"
description: "Retrieves a Jira issue by key from the product design project."
tags:
- product-design
- jira
capability:
exposes:
- type: mcp
namespace: design-tasks
port: 8080
tools:
- name: get-jira-issue
description: "Look up a Jira issue by key."
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://lego.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Licensing Agreement Approval Pipeline"
description: "When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams."
tags:
- licensing
- legal
- salesforce
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-agreements
port: 8080
tools:
- name: process-licensing-agreement
description: "Given a licensing agreement ID, validate terms, create legal review, and notify the team."
inputParameters:
- name: agreement_id
in: body
type: string
description: "The Salesforce licensing agreement ID."
- name: partner_name
in: body
type: string
description: "The licensing partner name."
steps:
- name: get-agreement
type: call
call: "salesforce.get-agreement"
with:
agreement_id: "{{agreement_id}}"
- name: create-review
type: call
call: "servicenow.create-case"
with:
short_description: "Legal review: Licensing agreement with {{partner_name}}"
category: "legal_review"
description: "Agreement ID: {{agreement_id}}. Partner: {{partner_name}}. Terms: {{get-agreement.terms_summary}}."
- name: store-contract
type: call
call: "sharepoint.upload-file"
with:
site_id: "legal-docs"
folder_path: "LicensingAgreements/{{partner_name}}"
file_name: "agreement_{{agreement_id}}.pdf"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "licensing"
text: "Licensing agreement {{agreement_id}} with {{partner_name}} submitted for review. Legal case: {{create-review.number}}. Contract stored: {{store-contract.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://lego.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: agreements
path: "/sobjects/LicensingAgreement__c/{{agreement_id}}"
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-agreement
method: GET
- type: http
namespace: servicenow
baseUri: "https://lego.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: 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 partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Licensing Partner Onboarding Pipeline"
description: "Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook."
tags:
- licensing
- salesforce
- docusign
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: licensing-partner-onboarding-pipeline
port: 8080
tools:
- name: execute
description: "Creates partner in Salesforce, 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: "salesforce.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: 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: 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
Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Licensing Partner Revenue Pipeline"
description: "Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams."
tags:
- licensing
- revenue
- sap
- salesforce
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-revenue
port: 8080
tools:
- name: generate-licensing-report
description: "Given a partner and period, generate a licensing revenue report."
inputParameters:
- name: partner_id
in: body
type: string
description: "The licensing partner ID."
- name: period
in: body
type: string
description: "The reporting period."
steps:
- name: get-revenue
type: call
call: "sap.get-licensing-revenue"
with:
partner_id: "{{partner_id}}"
period: "{{period}}"
- name: get-partner-data
type: call
call: "salesforce.get-partner-account"
with:
partner_id: "{{partner_id}}"
- name: create-report
type: call
call: "google-sheets.create-spreadsheet"
with:
title: "Licensing Revenue - {{get-partner-data.partner_name}} - {{period}}"
data: "{{get-revenue.results}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "licensing"
text: "Licensing revenue report for {{get-partner-data.partner_name}} ({{period}}): Total royalties: ${{get-revenue.total_royalties}}. Report: {{create-report.spreadsheet_url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/FI_REVENUE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: licensing-revenue
path: "/LicensingRevenue?$filter=PartnerId eq '{{partner_id}}' and Period eq '{{period}}'"
inputParameters:
- name: partner_id
in: query
- name: period
in: query
operations:
- name: get-licensing-revenue
method: GET
- type: http
namespace: salesforce
baseUri: "https://lego.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: partners
path: "/sobjects/Account/{{partner_id}}"
inputParameters:
- name: partner_id
in: path
operations:
- name: get-partner-account
method: GET
- type: http
namespace: google-sheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets"
operations:
- name: create-spreadsheet
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 a corporate content post on LinkedIn and logs it in Salesforce.
naftiko: "0.5"
info:
label: "LinkedIn Corporate Content Post"
description: "Creates a corporate content post on LinkedIn and logs it in Salesforce."
tags:
- marketing
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: corporate-social
port: 8080
tools:
- name: post-corporate-content
description: "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 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}}"
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://lego.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 VIP insider newsletter via MailChimp to LEGO fans.
naftiko: "0.5"
info:
label: "MailChimp VIP Newsletter Campaign"
description: "Creates and sends a VIP insider newsletter via MailChimp to LEGO fans."
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: send-vip-newsletter
description: "Create and send a MailChimp VIP newsletter campaign."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name."
- name: subject
in: body
type: string
description: "The email subject line."
- name: template_id
in: body
type: string
description: "The email template ID."
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
list_id: "vip-insiders"
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
Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
naftiko: "0.5"
info:
label: "Manufacturing Efficiency Pipeline"
description: "Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack."
tags:
- manufacturing
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing-efficiency-pipeline
port: 8080
tools:
- name: execute
description: "Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant 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: "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 a production run completes, retrieves mold quality data from SAP, analyzes defect rates in Azure Databricks, stores the report in SharePoint, and notifies the quality team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Manufacturing Mold Quality Pipeline"
description: "When a production run completes, retrieves mold quality data from SAP, analyzes defect rates in Azure Databricks, stores the report in SharePoint, and notifies the quality team via Microsoft Teams."
tags:
- manufacturing
- quality-control
- sap
- azure-databricks
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mold-quality
port: 8080
tools:
- name: analyze-mold-quality
description: "Given a production run ID, analyze mold quality metrics and notify the team."
inputParameters:
- name: production_run_id
in: body
type: string
description: "The SAP production run identifier."
- name: plant_code
in: body
type: string
description: "The manufacturing plant code."
steps:
- name: get-quality-data
type: call
call: "sap.get-production-quality"
with:
run_id: "{{production_run_id}}"
plant: "{{plant_code}}"
- name: analyze-defects
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM mold_defect_analysis WHERE run_id = '{{production_run_id}}'"
- name: store-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "quality-docs"
folder_path: "MoldQuality/{{plant_code}}/{{production_run_id}}"
file_name: "quality_report.pdf"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "quality-assurance"
text: "Mold quality report for run {{production_run_id}} at {{plant_code}}: Defect rate: {{analyze-defects.defect_rate}}%. Top defect: {{analyze-defects.top_defect}}. Report: {{store-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: quality
path: "/ProductionQuality(RunId='{{run_id}}',Plant='{{plant}}')"
inputParameters:
- name: run_id
in: path
- name: plant
in: path
operations:
- name: get-production-quality
method: GET
- type: http
namespace: databricks
baseUri: "https://lego-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
Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake.
naftiko: "0.5"
info:
label: "Minifigure Collector Program Pipeline"
description: "Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake."
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: minifigure-collector
port: 8080
tools:
- name: execute
description: "Orchestrate minifigure collector program across Salesforce, Stripe, MailChimp, and Snowflake."
inputParameters:
- name: input_id
in: body
type: string
description: "The collector email."
- name: context
in: body
type: string
description: "Additional context."
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
Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
naftiko: "0.5"
info:
label: "Mold Maintenance Scheduling Pipeline"
description: "Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets."
tags:
- manufacturing
- sap
- servicenow
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: mold-maintenance-scheduling-pipeline
port: 8080
tools:
- name: execute
description: "Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates 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: "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
Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
naftiko: "0.5"
info:
label: "New Hire Provisioning Pipeline"
description: "Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook."
tags:
- it
- workday
- azure-active-directory
- servicenow
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: new-hire-provisioning-pipeline
port: 8080
tools:
- name: execute
description: "Gets employee from Workday, provisions Azure AD, creates ServiceNow request, 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: "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: "microsoft-outlook.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: 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
Retrieves e-commerce platform health from New Relic.
naftiko: "0.5"
info:
label: "New Relic E-Commerce Health Lookup"
description: "Retrieves e-commerce platform health from New Relic."
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-ecom
port: 8080
tools:
- name: get-data
description: "Retrieves e-commerce platform health from New Relic."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "newrelic-ecom.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: newrelic-ecom
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
When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams.
naftiko: "0.5"
info:
label: "New Set Launch Pipeline"
description: "When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams."
tags:
- product-design
- e-commerce
- sap
- salesforce
- google-tag-manager
- bigcommerce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-new-set
description: "Given set details, create product master, marketing campaign, e-commerce listing, and notify the team."
inputParameters:
- name: set_name
in: body
type: string
description: "The LEGO set name."
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: theme
in: body
type: string
description: "The product theme (e.g., Star Wars, City, Technic)."
- name: launch_date
in: body
type: string
description: "The launch date in YYYY-MM-DD format."
- name: retail_price
in: body
type: string
description: "The retail price."
steps:
- name: create-master
type: call
call: "sap.create-material"
with:
material_number: "{{material_number}}"
description: "{{set_name}}"
theme: "{{theme}}"
price: "{{retail_price}}"
- name: create-campaign
type: call
call: "salesforce.create-campaign"
with:
name: "Launch: {{set_name}}"
theme: "{{theme}}"
start_date: "{{launch_date}}"
- name: setup-tracking
type: call
call: "gtm.create-tag"
with:
tag_name: "{{set_name}}_launch"
product_id: "{{material_number}}"
- name: create-listing
type: call
call: "bigcommerce.create-product"
with:
name: "{{set_name}}"
sku: "{{material_number}}"
price: "{{retail_price}}"
categories: "{{theme}}"
- name: announce
type: call
call: "msteams.send-message"
with:
channel_id: "product-launches"
text: "New set launch: {{set_name}} ({{theme}}) on {{launch_date}}. Price: ${{retail_price}}. SAP: {{material_number}}. E-commerce listing: {{create-listing.product_url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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://lego.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: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v3"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: products
path: "/catalog/products"
operations:
- name: create-product
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 product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
naftiko: "0.5"
info:
label: "New Set Retail Distribution Pipeline"
description: "Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram."
tags:
- product
- sap
- bigcommerce
- salesforce
- instagram
capability:
exposes:
- type: mcp
namespace: new-set-retail-distribution-pipeline
port: 8080
tools:
- name: execute
description: "Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram."
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: "bigcommerce.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: "instagram.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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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: instagram
baseUri: "https://api.instagram.com/v1"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
naftiko: "0.5"
info:
label: "Packaging Review Pipeline"
description: "Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata."
tags:
- packaging
- figma
- asana
- box
- sap
capability:
exposes:
- type: mcp
namespace: packaging-review-pipeline
port: 8080
tools:
- name: execute
description: "Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata."
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: "figma.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "asana.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: "sap.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- 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: 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: 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: sap
baseUri: "https://api.sap.com/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "Patent Coordination Pipeline"
description: "Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams."
tags:
- legal
- salesforce
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: patent-coordination-pipeline
port: 8080
tools:
- name: execute
description: "Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, 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: "sharepoint.execute-step-2"
with:
data: "{{step-1.result}}"
- name: step-3
type: call
call: "jira.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: 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: 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-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 manufacturing 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 manufacturing 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 plant code."
- name: issue_description
in: body
type: string
description: "Description of the maintenance issue."
- name: priority
in: body
type: string
description: "Priority level."
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}}"
priority: "{{priority}}"
description: "{{issue_description}}. SAP order: {{create-order.order_number}}."
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "plant-maintenance"
text: "Maintenance order for {{equipment_id}} at {{plant_code}}. Priority: {{priority}}. SAP: {{create-order.order_number}}. ServiceNow: {{assign-technician.number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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://lego.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
Triggers a refresh of the global sales Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Sales Dashboard Refresh"
description: "Triggers a refresh of the global sales Power BI dataset."
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 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
Retrieves Power BI sales KPI dashboard refresh status.
naftiko: "0.5"
info:
label: "Power BI Sales KPI Report"
description: "Retrieves Power BI sales KPI dashboard refresh status."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi-sales
port: 8080
tools:
- name: get-data
description: "Retrieves Power BI sales KPI dashboard refresh status."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "powerbi-sales.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: powerbi-sales
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
Retrieves product details from SAP by material number, including set name, piece count, recommended age, and retail price.
naftiko: "0.5"
info:
label: "Product Catalog Lookup"
description: "Retrieves product details from SAP by material number, including set name, piece count, recommended age, and retail price."
tags:
- product-design
- retail
- sap
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-product-details
description: "Look up a LEGO product 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: set_name
type: string
mapping: "$.d.MaterialDescription"
- name: piece_count
type: string
mapping: "$.d.PieceCount"
- name: recommended_age
type: string
mapping: "$.d.RecommendedAge"
- name: retail_price
type: string
mapping: "$.d.StandardPrice"
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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
Creates Asana task, uploads to Google Drive, publishes to BigCommerce, and tracks in Airtable.
naftiko: "0.5"
info:
label: "Product Photography Pipeline"
description: "Creates Asana task, uploads to Google Drive, publishes to BigCommerce, and tracks in Airtable."
tags:
- creative
- asana
- google-drive
- bigcommerce
- airtable
capability:
exposes:
- type: mcp
namespace: product-photography-pipeline
port: 8080
tools:
- name: execute
description: "Creates Asana task, uploads to Google Drive, publishes to BigCommerce, 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: "bigcommerce.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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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
Retrieves Qlik Sense inventory analytics dashboard status.
naftiko: "0.5"
info:
label: "Qlik Sense Inventory Analytics"
description: "Retrieves Qlik Sense inventory analytics dashboard status."
tags:
- analytics
- qlik-sense
capability:
exposes:
- type: mcp
namespace: qlik-inventory
port: 8080
tools:
- name: get-data
description: "Retrieves Qlik Sense inventory analytics dashboard status."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "qlik-inventory.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: qlik-inventory
baseUri: "https://lego.qlikcloud.com/api/v1"
authentication:
type: bearer
token: "$secrets.qlik_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
When a retail partner places a bulk order in Salesforce, creates a sales order in SAP, checks warehouse availability, and confirms with the partner via Microsoft Teams.
naftiko: "0.5"
info:
label: "Retail Partner Order Pipeline"
description: "When a retail partner places a bulk order in Salesforce, creates a sales order in SAP, checks warehouse availability, and confirms with the partner via Microsoft Teams."
tags:
- retail
- supply-chain
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-orders
port: 8080
tools:
- name: process-retail-order
description: "Given a retail order, create SAP sales order, check availability, and confirm."
inputParameters:
- name: order_id
in: body
type: string
description: "The Salesforce order record ID."
- name: partner_email
in: body
type: string
description: "The retail partner contact email."
steps:
- name: get-order
type: call
call: "salesforce.get-order"
with:
order_id: "{{order_id}}"
- name: create-sales-order
type: call
call: "sap.create-sales-order"
with:
partner_id: "{{get-order.account_id}}"
items: "{{get-order.line_items}}"
- name: check-availability
type: call
call: "sap.check-atp"
with:
sales_order: "{{create-sales-order.order_number}}"
- name: confirm-partner
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{partner_email}}"
text: "Order {{order_id}} confirmed. SAP order: {{create-sales-order.order_number}}. Estimated delivery: {{check-availability.confirmed_date}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://lego.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: orders
path: "/sobjects/Order/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder"
operations:
- name: create-sales-order
method: POST
- name: atp
path: "/A_SalesOrder('{{sales_order}}')/ATP"
inputParameters:
- name: sales_order
in: path
operations:
- name: check-atp
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Collects shelf data, stores in Snowflake, updates Tableau, and notifies sales via Microsoft Teams.
naftiko: "0.5"
info:
label: "Retail Shelf Analytics Pipeline"
description: "Collects shelf data, stores in Snowflake, updates Tableau, and notifies sales via Microsoft Teams."
tags:
- retail
- snowflake
- tableau
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-shelf-analytics-pipeline
port: 8080
tools:
- name: execute
description: "Collects shelf data, stores in Snowflake, updates Tableau, 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: "snowflake.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "tableau.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: 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: 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 Salesforce retailer account details by ID.
naftiko: "0.5"
info:
label: "Salesforce Retailer Account Lookup"
description: "Retrieves Salesforce retailer account details by ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-retailers
port: 8080
tools:
- name: get-data
description: "Retrieves Salesforce retailer account details by ID."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sf-retailers.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sf-retailers
baseUri: "https://lego.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 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."
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"
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 brick inventory levels from SAP by material number.
naftiko: "0.5"
info:
label: "SAP Material Inventory Lookup"
description: "Retrieves brick inventory levels from SAP by material number."
tags:
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: sap-inventory
port: 8080
tools:
- name: get-data
description: "Retrieves brick inventory levels from SAP by material number."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sap-inventory.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sap-inventory
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves production order details from SAP for brick manufacturing.
naftiko: "0.5"
info:
label: "SAP Production Order Lookup"
description: "Retrieves production order details from SAP for brick manufacturing."
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: sap-prodorders
port: 8080
tools:
- name: get-data
description: "Retrieves production order details from SAP for brick manufacturing."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sap-prodorders.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sap-prodorders
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/ZPRODORDER_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.
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."
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"
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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
Retrieves quality inspection results from SAP for brick batches.
naftiko: "0.5"
info:
label: "SAP Quality Inspection Lookup"
description: "Retrieves quality inspection results from SAP for brick batches."
tags:
- quality
- sap
capability:
exposes:
- type: mcp
namespace: sap-quality
port: 8080
tools:
- name: get-data
description: "Retrieves quality inspection results from SAP for brick batches."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "sap-quality.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: sap-quality
baseUri: "https://lego-s4.sap.com/sap/opu/odata/sap/ZQUALITY_SRV"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
naftiko: "0.5"
info:
label: "Seasonal Promotion Pipeline"
description: "Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets."
tags:
- promotions
- sap
- bigcommerce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: seasonal-promotion-pipeline
port: 8080
tools:
- name: execute
description: "Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, 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: "sap.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "bigcommerce.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: 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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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
Detects via Dynatrace, creates Jira tickets, alerts via Slack, and triggers Azure DevOps patches.
naftiko: "0.5"
info:
label: "Security Vulnerability Pipeline"
description: "Detects via Dynatrace, creates Jira tickets, alerts 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 via Dynatrace, creates Jira tickets, alerts 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 from Google Search Console, updates BigCommerce, and reports via Google Sheets.
naftiko: "0.5"
info:
label: "SEO Optimization Pipeline"
description: "Pulls from Google Search Console, updates BigCommerce, and reports via Google Sheets."
tags:
- seo
- google-search-console
- bigcommerce
- google-sheets
capability:
exposes:
- type: mcp
namespace: seo-optimization-pipeline
port: 8080
tools:
- name: execute
description: "Pulls from Google Search Console, updates BigCommerce, 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: "bigcommerce.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: bigcommerce
baseUri: "https://api.bigcommerce.com/v1"
authentication:
type: bearer
token: "$secrets.bigcommerce_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, and assigned group.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns priority, status, and assigned group."
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://lego.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
Sends a message to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Channel Message Sender"
description: "Sends a message to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: slack-msg
port: 8080
tools:
- name: get-data
description: "Sends a message to a Slack channel."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "slack-msg.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: slack-msg
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 LEGO set sales data from Snowflake.
naftiko: "0.5"
info:
label: "Snowflake Set Sales Query"
description: "Queries aggregated LEGO set sales data from Snowflake."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: get-data
description: "Queries aggregated LEGO set sales data from Snowflake."
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://lego.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
Launches a marketing campaign across Instagram and Facebook, tracks performance in Google Analytics, and shares results with the marketing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Social Media Campaign Pipeline"
description: "Launches a marketing campaign across Instagram and Facebook, tracks performance in Google Analytics, and shares results with the marketing team via Microsoft Teams."
tags:
- marketing
- social-media
- instagram
- facebook
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-campaigns
port: 8080
tools:
- name: launch-social-campaign
description: "Given campaign details, publish to social platforms, set up tracking, and report results."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The campaign name."
- name: theme
in: body
type: string
description: "The LEGO theme for the campaign."
- name: content_text
in: body
type: string
description: "The post content."
steps:
- name: post-instagram
type: call
call: "instagram.create-post"
with:
caption: "{{content_text}}"
campaign: "{{campaign_name}}"
- name: post-facebook
type: call
call: "facebook.create-post"
with:
message: "{{content_text}}"
campaign: "{{campaign_name}}"
- name: get-metrics
type: call
call: "google-analytics.get-report"
with:
property_id: "lego-dotcom"
campaign: "{{campaign_name}}"
- name: share-results
type: call
call: "msteams.send-message"
with:
channel_id: "marketing"
text: "Social campaign {{campaign_name}} ({{theme}}) launched. Instagram post: {{post-instagram.post_id}}. Facebook post: {{post-facebook.post_id}}."
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.meta_token"
resources:
- name: posts
path: "/{{ig_user_id}}/media"
operations:
- name: create-post
method: POST
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.meta_token"
resources:
- name: posts
path: "/{{page_id}}/feed"
operations:
- name: create-post
method: POST
- 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: 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 Stripe payment for LEGO online store orders.
naftiko: "0.5"
info:
label: "Stripe E-Commerce Payment Lookup"
description: "Retrieves a Stripe payment for LEGO online store orders."
tags:
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: stripe-payments
port: 8080
tools:
- name: get-data
description: "Retrieves a Stripe payment for LEGO online store 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
Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Supplier Performance Pipeline"
description: "Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes via Microsoft Outlook."
tags:
- procurement
- sap
- snowflake
- google-sheets
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: supplier-performance-pipeline
port: 8080
tools:
- name: execute
description: "Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes 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: "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-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: 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-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
Extracts sustainability data from SAP, calculates environmental metrics 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 data from SAP, calculates environmental metrics in Azure Databricks, stores the report in SharePoint, and notifies the ESG team via Microsoft Teams."
tags:
- sustainability
- 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 data, calculate metrics, and distribute the report."
inputParameters:
- name: reporting_period
in: body
type: string
description: "The reporting period."
steps:
- name: extract-data
type: call
call: "sap.get-sustainability-data"
with:
period: "{{reporting_period}}"
- name: calculate-metrics
type: call
call: "databricks.run-query"
with:
query: "SELECT * FROM sustainability_metrics('{{reporting_period}}')"
- name: store-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "esg-reports"
folder_path: "Sustainability/{{reporting_period}}"
file_name: "sustainability_report.pdf"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "sustainability"
text: "Sustainability report for {{reporting_period}}: Renewable energy: {{calculate-metrics.renewable_pct}}%. Waste recycled: {{calculate-metrics.recycled_pct}}%. Report: {{store-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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}}'"
inputParameters:
- name: period
in: query
operations:
- name: get-sustainability-data
method: GET
- type: http
namespace: databricks
baseUri: "https://lego-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 Tableau retail analytics dashboard view.
naftiko: "0.5"
info:
label: "Tableau Retail Analytics Lookup"
description: "Retrieves Tableau retail analytics dashboard view."
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: tableau-retail
port: 8080
tools:
- name: get-data
description: "Retrieves Tableau retail analytics dashboard view."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "tableau-retail.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: tableau-retail
baseUri: "https://tableau.lego.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: data
path: "/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a Tableau dashboard embed URL for retail performance analytics.
naftiko: "0.5"
info:
label: "Tableau Retail Performance Dashboard"
description: "Retrieves a Tableau dashboard embed URL for retail performance analytics."
tags:
- analytics
- retail
- tableau
capability:
exposes:
- type: mcp
namespace: retail-dashboards
port: 8080
tools:
- name: get-retail-dashboard
description: "Retrieve the embed URL for a Tableau retail performance 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"
consumes:
- type: http
namespace: tableau
baseUri: "https://lego-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 to Workday, schedules via Zoom, and notifies via Slack.
naftiko: "0.5"
info:
label: "Talent Acquisition Pipeline"
description: "Posts jobs to LinkedIn, syncs to Workday, schedules via Zoom, and notifies 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 to Workday, schedules via Zoom, and notifies 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 retail partner performance data from Teradata.
naftiko: "0.5"
info:
label: "Teradata Retail Data Query"
description: "Queries retail partner performance data from Teradata."
tags:
- analytics
- teradata
capability:
exposes:
- type: mcp
namespace: teradata-retail
port: 8080
tools:
- name: get-data
description: "Queries retail partner performance data from Teradata."
inputParameters:
- name: query_id
in: body
type: string
description: "The lookup identifier."
call: "teradata-retail.get-data"
with:
id: "{{query_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
consumes:
- type: http
namespace: teradata-retail
baseUri: "https://lego.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
Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
naftiko: "0.5"
info:
label: "Theme Park Integration Pipeline"
description: "Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics."
tags:
- entertainment
- sap
- salesforce
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: theme-park-integration-pipeline
port: 8080
tools:
- name: execute
description: "Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics."
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: "instagram.execute-step-3"
with:
data: "{{step-2.result}}"
- name: step-4
type: call
call: "google-analytics.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: 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: 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
Pulls from Pluralsight, syncs with Workday, reports in Google Sheets, and alerts via Slack.
naftiko: "0.5"
info:
label: "Training Compliance Pipeline"
description: "Pulls from Pluralsight, syncs with Workday, reports in Google Sheets, and alerts via Slack."
tags:
- training
- pluralsight
- workday
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: training-compliance-pipeline
port: 8080
tools:
- name: execute
description: "Pulls from Pluralsight, syncs with Workday, reports in Google Sheets, and alerts 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
Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
naftiko: "0.5"
info:
label: "Vendor Invoice Pipeline"
description: "Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets."
tags:
- finance
- sap
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: vendor-invoice-pipeline
port: 8080
tools:
- name: execute
description: "Matches SAP invoices, validates Salesforce contracts, 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
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."
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:
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}} for PO {{po_number}}. Amount: ${{amount}}. Vendor: {{validate-po.Supplier.CompanyName}}. Approval routed."
consumes:
- type: http
namespace: sap
baseUri: "https://lego-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
Creates vendor in SAP, sets up folder in Box, creates Salesforce account, and sends welcome via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Vendor Onboarding Pipeline"
description: "Creates vendor in SAP, sets up folder in Box, creates Salesforce account, and sends welcome via Microsoft Outlook."
tags:
- procurement
- sap
- box
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: vendor-onboarding-pipeline
port: 8080
tools:
- name: execute
description: "Creates vendor in SAP, sets up folder in Box, creates Salesforce account, 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: "box.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: "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: 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: 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: 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
Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
naftiko: "0.5"
info:
label: "VIP Collector Engagement Pipeline"
description: "Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets."
tags:
- loyalty
- snowflake
- salesforce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: vip-collector-engagement-pipeline
port: 8080
tools:
- name: execute
description: "Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, 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: "snowflake.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: "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: 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: 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
- 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 SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
naftiko: "0.5"
info:
label: "Warehouse Optimization Pipeline"
description: "Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack."
tags:
- logistics
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: warehouse-optimization-pipeline
port: 8080
tools:
- name: execute
description: "Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts 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
Aggregates from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.
naftiko: "0.5"
info:
label: "Weekly Sales Digest Pipeline"
description: "Aggregates 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 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 Employee Benefits 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/lego"
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 email.
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 email."
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"
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
Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics.
naftiko: "0.5"
info:
label: "YouTube Brand Content Publishing Pipeline"
description: "Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics."
tags:
- marketing
- youtube
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: video-marketing
port: 8080
tools:
- name: publish-video-campaign
description: "Given video details, publish to YouTube, cross-promote on Instagram, and set up tracking."
inputParameters:
- name: video_title
in: body
type: string
description: "The video title."
- name: description
in: body
type: string
description: "The video description."
- name: theme
in: body
type: string
description: "The LEGO theme."
steps:
- name: upload-video
type: call
call: "youtube.upload-video"
with:
title: "{{video_title}}"
description: "{{description}}"
tags: "LEGO,{{theme}}"
- name: cross-promote
type: call
call: "instagram.create-post"
with:
caption: "New video: {{video_title}}! Watch now on our YouTube channel. #LEGO #{{theme}}"
- name: setup-tracking
type: call
call: "google-analytics.create-event"
with:
event_name: "video_launch_{{theme}}"
video_id: "{{upload-video.video_id}}"
consumes:
- type: http
namespace: youtube
baseUri: "https://www.googleapis.com/youtube/v3"
authentication:
type: bearer
token: "$secrets.youtube_token"
resources:
- name: videos
path: "/videos?part=snippet,status"
operations:
- name: upload-video
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.meta_token"
resources:
- name: posts
path: "/{{ig_user_id}}/media"
operations:
- name: create-post
method: POST
- type: http
namespace: google-analytics
baseUri: "https://www.google-analytics.com"
authentication:
type: apikey
key: "$secrets.ga_measurement_id"
resources:
- name: events
path: "/mp/collect"
operations:
- name: create-event
method: POST
Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, and notifies via Microsoft Teams.
naftiko: "0.5"
info:
label: "YouTube Content Pipeline"
description: "Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, and notifies via Microsoft Teams."
tags:
- content
- youtube
- hubspot
- airtable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: youtube-content-pipeline
port: 8080
tools:
- name: execute
description: "Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, 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: "youtube.execute-step-1"
with:
input: "{{input_id}}"
context: "{{context}}"
- name: step-2
type: call
call: "hubspot.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: "microsoft-teams.execute-step-4"
with:
data: "{{step-3.result}}"
id: "{{input_id}}"
consumes:
- type: http
namespace: youtube
baseUri: "https://api.youtube.com/v1"
authentication:
type: bearer
token: "$secrets.youtube_token"
resources:
- name: resources
path: "/{{id}}"
operations:
- name: execute
method: POST
- 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: 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: 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 a Zendesk support ticket by ID.
naftiko: "0.5"
info:
label: "Zendesk Customer Support Ticket Lookup"
description: "Retrieves a Zendesk support ticket by ID."
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: customer-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://lego.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