Lego Capabilities

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

Sort
Expand

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